Skip to main content

Apache bRPC CVE-2026-86146

| EUVDEUVD-2026-107226 CRITICAL
HTTP Request/Response Smuggling (CWE-444)
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Connect to default h2/gRPC port
  2. Exploit
    Send 121 minimal 33-byte HPACK entries
  3. Impact
    Overflow header-queue slots, trigger CHECK abort

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
Exploitation Conditions

The target must be a bRPC server (version < 1.18.0) serving HTTP/2 or gRPC over the h2 protocol and reachable from an untrusted network. This is the default configuration - the h2 parser is enabled on every bRPC server port and HPACK decoding occurs before any Authenticator check, so no credentials or user interaction are required. The only practical limits are network reachability to an h2/gRPC listener and the server running an affected version (<= 1.17.0); the default 4096-byte HPACK dynamic table is precisely the vulnerable condition, and impact is bounded to a single-process crash rather than code execution or data disclosure.

Impact

No CVSS vector was supplied in the input (CVSS: N/A), so the following is an independent assessment. This is a remote denial-of-service: the description states a peer can add 121 minimal 33-byte HPACK entries without triggering byte-based eviction, causing the 121st AddHeader to hit CHECK(!_header_queue.full()) and abort the process. Grounding in the description, the attack is network-reachable, low-complexity (just send a crafted header block), needs no user interaction, and the h2 parser is enabled by default and runs before any Authenticator check - yielding a self-assessed CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (7.5, High). Impact is confined to availability (a clean CHECK abort/crash) with no confidentiality or integrity loss and no code execution, so this is a real priority for any deployment exposing h2/gRPC to untrusted networks but is a crash primitive, not a compromise. No EPSS score, no CISA KEV listing, and no public exploit were provided, so exploitation-likelihood signals are entirely absent; note the ease of triggering (trivial, pre-auth, default config) means a weaponized crash is plausible even though no exploitation evidence exists yet. CAVEAT: the provided description text bundles several distinct advisory entries (CVE-2026-78058, -78066, -78334) and its reference points to CVE-2026-78048 rather than CVE-2026-86146 - verify the precise affected-version range and identifier mapping against the upstream Apache advisory.

Exploit ScenarioDerived

An attacker reachable to a bRPC server's default h2/gRPC port opens an HTTP/2 connection and sends a HEADERS block containing 121 minimal 33-byte HPACK entries (121*33 = 3993 bytes, under the 4096-byte table cap so no eviction occurs). The 121st AddHeader exceeds the ~120 available ring-buffer slots and trips CHECK(!_header_queue.full()), aborting the server process. No exploit code was identified in the provided data; only the fixing patch (apache/brpc PR #3462) is referenced.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 21, 2026

Unauthenticated remote attackers can abort Apache bRPC 1.17.0 and earlier servers that expose HTTP/2 or gRPC (h2) listeners by sending a header block that fills the HPACK dynamic table's ring buffer without triggering byte-based eviction. The flaw is a slot-accounting mismatch in the HPACK decoder: the default 4096-byte table is provisioned for 34-byte entries, but 33-byte minimal entries permit 121 insertions before the fixed-size ring buffer overflows, tripping CHECK(!_header_queue.full()) and terminating the process. No public exploit code was identified at time of analysis; the independent assessment rates this CVSS 3.1 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H), availability-only, with exploitation requiring only network reachability to a default-configured h2/gRPC port because HPACK decoding occurs before any Authenticator check.

RemediationAI

Vendor-released patch: Apache bRPC 1.18.0 fixes this issue; upgrade to 1.18.0, which bundles 35 security fixes including the HPACK dynamic-table sizing correction, and also resolves the related high-severity issues CVE-2026-78058 (PR #3474) and CVE-2026-78066 (PR #3476). If an immediate upgrade is not possible, apply the upstream patch at https://github.com/apache/brpc/pull/3462, which sizes the 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). There is no vendor-supplied runtime flag that disables this specific defect; as a compensating control, restrict network access to h2/gRPC listeners with firewalls or security groups so only trusted clients can reach them (trade-off: reduces exposure but does not fix the defect for allowed peers), or terminate HTTP/2 at a front-end proxy that enforces strict per-connection header-list and dynamic-table limits (trade-off: adds latency and an architectural component, and may break end-to-end HTTP/2 semantics such as streaming or trailers). The 1.18.0 fix additionally enforces max_concurrent_streams (1024 per connection) and max_header_list_size (1 MiB decoded) defaults that raise the bar for related HTTP/2 abuse, but patching remains the primary remediation for CVE-2026-86146.

Affected VersionsENISA

Apache bRPC 0 <1.18.0

Affected Packages

euvd apache_brpc fix: 1.18.0

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

Apache bRPC is a C++ RPC framework whose HTTP/2 (h2) parser is enabled by default on every server port and handles both native h2 and gRPC traffic. HPACK, the HTTP/2 header compression format, maintains a dynamic table bounded by the advertised SETTINGS_HEADER_TABLE_SIZE (4096 bytes by default). Each HPACK entry carries 32 bytes of overhead, so the smallest legal entry is 33 bytes (a 1-byte name with an empty value). The vulnerable code sizes the dynamic table's ring buffer as max_size / 34, yielding 120 slots for the default 4096-byte table, while eviction in AddHeader is driven only by cumulative byte usage (_max_size) rather than by slot count. A peer can therefore insert 121 minimal 33-byte entries (121 * 33 = 3993 bytes, still within the 4096-byte budget) so that no byte-based eviction occurs, and the 121st AddHeader hits CHECK(!_header_queue.full()), which aborts the process. No CWE identifier was supplied in the input; the root-cause class is unbounded resource consumption / missing enforcement of a size limit across two parallel accounting mechanisms. The same 1.18.0 release also fixes related HTTP/2 receive-path issues tracked as CVE-2026-78058 (unbounded concurrent streams, HPACK bomb, write-cap bypass) and CVE-2026-78066 (unbounded decompression and wire-declared sizes), which share the theme of trusting peer-declared limits.

Know when Node.js gets its next vulnerability

  • 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

vuln.today AI 7.5 HIGH

Remote h2 parser is default-on and processes HPACK before authentication (AV:N/AC:L/PR:N/UI:N); impact is a process abort only, so A:H with C:N/I:N and no scope change.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 14:17 EUVD
CVE Published
Oct 21, 2026 - 03:30 oss-security
CRITICAL

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Executive ViewAI

Why It Matters

Apache bRPC 1.17.0 and earlier, a remote procedure call framework used to build high-throughput gRPC and HTTP/2 services, can be crashed by a single unauthenticated network request, taking down any service that exposes a default-configured h2 or gRPC listener. Because the failure occurs before any authentication check, no credentials or prior access are needed - only reachability to the port - so internet-facing services built on bRPC are exposed to straightforward availability attacks that require no specialized tooling. Leadership should care because the consequence is full process termination and service outage rather than data loss, and no vendor fix is currently available, leaving network isolation and monitoring as the only near-term defenses for teams running this framework.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict network reachability to h2/gRPC ports via firewall, security group, or service mesh policy; disable unnecessary h2/gRPC listeners; terminate HTTP/2 and gRPC at a hardened reverse proxy or gateway that enforces header-count and connection rate limits before traffic reaches bRPC; reduce the advertised SETTINGS_HEADER_TABLE_SIZE on exposed listeners to cap HPACK insertions per connection; and run affected services under supervision with automatic restart and crash-loop alerting to shorten outage duration.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
specialized C++ RPC framework, limited and mostly niche enterprise footprint
Data Quality
1 sources
Confidence: Low

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

Attack Technique

HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy