GHSA-7ppr-r889-mcf2
blaze: Unbounded WebSocket message aggregation in http4s-blaze-server
Quick fix
GHSA-7ppr-r889-mcf2 — org.http4s:http4s-blaze-server_2.13: upgrade to the fixed version with the command below.
# pom.xml: bump <version>0.23.18</version> for org.http4s:http4s-blaze-server_2.13 Details
## Summary
`http4s-blaze-server` aggregates the 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 via `OutOfMemoryError`.
## Impact
Any http4s application serving WebSocket routes over `BlazeServerBuilder` is affected; no non-default configuration is required, and `maxWebSocketBufferSize` does not bound the aggregate (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. Where the WebSocket endpoint is reachable without authentication the attacker is unauthenticated and remote; where the handshake requires a principal, any authenticated client can still trigger it.
## Workarounds
- No blaze-server configuration bounds the aggregate; `maxWebSocketBufferSize` is not a mitigation. - Terminate/limit WebSocket traffic at a fronting layer that enforces message-size and fragment limits, or disable WebSocket routes. - Longer term: blaze is EOL upstream; plan migration to a maintained backend (e.g. ember).
Are you affected?
Enter the version of the package you're using.
Affected packages
0 Fixed in: 0.23.18 # pom.xml: bump <version>0.23.18</version> for org.http4s:http4s-blaze-server_2.13 1.0.0-M1 Fixed in: 1.0.0-M42 # pom.xml: bump <version>1.0.0-M42</version> for org.http4s:http4s-blaze-server_2.13 0 Fixed in: 0.23.18 # pom.xml: bump <version>0.23.18</version> for org.http4s:http4s-blaze-server_2.12 1.0.0-M1 Fixed in: 1.0.0-M42 # pom.xml: bump <version>1.0.0-M42</version> for org.http4s:http4s-blaze-server_3 References
- https://github.com/http4s/blaze/security/advisories/GHSA-7ppr-r889-mcf2 [WEB]
- https://github.com/http4s/blaze/commit/173e8ca820a0d12110bfe409c72e9b9c3d28d471 [WEB]
- https://github.com/http4s/blaze/commit/2ae13a74d55209b6573d5228d1aa94f0361a75d0 [WEB]
- https://github.com/http4s/blaze/commit/fadbe6d0f7f59045425688d313c8d4804973d12f [WEB]
- https://github.com/http4s/blaze [PACKAGE]
- https://github.com/http4s/blaze/releases/tag/v0.23.18 [WEB]
- https://github.com/http4s/blaze/releases/tag/v1.0.0-M42 [WEB]