CVE-2026-54425: Apache bRPC: Stack Exhaustion via Recursive HPACK Dynamic Table Size Update Decoding
Uncontrolled recursion in the HTTP/2 HPACK decoder in Apache bRPC before 1.18.0 allows remote attackers to cause denial of service by sending a crafted HTTP/2 header block containing many consecutive Dynamic Table Size Update entries. Each update was decoded by recursively invoking the HPACK decoder, which could exhaust the thread stack before a header field or end of input was reached.
Root Cause: The bRPC HPACK decoder recursively decoded the next entry after processing a Dynamic Table Size Update. The decoder did not bound the recursion depth, so a long sequence of update entries could consume excessive stack space.
Affected Scenarios: Use bRPC with the built-in HTTP/2 implementation to accept HTTP/2 traffic from an untrusted network.
How to Fix: 1. Upgrade bRPC to version 1.18.0, which fixes this issue. 2. Apply this patch: https://github.com/apache/brpc/pull/3343
Note: The fix changes HPACK Dynamic Table Size Update decoding to use iterative parsing instead of recursive parsing.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Apache bRPCto a version that resolves this vulnerability.Fixed in 1.18.0
Event History
Frequently Asked Questions
Which deployments are exposed to this denial-of-service issue?
Deployments using bRPC's built-in HTTP/2 implementation that accept HTTP/2 traffic from an untrusted network are affected. The issue applies to bRPC versions before 1.18.0.
What does an attacker need to send to trigger the issue?
An attacker needs to send a crafted HTTP/2 header block containing many consecutive HPACK Dynamic Table Size Update entries. Processing those entries can recursively consume the handling thread's stack and cause denial of service.
What can be done if upgrading is not immediately possible?
Apply the referenced patch, which changes Dynamic Table Size Update decoding from recursive to iterative parsing. Until remediation is in place, reduce exposure by preventing untrusted networks from sending HTTP/2 traffic to the affected built-in implementation.