Remote denial of service in Apache bRPC HPACK header decoder
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CISA ADP. Fix status from CNA. Impact type from CWE-617.
Summary
Apache bRPC before 1.18.0 on all platforms has a reachable assertion in the HPACK header decoder of its HTTP/2 and gRPC stack (CWE-617). The dynamic table is sized for a 34-byte minimum entry, but RFC 7541 allows 33 bytes, so a peer can add more entries than there are slots. A remote attacker without authentication can crash the server process by sending a crafted sequence of HPACK headers.
Written with Claude Haiku 5.5 from the sources below · 2026-10-30
Description from the CNA
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).
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
Upgrade Apache bRPC to version 1.18.0, which fixes this issue. Alternatively, apply the patch from pull request 3462 in the Apache bRPC repository.
Written with Claude Haiku 5.5 from the sources below · 2026-10-30
- Fix · CNA Apache bRPC (Apache Software Foundation) Fixed in 1.18.0
Fixed in the same release
Records fixed by the same vendor advisory or release, as the CNA lists them.
- Advisory ·
Apache bRPC — lists.apache.org/thread/2pf15ojj0vr7rtx95677kgtl1mx3gdgb
35 records Highest priority Priority MEDIUM 18 MEDIUM, 17 LOW
Other records, highest priority first
- TI-2026-78552 Out-of-bounds write in Apache bRPC Redis command parserPriority MEDIUM 49
- TI-2026-78757 Authentication bypass in Apache bRPC servers using internal_portPriority MEDIUM 48
- TI-2026-78742 Missing authentication in Apache bRPC streaming RPC framesPriority MEDIUM 48
Timeline
- 2026-10-21 Threatist record created from CVE-2026-78048
- 2026-10-21 Alias added: GHSA-gjf5-p37j-frg4
- 2026-10-30 CVSS score added · CISA ADP
- 2026-10-30 CISA SSVC decision points changed
- 2026-10-31 EPSS moved to the 50th–90th percentile
- 2026-11-01 Priority changed: LOW → MEDIUM
References
More Apache vulnerabilities
- TI-2025-18529 Apache Tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT KEVCVSS 3.1CRITICAL 10.0
- TI-2024-30292 Apache OFBiz: Confused controller-view authorization logic (forced browsing) KEVCVSS 3.1CRITICAL 9.8
- TI-2024-26062 Apache OFBiz: Unauthenticated endpoint could allow execution of screen rendering code KEVCVSS 3.1CRITICAL 9.8
- TI-2024-21190 Apache OFBiz: Path traversal leading to RCE KEVCVSS 3.1CRITICAL 9.8
- TI-2024-18186 Apache HugeGraph-Server: Command execution in gremlin KEVCVSS 3.1CRITICAL 9.8
- TI-2023-25106 Deserialization of untrusted data in Apache ActiveMQ KEVCVSS 3.1CRITICAL 10.0
Sources
- CVE-2026-78048 · CVE Program
- CVE-2026-78048 · NVD
- FIRST EPSS
- GHSA-gjf5-p37j-frg4 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences