Odebrany

CVE-2026-78058

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

Niekontrolowane zużycie zasobów w ścieżce odbiorczej HTTP/2 (h2) Apache bRPC (wersja < 1.18.0) na wszystkich platformach umożliwia zdalnemu nieuwierzytelnionemu atakującemu awarię serwera lub zwiększenie jego pamięci bez ograniczeń poprzez wysyłanie spreparowanych ramek HTTP/2.

Główna przyczyna:
Parser h2, domyślnie włączony na każdym porcie serwera bRPC i używany przez klientów h2/gRPC, ufa partnerowi, że przestrzega limitów po stronie odbioru, które bRPC reklamuje, ale nigdy nie wymusza:
1. SETTINGS_MAX_CONCURRENT_STREAMS domyślnie ustawione na nieograniczone i nigdy nie było sprawdzane na serwerze, pozwalając partnerowi na przypięcie nieograniczonej liczby oczekujących strumieni na połączenie (~100-krotne wzmocnienie pamięci).
2. SETTINGS_MAX_HEADER_LIST_SIZE domyślnie ustawione na nieograniczone i nigdy nie było egzekwowane; 1-bajtowe indeksowane odniesienia HPACK wzmacniają małą ramkę HEADERS ~ 4000x w nieograniczoną zdekodowaną listę nagłówków („bomba HPACK”), a nigdy nieukończony blok HEADERS/CONTINUATION gromadzi pamięć bez ograniczeń.
3. Potwierdzenia ramek kontrolnych (potwierdzenia PING/SETTINGS, RST_STREAM, GOAWAY, WINDOW_UPDATE) bezwarunkowo ominęły limit zapisu -socket_max_unwriting_bytes, więc zalew PING w połączeniu z wstrzymanymi odczytami TCP zwiększył bufor połączenia bez udokumentowanego ograniczenia.
4. Aktualizacja rozmiaru tabeli dynamicznej HPACK została sprawdzona względem domyślnego protokołu (4096) zamiast reklamowanego SETTINGS_HEADER_TABLE_SIZE, co w połączeniu z problemem kolejki/księgowania tabeli dynamicznej może spowodować desynchronizację dekodera i wyłuskanie wartości NULL (awaria).

Scenariusze, których to dotyczy:
Dowolny serwer bRPC obsługujący protokół HTTP/h2/gRPC do niezaufanej sieci i dowolny klient bRPC h2/gRPC łączący się z niezaufanym zapleczem. Analizator h2 jest uruchamiany przed jakimkolwiek sprawdzeniem uwierzytelnienia na porcie współdzielonym.

Jak naprawić:
Zaktualizuj bRPC lub zastosuj poprawkę w https://github.com/apache/brpc/pull/3474.

Uwaga:
Po zastosowaniu poprawki domyślnie obowiązują następujące limity:
- max_concurrent_streams: 1024 na połączenie (4294967295 przywraca nieograniczoną liczbę).
- max_header_list_size: 1 MiB zdekodowany rozmiar na strumień (4294967295 przywraca nieograniczoną; -h2_client_max_header_list_size dla klientów).
- ramka kontrolna h2 potwierdza respekt -socket_max_unwriting_bytes (-h2_ack_ignore_eovercrowded przywraca stare zachowanie).
Żądania przekraczające te limity są odrzucane (RST_STREAM(REFUSED_STREAM) lub błąd połączenia).

>_ Słabości (CWE)

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org