Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Remote unauthenticated HTTP/2 clients trivially abuse flow control (AV:N/AC:L/PR:N/UI:N) causing memory-exhaustion DoS with availability-only impact (A:H; C/I:N).
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
6Description PRE-NVD
Articles & Coverage 1
AnalysisAI
Memory-exhaustion denial of service in Meta's Proxygen HTTP library (versions v2017.01.16.00 through v2026.07.20.00) allows remote, unauthenticated attackers to force unbounded server-side buffering by abusing HTTP/2 flow control. Because the core HTTP session layer had no generalized slow-consumer detection, a client that advertises SETTINGS_INITIAL_WINDOW_SIZE of 0 or simply withholds WINDOW_UPDATE frames can stall many concurrent streams while fully-generated response bodies pile up in memory. No public exploit identified at time of analysis, but the technique is well-understood and the CVSS 7.5 availability impact is real against default deployments.
Technical ContextAI
Proxygen is Meta's asynchronous C++ HTTP/1.1, HTTP/2 and HTTP/3 (QUIC) library, built on folly, that underpins servers and proxies. The flaw lives in the shared HTTP session layer (HTTPSession/HTTPSessionBase, and the HQ/QUIC equivalents). HTTP/2 (RFC 9113) uses per-stream flow control: a receiver grants send credit via SETTINGS_INITIAL_WINDOW_SIZE and WINDOW_UPDATE frames. When a peer grants zero credit or stops sending WINDOW_UPDATEs, the sender cannot transmit and must hold the produced response body somewhere. Proxygen buffered those complete bodies in memory with no bound and no timer to detect a stream making no forward progress. The root cause is an uncontrolled-resource-consumption / unbounded-allocation class issue (CWE-400 / CWE-770; the input lists CWE as N/A). The fix adds an explicit slow-consumer detector: HTTPSessionBase now tracks bodyBytesWritten_ and a SlowConsumerTimer that arms when pendingWriteSize_ exceeds slowConsumerQueueThreshold_, and drops the connection (dropConnection("slow consumer")) if fewer than slowConsumerMinDequeueBytes_ drain within the configured window.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the change in Proxygen commit f28742f21f7022c261b7620d4e6b20d82b6cff72 (https://github.com/facebook/proxygen/commit/f28742f21f7022c261b7620d4e6b20d82b6cff72), which introduces the slow-consumer detector and requires configuring the new thresholds (slowConsumerQueueThreshold_, slowConsumerWindow_, slowConsumerMinDequeueBytes_) so stalled streams are dropped rather than buffered indefinitely; rebuild and redeploy dependent servers against a build that includes it. Because no tagged patched release version is confirmed in the input, verify the fixed tag with Meta before pinning a version, and consult the oss-security post (https://seclists.org/oss-sec/2026/q3/157) and CERT/CC note (https://kb.cert.org/vuls/id/885548). Until patched, apply compensating controls: cap per-connection and per-server pending write/buffer memory so a stalled session is force-closed at a ceiling (trade-off: may terminate legitimately slow mobile clients); limit SETTINGS_MAX_CONCURRENT_STREAMS to shrink the number of simultaneously stallable streams (trade-off: reduces multiplexing throughput for well-behaved clients); enforce a minimum-transmit-progress or idle-write timeout at a fronting proxy/load balancer to reap streams that accept no data; and rate-limit or restrict HTTP/2 access from untrusted networks (trade-off: operational overhead and possible false positives against poor-connectivity users).
Same technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-48310
GHSA-p9xj-3649-7qp8