ZeroHour

CVE-2026-69205

moderate

HTTP Request Smuggling in http4s Ember via Case-Sensitive Transfer-Encoding Parsing

CVSS 3.1
8.7 high
EPSS
Published
()
Modified
AI analysis

The Ember HTTP/1.x header parser in the Scala toolkit http4s tests the Transfer-Encoding header value with a case-sensitive substring match for 'chunked', violating RFC 9112 §7's requirement for case-insensitive comparison. An unauthenticated remote attacker who sends 'Transfer-Encoding: Chunked' (or values like 'notchunked' or a Kelvin-sign variant) causes Ember and an RFC-compliant front-end proxy to disagree on where the request body ends, enabling classic TE.CL / TE.0 request smuggling. Successful exploitation lets the attacker bypass front-end ACLs and authentication, hijack the next victim's request on a pooled keep-alive connection to capture its Cookie/Authorization headers, or poison cache entries; ember-client shares the same parser and enables response smuggling when http4s acts as a gateway to a malicious upstream. Any deployment running ember-server as an origin behind a proxy that treats Transfer-Encoding case-insensitively and forwards it verbatim is affected. No public proof of concept is known and there is no evidence of in-the-wild exploitation, though the issue carries a high CVSS 3.1 score of 8.7.

What to do: Upgrade http4s ember-server and ember-client to the first release that performs a case-insensitive, charset-pinned (ISO-8859-1) Transfer-Encoding token comparison, checking the http4s security advisories for the exact fixed versions once published. Where an immediate upgrade is not possible, mitigate at the intermediary: enable full request buffering and re-encoding (e.g. nginx's default proxy_request_buffering on), normalize or lowercase the Transfer-Encoding token before forwarding, or disable keep-alive between the proxy and the Ember backend. Audit gateway-style deployments using ember-client for signs of response-splitting from untrusted upstreams.

Affected
http4s ember-server (http4s-ember-server, Maven artifact)
http4s ember-client (http4s-ember-client, Maven artifact)
Estimated exposure
moderate≈ thousands to low tens of thousands of internet-facing services, with only the subset behind non-normalizing intermediaries exploitable — http4s is one of the most widely used Scala web toolkits on Maven Central and Ember is its default server/client backend, but Scala server deployments are a small fraction of the web and public scanners do not fingerprint http4s, so this…

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’s HeaderP.parse uses a case-sensitive substring test for the Transfer-Encoding value and decodes header bytes with the platform default charset. Values such as Chunked are not recognized, values such as notchunked are incorrectly accepted, and Unicode case folding can turn a Kelvin-sign byte sequence into a match when UTF-8 is used. Intermediaries that apply RFC-compliant token and charset rules can therefore disagree with Ember’s Content-Length or zero-length framing, enabling TE.CL or TE.0 request smuggling, access-control bypass, cross-user request hijacking, and cache poisoning on the server path. Response smuggling through an ember-client gateway requires a malicious or compromised upstream. This issue is fixed in versions 0.23.35 and 1.0.0-M47.

Ecosystems
maven
Weakness
CWE-444
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N
GHSA
GHSA-9998-894r-fwvr (high)

In the news

No ingested article mentions this CVE yet.