ZeroHour

CVE-2026-84997

moderate

Infinite-Loop DoS in ReactPHP react/http Chunked Transfer Decoder

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

ReactPHP's react/http package, an event-driven streaming HTTP client and server library, contains an unauthenticated denial-of-service flaw (CWE-835, infinite loop) in its ChunkedDecoder component, present from version 0.6.0 through versions before 1.11.1. Because the decoder's handleData routine only exits its loop when the buffer shrinks on each iteration, a malformed Transfer-Encoding: chunked body — an incomplete terminal-chunk trailer lacking CRLF, or exactly two non-CRLF bytes after a completed non-terminal chunk — leaves the buffer unchanged and loops forever. A malicious client can therefore freeze any server built on React\Http\HttpServer by sending a crafted request body, and a malicious or compromised server can freeze any client using React\Http\Browser via a crafted response body, hanging the event loop and every connection it serves. A reverse proxy that normalizes inbound requests may shield the server direction but does not protect outbound Browser requests. No public proof-of-concept or exploitation has been reported (not in CISA KEV), and the flaw is fixed in react/http 1.11.1.

What to do: Upgrade react/http to 1.11.1 or later (e.g., composer update react/http) and verify the patched version in composer.lock and the vendor directory. Until patched, place a reverse proxy that normalizes or rejects malformed chunked requests in front of HttpServer — noting this does not protect outbound Browser requests — and restrict Browser use to trusted servers. Audit PHP applications for this dependency, since Composer packages are often invisible in conventional asset inventories.

Affected
ReactPHP react/http (ChunkedDecoder, used by HttpServer and Browser)>= 0.6.0 and < 1.11.1 (fixed in 1.11.1)
Estimated exposure
moderatelikely thousands to tens of thousands of PHP deployments (no authoritative install telemetry for the Composer package) — react/http is a widely adopted Composer library with millions of cumulative Packagist downloads, but only deployments running its HttpServer on directly reachable traffic or its Browser against untrusted servers are practically affected,…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

react/http is an event-driven, streaming HTTP client and server implementation for ReactPHP. From 0.6.0 until 1.11.1, React\Http\Io\ChunkedDecoder could enter an infinite loop while processing a malformed Transfer-Encoding: chunked body because handleData required its buffer to shrink on every iteration. An incomplete terminal-chunk trailer without CRLF left the buffer unchanged after strpos returned false, and exactly two non-CRLF bytes after a completed non-terminal chunk bypassed both the error and wait guards. The affected decoder processes request bodies for React\Http\HttpServer and response bodies for React\Http\Browser, allowing a malicious client to freeze a server or a malicious or compromised server to freeze a client. A reverse proxy that normalizes inbound requests may protect the server direction but does not protect outbound Browser requests. This issue is fixed in version 1.11.1.

Weakness
CWE-835
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

In the news

No ingested article mentions this CVE yet.