Katalog CVE

CVE-2026-78048

Niskie ryzyko· EPSS 15%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.24%

Percentyl 15 - wyżej niż 15% wszystkich znanych CVE

Streszczenie

Podatność w dekoderze kompresji nagłówków HPACK w stosie HTTP/2 (h2/gRPC) Apache bRPC w wersji < 1.18.0 pozwala zdalnemu atakującemu wywołać awarię procesu serwera poprzez wysłanie spreparowanej sekwencji nagłówków HPACK. Błąd polega na błędnym rozmiarze bufora pierścieniowego tabeli dynamicznej (34 zamiast 33 bajtów na wpis), co prowadzi do przepełnienia i przerwania CHECK, skutkując odmową usługi.

Ocena ryzyka

Organizacja narażona jest na ataki typu denial of service wymierzone w serwery bRPC obsługujące HTTP/2 lub gRPC z niezaufanych sieci, co może prowadzić do niedostępności usług i przerw w działaniu aplikacji.

Rekomendacja

Należy zaktualizować Apache bRPC do wersji 1.18.0 lub zastosować poprawkę z https://github.com/apache/brpc/pull/3462, a do czasu wdrożenia ograniczyć dostęp do serwerów HTTP/2/gRPC wyłącznie do zaufanych sieci.

Inne podatności w Apache bRPC

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

A reachable-assertion flaw in the HPACK header-compression decoder of the HTTP/2 (h2/gRPC) stack in Apache bRPC (version < 1.18.0) on all platforms allows a remote attacker to crash the server process by sending a crafted sequence of HPACK headers, resulting in a denial of service. Root Cause: In src/brpc/details/hpack.cpp, IndexTable::Init sizes the dynamic-table ring buffer as num_headers = max_size / (32 + 2), i.e. it assumes a minimum table entry of 34 bytes (name >= 1 byte + value >= 1 byte + 32 bytes of overhead). However, RFC 7541 section 4.1 specifies that the minimum entry size is 33 bytes, because the value may be empty (name >= 1 byte + value == 0 + 32 bytes). For the default 4096-byte table this allocates only 120 slots (4096/34). Eviction in AddHeader is driven by byte usage (_max_size), not by slot count, so a peer can add 121 minimal 33-byte entries (121*33 = 3993 <= 4096) without triggering eviction. The 121st AddHeader then hits CHECK(!_header_queue.full()), which aborts the process. Affected Scenarios: Use a bRPC server that serves HTTP/2 or gRPC requests (e.g. via the h2 protocol) from an untrusted network. The malicious header block is processed during HPACK decoding of incoming requests without authentication. How to Fix: (Choose one of the following options)  1. Upgrade bRPC to version 1.18.0, which fixes this issue. 2. Apply this patch: https://github.com/apache/brpc/pull/3462 Note: The fix sizes the dynamic table for the 33-byte minimum entry (max_size / (32 + 1)) and ensures at least one ring-buffer slot is kept when max_size is smaller than the minimum entry, so that initialization cannot fail on malloc(0).

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS