Summary
CVE-2026-69204 is a critical HTTP request smuggling vulnerability in the Ember HTTP/1.1 server implementation shipped with the http4s Scala HTTP library. The Ember parser fails to reject requests that contain both Transfer-Encoding and Content-Length headers, violating RFC 9112 §6.1, which allows an attacker to construct CL.TE-style smuggled requests when Ember sits behind a keep-alive intermediary such as a load balancer, reverse proxy, or CDN. The issue carries a CVSS score of 9.2 and can be exploited remotely without authentication.
Technical details
- Root cause: RFC 9112 §6.1 requires that a server receiving both
Transfer-EncodingandContent-Lengthheaders in the same request treat it as a framing error and close the connection. The Ember HTTP/1.1 parser instead accepts both headers and processes the message, rather than rejecting it (CWE-444: Inconsistent Interpretation of HTTP Requests / "HTTP Request Smuggling"). - Trigger conditions: Ember must be deployed behind an intermediary (proxy, load balancer, CDN, or other front-end) that keeps connections alive/reused and that determines message framing using
Content-Lengthwhile forwarding the conflictingTransfer-Encodingheader downstream to Ember unchanged. - Attack vector: Network — a remote, unauthenticated attacker sends a specially crafted HTTP/1.1 request containing both conflicting headers over a connection shared with the intermediary. Because the front-end and Ember disagree on where one request ends and the next begins, part of the attacker’s request is interpreted by Ember as the start of a subsequent, victim request.
- Impact: Successful exploitation lets an attacker desynchronize the connection to smuggle requests past intermediary access controls, hijack or manipulate other users’ requests/responses on shared connections, and poison caches sitting in front of Ember. On http4s clients that pool connections to an upstream sending dual headers, the same desynchronization can also occur.
Affected software
http4s-ember-core(Scala 2.12) — versions ≤ 0.23.34http4s-ember-core(Scala 2.13) — versions ≤ 0.23.34, and 1.0.0-M1 through 1.0.0-M46http4s-ember-core(Scala 3) — versions ≤ 0.23.34, and 1.0.0-M1 through 1.0.0-M46- Any application embedding the vulnerable Ember server (or client) via these library versions
Severity
- CVSS v4.0 Base Score: 9.2 (Critical)
- Vector:
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: Upgrade http4s Ember to a patched release:
http4s-ember-core0.23.x → 0.23.35 or laterhttp4s-ember-core1.0.0 milestone line → 1.0.0-M47 or later
- If patching is not immediately possible, apply the following network-level mitigations:
- Configure any intermediary (proxy, load balancer, CDN) in front of Ember to strictly reject requests that contain both
Transfer-EncodingandContent-Lengthheaders. - Have the intermediary fully re-encode/normalize request bodies before forwarding rather than passing through the original framing headers unmodified.
- Disable or avoid keep-alive/connection reuse between the intermediary and Ember-backed services until patched, since request smuggling requires a shared, persistent connection.
- Configure any intermediary (proxy, load balancer, CDN) in front of Ember to strictly reject requests that contain both

