ZeroHour

CVE-2026-69204

moderate

Critical HTTP Request Smuggling in http4s Ember HTTP/1.1 Server and Client

CVSS 4.0
9.2 critical
EPSS
Published
()
Modified
AI analysis

http4s Ember's HTTP/1.1 implementation fails to reject messages that contain both a Transfer-Encoding and a Content-Length header, allowing request-smuggling (CL.TE/TE.CL) desynchronization between an intermediary and the Ember backend. An unauthenticated attacker can exploit an ember-server deployed behind a keep-alive intermediary that forwards both headers to smuggle a second request, bypass the intermediary's access controls, poison caches, or prepend attacker-controlled data to a victim's request. The shared response parser also lets a malicious or compromised upstream desynchronize an ember-client connection, exposing downstream consumers. Affected deployments are those running http4s versions prior to 0.23.35 or 1.0.0-M47 with the Ember backend; the flaw is fixed in 0.23.35 and 1.0.0-M47. There is no known public PoC, no CISA KEV listing, and no evidence of in-the-wild exploitation at this time, though the 9.2 CVSS score reflects the severity when the deployment pattern (proxy + Ember) is present.

What to do: Upgrade http4s to 0.23.35 (0.23.x line) or 1.0.0-M47 (1.0 milestone line) or later as soon as possible. As a defense-in-depth measure, configure fronting proxies/load balancers (nginx, HAProxy, cloud LBs) to normalize requests by stripping or rejecting any request carrying both Transfer-Encoding and Content-Length rather than forwarding both. Review intermediary and origin logs for anomalous responses, unexpected 4xx responses on legitimate requests, or byte-count mismatches that could indicate prior smuggling attempts.

Affected
http4s Ember HTTP/1.1 backend (ember-server and ember-client)< 0.23.35 (0.23.x release line)
http4s Ember HTTP/1.1 backend (ember-server and ember-client)< 1.0.0-M47 (1.0.0 milestone line)
Estimated exposure
moderatelow thousands of internet-exposed Ember-based services (order 10^3-10^4), plus additional internal services behind fronting proxies — http4s is the dominant HTTP framework in the Scala ecosystem and Ember its default server backend, but the overall Scala deployment base is small relative to mainstream runtimes, and exploitation requires the specific pattern of an…

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

Description

Http4s is a Scala interface for HTTP services. Prior to 0.23.35 and 1.0.0-M47, Ember HTTP/1.1 does not reject messages containing both Transfer-Encoding and Content-Length, so an intermediary and Ember can select different body framing rules. When ember-server is behind a keep-alive intermediary that forwards both headers and frames by Content-Length, an unauthenticated attacker can smuggle a second request, bypass intermediary access controls, poison caches, or cause a victim request to be joined to an attacker-controlled prefix. The shared response parser can also desynchronize an ember-client connection when a malicious or compromised upstream sends both headers. This issue is fixed in versions 0.23.35 and 1.0.0-M47.

Ecosystems
maven
Weakness
CWE-444
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
GHSA
GHSA-8h4c-x2wg-6xp8 (critical)

In the news

No ingested article mentions this CVE yet.