GHSA-74m8-q5wc-qpjc
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed bRPC h2/gRPC port
-
DeliverySend HEADERS block with 121 minimal 33-byte entries
-
ExploitFill 120-slot HPACK ring buffer without eviction
-
ExecutionTrigger CHECK(!_header_queue.full()) abort
-
ImpactCrash server (denial of service)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a bRPC server older than 1.18.0 that serves HTTP/2 (the h2 protocol) or gRPC and is reachable from an untrusted network; the h2 HPACK decoder runs on the shared port before any Authenticator check, so no credentials, user interaction, or non-default configuration are needed - the 4096-byte default dynamic table is itself the vulnerable condition. Exploitation is limited only by whether the h2/gRPC listener is exposed to attacker traffic and by the server version (<=1.17.0); servers not speaking h2/gRPC or already on 1.18.0 are not affected. |
| Impact | No CVSS vector, EPSS score, KEV listing, or POC reference is present in the input, so this assessment relies entirely on the Apache oss-security advisory text. Based on that text the flaw is a remote, unauthenticated denial of service: a peer serving HTTP/2 (h2) or gRPC to a bRPC server (<1.18.0) can add 121 minimal 33-byte HPACK dynamic-table entries (121*33=3993 <= the 4096 byte cap) without triggering byte-driven eviction, so the 121st AddHeader hits CHECK(!_header_queue.full()) and aborts the process. My independently assessed vector is AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (CVSS 3.1 base ~7.5, High) - availability-only, no data exposure or code execution. This is a genuine priority for anyone exposing bRPC h2/gRPC ports to untrusted networks because the parser runs before any authentication and the condition is deterministic and trivial to trigger, but the impact ceiling is a crash (process abort / restart loop), not compromise. No EPSS/KEV data means widespread active exploitation cannot be confirmed; exploitation status is best treated as no public exploit identified at time of analysis. Note the advisory bundles 35 bRPC fixes and the lead item's embedded reference points at CVE-2026-78048 rather than this ID (CVE-2026-81755) - verify the exact ID-to-defect mapping with the Apache advisory. |
| Exploit ScenarioDerived | An attacker who can reach a bRPC server's port serving HTTP/2 or gRPC sends a single crafted HEADERS block containing 121 minimal 33-byte HPACK entries. These fit under the 4096-byte table cap so byte-based eviction never fires, but the fixed 120-slot ring buffer fills and the 121st AddHeader trips a CHECK that aborts the process, crashing the server without any authentication. No public exploit code is referenced, but the trigger is deterministic and requires only a hand-crafted header block. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Remote denial of service in Apache bRPC through 1.17.0 allows an unauthenticated HTTP/2 or gRPC peer to abort the server process by sending a header block that compresses into 121 minimal 33-byte HPACK entries. Because the default 4096-byte dynamic table evicts based on byte usage (121 x 33 = 3993 bytes, still under the cap) while its ring buffer is sized for only 120 slots, the 121st AddHeader trips CHECK(!_header_queue.full()) and terminates the process. No public exploit code or CISA KEV listing was identified at time of analysis, but the h2 HPACK decoder runs on the shared server port before any Authenticator check, so every reachable h2/gRPC listener on an affected version is exposed without credentials or user interaction.
RemediationAI
Vendor-released patch: upgrade Apache bRPC to 1.18.0, which sizes the HPACK dynamic table for the 33-byte minimum entry (max_size / (32 + 1)) and preserves at least one ring-buffer slot when max_size is below the minimum entry so initialization cannot fail on malloc(0); this release also bundles the other fixes from the same 35-vulnerability advisory (including CVE-2026-78058, CVE-2026-78066 and CVE-2026-78334), so upgrading resolves the whole cluster rather than this assertion alone. If an immediate upgrade is not possible, apply the upstream fix at https://github.com/apache/brpc/pull/3462, which is not a tagged release and therefore requires carrying a patched build. Compensating controls, in order of preference: terminate h2/gRPC traffic at a front-end proxy that enforces a hard cap on decoded header-list size and per-connection concurrent streams before forwarding to bRPC (trade-off: added hop latency and configuration that must be kept in sync with bRPC's own limits); restrict the h2/gRPC listener to trusted networks or a service mesh with strict mTLS peer identity (trade-off: does not protect against an attacker with an authorized peer identity, and note that bRPC's own Authenticator cannot help because parsing occurs before authentication); or disable h2/gRPC on exposed ports and serve only bRPC's non-h2 protocols where the client population permits (trade-off: breaks existing gRPC and HTTP/2 clients). Because abnormal termination is the impact, ensure the bRPC process runs under a supervisor with restart and crash-loop alerting, and monitor for repeated connection resets and process exits originating from a single peer.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The issue lives in the HPACK header-compression decoder (RFC 7541) used by bRPC's HTTP/2 'h2' parser, which is enabled by default on every bRPC server port and also serves gRPC traffic. HPACK entries carry a fixed 32-byte per-entry accounting overhead, so the smallest possible entry is 33 bytes (1-byte name index plus an empty value). bRPC sizes its dynamic-table ring buffer assuming 34-byte entries, yielding 120 slots for the default 4096-byte table, but eviction in AddHeader is driven by byte consumption (_max_size) rather than slot occupancy. A peer can therefore insert 121 entries totalling 3993 bytes without ever triggering a byte-based eviction, and the 121st insertion reaches a CHECK(!_header_queue.full()) assertion that aborts the process. This is an accounting mismatch between two capacity models rather than a memory-safety bug, aligning with resource-exhaustion (CWE-770) and reachable-assertion (CWE-617) patterns; the same h2 parser surface carries related defects fixed in the same release, including an unenforced SETTINGS_MAX_HEADER_LIST_SIZE, unlimited concurrent streams, and validation of dynamic-table size updates against the protocol default instead of the advertised SETTINGS_HEADER_TABLE_SIZE.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
Remote h2 parser runs pre-auth so AV:N/PR:N/UI:N; a single deterministic header block triggers the abort giving AC:L; impact is a process crash only, hence A:H with C:N/I:N.
Estimated by vuln.today — no official severity rating has been published for this CVE yet.
Lifecycle Timeline
2Description PRE-NVD
Executive ViewAI
Apache bRPC, the RPC framework behind many internal service-to-service and gRPC endpoints, can be forced to abort its server process on all versions through 1.17.0 by a single small crafted request, and no vendor fix is currently available. The crash happens during header decoding on the shared listener before any credential check, so any team exposing bRPC-based services to partners, tenants, or the public internet can have those services taken offline repeatedly. Leadership should care because the failure is a full process termination that is cheap to repeat, turning a framework-level defect into sustained outages for every application that depends on the affected endpoint.
No vendor-released patch identified at time of analysis; interim mitigations are network allowlisting of every HTTP/2 and gRPC listener, fronting bRPC services with a proxy that terminates HTTP/2 and enforces strict inbound header limits, restricting untrusted exposure of affected versions, and alerting on server process aborts so crash-flood attempts are detected and rate-limited quickly.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
EUVD-2026-107189
CVE.org
EPSS
VulDB
Exploit-DB