ZeroHour

CVE-2026-69202

niche

Unbounded HTTP/2 Body Buffering Allows Remote OOM DoS in http4s Ember

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

The Ember HTTP/2 implementation in http4s replenishes the inbound flow-control window based on bytes received from the wire rather than bytes actually consumed by the application, and buffers received DATA frames in an unbounded per-stream channel. As a result, HTTP/2 flow control provides no backpressure: an unauthenticated attacker can stream a large or endless request body to an Ember server built with .withHttp2 faster than the route drains it, or feed a large response body to an Ember client, forcing the connection to retain the entire payload in heap. The impact is remote denial of service through out-of-memory exhaustion of the JVM, with no confidentiality or integrity impact (CVSS 3.1: 7.5). This is the read-path mirror of the previously disclosed outbound queue issue (GHSA-8f3q-3jmv-7prw). No public proof of concept is known and there is no evidence of in-the-wild exploitation.

What to do: Disable HTTP/2 in Ember until a patched http4s release can be applied, which removes the vector entirely. Where HTTP/2 must stay enabled, wrap body-consuming routes in EntityLimiter (or an equivalent aggregate request-entity size limit) and ensure handlers fully drain request bodies with aggressive idle timeouts. Monitor JVM heap usage and long-lived HTTP/2 streams with large inbound bodies as indicators of attempted exploitation.

Affected
http4s Ember (ember-server and ember-client with HTTP/2 enabled)
Estimated exposure
nichelikely on the order of hundreds to low thousands of internet-exposed servers, plus an unknown number of internal/client deployments — http4s is a niche Scala/JVM web framework with no public active-install counts, and only deployments that explicitly enable HTTP/2 (.withHttp2) are exposed, so the vulnerable subset is a small fraction of Scala-based services.

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 HTTP/2 flow-control window is replenished according to bytes received from the network rather than bytes consumed by the application, while each stream stores DATA in an unbounded channel. A hostile peer can therefore send a body faster than a slow or non-draining application consumes it, retaining payloads in heap on an ember-server or ember-client configured with withHttp2. The patch bounds the per-stream H2Connection body channel so application consumption applies backpressure. This issue is fixed in versions 0.23.35 and 1.0.0-M47.

Ecosystems
maven
Weakness
CWE-400, CWE-770
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
GHSA
GHSA-6m4x-pp6q-5jmm (high)

In the news

No ingested article mentions this CVE yet.