ZeroHour

CVE-2026-69210

Infinite-loop DoS in http4s Ember WebSocket decoder via negative payload length

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

http4s, a functional HTTP toolkit for Scala, contains a denial-of-service flaw in its WebSocket FrameTranscoder.bodyLength logic in versions prior to 0.23.35 and 1.0.0-M47. The decoder rejects extended payload lengths above Integer.MAX_VALUE but fails to validate negative 64-bit lengths, so a remote client that completes a WebSocket handshake against an http4s Ember server can send such a frame, causing the decoder to return an empty frame without consuming input. The decode loop then spins indefinitely, pinning a worker at full CPU and growing an ArrayBuffer without bound until the process is exhausted. Any service built on an affected http4s version that exposes Ember WebSocket endpoints to untrusted clients is vulnerable; no authentication or user interaction is required. The issue is fixed in 0.23.35 and 1.0.0-M47, and no public proof of concept or exploitation in the wild is known.

What to do: Upgrade to http4s 0.23.35 on the 0.23.x line or 1.0.0-M47 on the 1.0 milestone line. If upgrading is not immediately feasible, disable WebSocket endpoints on Ember servers or block WebSocket upgrade requests at the reverse proxy or load balancer. Monitor for workers pinned at 100% CPU or unbounded heap growth immediately following WebSocket handshakes from untrusted clients.

Affected
http4s (Ember server / WebSocket FrameTranscoder)all versions prior to 0.23.35
http4s (Ember server / WebSocket FrameTranscoder)1.0.0 milestone versions prior to 1.0.0-M47
Estimated exposure
unknown (likely thousands of Scala-based services, but only those exposing Ember WebSocket endpoints are at risk) — http4s is an embedded Scala library with no published install counts and no reliable server fingerprint in public internet scan datasets, so the number of internet-facing Ember WebSocket endpoints cannot be counted.

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, WebSocket FrameTranscoder.bodyLength rejects extended payload lengths above Integer.MAX_VALUE but permits negative 64-bit lengths. A remote client that completes a WebSocket handshake through an Ember server can send such a frame, causing the decoder to return an empty frame without advancing its input. The decode loop then runs indefinitely, pins a worker at full CPU, and grows an ArrayBuffer without bound, resulting in denial of service. This issue is fixed in versions 0.23.35 and 1.0.0-M47.

Weakness
CWE-835, CWE-1284
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.