ZeroHour

CVE-2026-69209

niche

Unbounded WebSocket buffering allows memory-exhaustion DoS in http4s servers

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

The shared WebSocket decoder in http4s, a Scala HTTP services interface, buffers message fragments without any limit during defragmentation and its FrameTranscoder accepts declared frame lengths up to Int.MaxValue (about 2 GiB). A remote, unauthenticated attacker who completes a WebSocket handshake against a service built on http4s-blaze-server or http4s-ember-server can send oversized frames or heavily fragmented messages to exhaust server memory, causing denial of service (crash or OOM). Any http4s-based application exposing WebSocket endpoints on the Blaze or Ember backends is affected. The flaw is fixed in versions 0.23.35 and 1.0.0-M47, which enforce a configurable 64 MiB default limit on individual frames and defragmented messages via EmberServerBuilder.withMaxWebSocketMessageSize. No public proof of concept or known exploitation in the wild has been reported.

What to do: Upgrade to http4s 0.23.35 (0.23.x line) or 1.0.0-M47 (1.0 milestone line) as soon as possible. If immediate upgrade is not feasible, place WebSocket endpoints behind a reverse proxy that enforces frame/message size limits, and tune EmberServerBuilder.withMaxWebSocketMessageSize appropriately after patching. Monitor server memory and connection behavior for oversized-frame or fragmentation abuse on any internet-exposed Blaze or Ember WebSocket endpoints.

Affected
http4s (Typelevel) http4s (http4s-blaze-server, http4s-ember-server WebSocket endpoints)All versions prior to 0.23.35; all 1.0.0 milestone versions prior to 1.0.0-M47
Estimated exposure
nicheLikely hundreds to low thousands of internet-reachable http4s WebSocket endpoints (no reliable public count) — http4s is a moderately popular Scala/JVM server library, but it is embedded in bespoke services and not reliably fingerprinted by internet-wide scans, and only deployments exposing WebSocket endpoints on the Blaze or Ember backends are…

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, The shared WebSocket decoder permits unbounded message buffering because defragmentation accumulates fragments without a limit and FrameTranscoder accepts declared lengths up to Int.MaxValue. A remote client that completes a WebSocket handshake against an http4s-blaze-server or http4s-ember-server endpoint can exhaust server memory with oversized frames or fragmented messages. The patched decoder applies a configurable 64 MiB default limit to individual frames and defragmented messages through EmberServerBuilder.withMaxWebSocketMessageSize. This issue is fixed in versions 0.23.35 and 1.0.0-M47.

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

In the news

No ingested article mentions this CVE yet.