Odebrany

CVE-2026-78048

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

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

Błąd osiągalnej asercji w dekoderze kompresji nagłówka HPACK stosu HTTP/2 (h2/gRPC) w Apache bRPC (wersja < 1.18.0) na wszystkich platformach umożliwia zdalnemu atakującemu zawieszenie procesu serwera poprzez wysłanie spreparowanej sekwencji nagłówków HPACK, co skutkuje odmową usługi.

Główna przyczyna:
W pliku src/brpc/details/hpack.cpp IndexTable::Init ustala rozmiar bufora pierścieniowego tabeli dynamicznej jako num_headers = max_size / (32 + 2), tj. zakłada, że minimalny wpis w tabeli wynosi 34 bajty (nazwa >= 1 bajt + wartość >= 1 bajt + 32 bajty narzutu). Jednakże RFC 7541 sekcja 4.1 określa, że ​​minimalny rozmiar wpisu wynosi 33 bajty, ponieważ wartość może być pusta (nazwa >= 1 bajt + wartość == 0 + 32 bajty). Dla domyślnej tabeli 4096-bajtowej przydziela to tylko 120 miejsc (4096/34). Wykluczenie w AddHeader jest zależne od użycia bajtów (_max_size), a nie od liczby slotów, więc partner może dodać 121 minimalnych 33-bajtowych wpisów (121*33 = 3993 <= 4096) bez wyzwalania eksmisji. Następnie 121. AddHeader uderza CHECK(!_header_queue.full()), co przerywa proces.

Dotknięte scenariusze:
Użyj serwera bRPC, który obsługuje żądania HTTP/2 lub gRPC (np. poprzez protokół h2) z niezaufanej sieci. Złośliwy blok nagłówka jest przetwarzany podczas dekodowania HPACK przychodzących żądań bez uwierzytelniania.

Jak naprawić:
(Wybierz jedną z poniższych opcji) 
1. Zaktualizuj bRPC do wersji 1.18.0, która rozwiązuje ten problem.
2. Zastosuj tę poprawkę: https://github.com/apache/brpc/pull/3462

Uwaga:
Poprawka dopasowuje tabelę dynamiczną do minimalnego 33-bajtowego wpisu (max_size / (32 + 1)) i zapewnia, że co najmniej jedna szczelina bufora pierścieniowego jest zachowywana, gdy max_size jest mniejsza niż minimalna pozycja, tak że inicjalizacja nie może zakończyć się niepowodzeniem na malloc(0).

>_ 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