Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessComplete WebSocket HTTP Upgrade handshake
-
DeliverySend stream of small continuation frames with FIN=0
-
ExploitBlaze WSFrameAggregator buffers each frame indefinitely
-
ExecutionPer-frame heap overhead compounds total allocation
-
PersistJVM heap exhausted, OutOfMemoryError raised
-
ImpactBlaze selector thread terminates, service crashes
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The application must be using BlazeServerBuilder and must expose at least one WebSocket route - no non-default configuration is required beyond this. The attacker must successfully complete a WebSocket handshake (HTTP Upgrade). Where the WebSocket endpoint requires no authentication (PR:N surface), exploitation is fully unauthenticated and remote. Where the handshake requires a valid session or principal, any authenticated client - including low-privilege users - can trigger the condition (PR:L surface). The existing maxWebSocketBufferSize setting does not limit exploitation. Factors limiting real-world impact: the target must be running the Scala/JVM stack with http4s-blaze-server specifically; the attack tears down the entire JVM process rather than a single connection, making it immediately observable; and blaze's EOL status means patching is the only sustainable remediation path. |
| Impact | The official CVSS 3.1 score of 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately reflects the worst-case scenario where a WebSocket endpoint is publicly reachable without authentication. The GHSA advisory clarifies that where authentication is required, any valid principal can still trigger the crash - so PR:N applies to the unauthenticated surface and PR:L applies to authenticated deployments; this nuance does not change the score but matters for exposure assessment. No KEV listing and no confirmed public exploit code exist at time of analysis, so real-world exploitation is not confirmed. There is no EPSS data provided; given the niche deployment footprint of blaze-based Scala services, opportunistic mass exploitation is unlikely but targeted exploitation against a known blaze deployment would be straightforward. The availability impact is severe - OOM on the blaze selector thread terminates the JVM, taking down the entire service, not just the affected connection. Since blaze is EOL, no further mitigations will emerge outside of the single released patch. The CVSS signals are internally consistent and do not conflict with the description. |
| Exploit ScenarioDerived | An attacker targeting a publicly exposed blaze-based Scala API performs the WebSocket handshake against any WebSocket endpoint and then sends a stream of small continuation frames - for example, 64-byte frames - that never include the FIN bit, preventing the server from delivering a complete message. Because each frame is buffered and also incurs per-object JVM heap overhead, the server heap grows monotonically; depending on heap configuration, a few thousand to tens of thousands of such frames suffice to trigger OutOfMemoryError on the selector thread and crash the JVM process. No exploit code has been publicly identified, but the technique requires only standard WebSocket framing knowledge. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 12, 2026
Unbounded WebSocket fragment aggregation in http4s-blaze-server allows any client that completes a WebSocket handshake to exhaust the server JVM heap and trigger an OutOfMemoryError, crashing the blaze selector thread. Any Scala application built on BlazeServerBuilder that exposes WebSocket routes is affected without any non-default configuration - the existing maxWebSocketBufferSize setting bounds only individual frames, not the aggregate. No public exploit has been identified at time of analysis, but exploitation is trivially low-complexity: a single connection sending a stream of continuation frames that never assert FIN is sufficient.
RemediationAI
Upgrade to http4s-blaze-server version 0.23.18 (for the stable series) or 1.0.0-M42 (for the milestone series); release artifacts are available at https://github.com/http4s/blaze/releases/tag/v0.23.18 and https://github.com/http4s/blaze/releases/tag/v1.0.0-M42. The fix introduces a 4 MiB default aggregate message cap; applications with legitimate large WebSocket payloads may need to configure maxBufferSize explicitly via BlazeServerBuilder to avoid premature Close(1009) responses. If upgrading immediately is not possible, the GHSA advisory recommends terminating or rate-limiting WebSocket traffic at a fronting reverse proxy or load balancer that enforces both per-frame and aggregate message-size limits - this is effective but requires the proxy to inspect WebSocket framing, not all proxies do this by default. Alternatively, disable WebSocket routes entirely if they are not required by the application. Note that maxWebSocketBufferSize in blaze configuration is NOT a mitigation and does not bound aggregate size. Given that blaze is EOL upstream, migration to a maintained http4s backend (such as Ember) is the long-term recommended path.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 5 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
http4s is a Scala HTTP library built on the Typelevel ecosystem; its blaze backend (org.http4s:http4s-blaze-server) implements a pipeline-based I/O model using a WSFrameAggregator mid-stage that reassembles fragmented WebSocket messages per RFC 6455. The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling): WSFrameAggregator accumulated continuation frames into an unbounded buffer with no cap on total payload bytes or fragment count. Because each fragment also carries JVM per-object heap overhead (frame object, ByteVector wrapper, queue node), even a modest byte volume of many small fragments can exhaust memory faster than payload bytes alone suggest. The fix introduces a maxMessageSize constructor parameter (default 4 MiB) to WSFrameAggregator and charges both payload bytes and a per-fragment overhead of 64 bytes against the same budget, then maps overflow to a WebSocket Close(1009) frame. The CPE string cpe:2.3:a:http4s:blaze:*:*:*:*:*:*:*:* covers all blaze versions. Notably, blaze is declared EOL upstream, meaning no ongoing maintenance will follow this fix.
Know when Http4S gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Network-reachable WebSocket endpoint, no complexity or privileges needed for unauthenticated surfaces, and sole impact is complete availability loss via JVM crash.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Http4s (http4s-blaze-server) is a minimal, idiomatic Scala interface for HTTP services. Prior to 0.23.18 and 1.0.0-M42, http4s-blaze-server aggregates fragments of an incoming WebSocket message with no limit on total size or fragment count. A client that completes a WebSocket handshake can send an unterminated fragmented message and drive unbounded heap growth in the server JVM, resulting in denial of service through OutOfMemoryError. Any http4s application serving WebSocket routes over BlazeServerBuilder is affected, no non-default configuration is required, and maxWebSocketBufferSize does not bound the aggregate because it bounds only individual frames. A single connection sending continuation frames that never set FIN forces the server to buffer every fragment until the heap is exhausted, terminating the JVM with OutOfMemoryError on the blaze selector thread. Small fragments amplify the cost through per-frame object overhead, so a modest volume of wire bytes is sufficient. This issue is fixed in versions 0.23.18 and 1.0.0-M42.
Blast Radius
ecosystem impact- 8 maven packages depend on org.http4s:http4s-blaze-server_2.12 (3 direct, 5 indirect)
Ecosystem-wide dependent count for version 0.23.18.
Executive ViewAI
http4s-blaze-server's WebSocket implementation contains a denial-of-service vulnerability that allows attackers to crash the server by exhausting JVM memory, affecting all Scala applications using BlazeServerBuilder with WebSocket routes. No patch is currently available, placing critical services at immediate risk of outage from trivially-exploitable attacks.
No vendor-released patch identified at time of analysis. Interim mitigations: deploy connection rate limiting and per-client connection limits at reverse proxy layer; enforce aggressive idle timeout on WebSocket connections; enable continuous JVM heap monitoring with automated alerts at 75% utilization and failover triggers; configure reverse proxy to limit WebSocket frame size where supported; isolate WebSocket endpoints to dedicated application instances to limit blast radius of memory exhaustion events; document and practice manual service restart procedures for rapid recovery.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
XML External Entity (XXE) injection in http4s-scala-xml's EntityDecoder for scala.xml.Elem (all versions before 0.24.1 a
Http4s client applications that keep a cookie jar can leak stored cookies — including session and authentication cookies
Http4s is a Scala interface for HTTP services. Rated medium severity (CVSS 5.3), this vulnerability is remotely exploita
Request smuggling in the http4s Ember HTTP/1.1 parser lets an unauthenticated, remote attacker bypass front-end access c
Http4s is a minimal, idiomatic Scala interface for HTTP services. Rated critical severity (CVSS 9.1), this vulnerability
HTTP request smuggling in http4s Ember (all releases prior to 0.23.35 and 1.0.0-M47) lets an unauthenticated remote atta
Let me synthesize. CVE-2026-69205: http4s Ember HTTP parser request smuggling via Transfer-Encoding header case-sensiti
http4s is an open source scala interface for HTTP. Rated medium severity (CVSS 4.7), this vulnerability is remotely expl
A crafted WebSocket frame can pin a worker thread and exhaust memory in the http4s Scala HTTP library, causing denial of
Heap exhaustion in the http4s Ember backend (0.23.x before 0.23.35 and 1.0.0 milestones before 1.0.0-M47) allows a singl
Heap-exhaustion denial of service in the http4s DigestAuth server middleware: an inverted stale-nonce comparison in Nonc
Http4s (http4s-blaze-server) is a minimal, idiomatic Scala interface for HTTP services. Rated high severity (CVSS 7.5),
EUVD-2026-57631
GHSA-7ppr-r889-mcf2
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB