CVE-2026-69209
nicheUnbounded WebSocket buffering allows memory-exhaustion DoS in http4s servers
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.
| 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 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.