CVE-2026-107227: AsyncHttpClient: Unbounded WebSocket permessage-deflate decompression enables a decompression-bomb denial of service when compression is enabled
With WebSocket compression enabled, the client inflates permessage-deflate messages with no limit on the decompressed size. It installed Netty’s shared WebSocketClientCompressionHandler.INSTANCE, whose inflater is unbounded, and webSocketMaxFrameSize and webSocketMaxBufferSize only bound the compressed bytes, because the frame aggregator sits in front of the inflater.
A malicious or compromised WebSocket server, or anyone on the path of a ws:// connection, can therefore send a message of about 2 MiB that inflates to about 2 GiB, the most a Netty buffer can hold. The client then copies the inflated message again to hand it to the listener. That exhausts the heap of a typically sized JVM. Netty catches the resulting OutOfMemoryError and closes that connection, but while the buffer is live any other allocation in the process can fail too, and a server that keeps sending such messages, on one connection or several, keeps the client at heap exhaustion.
References
- github.com/AsyncHttpClient/async-http-client/commit/b61637f30327f314b7693418f12ce141ac6b2b30
- github.com/AsyncHttpClient/async-http-client/releases/tag/async-http-client-project-3.0.14
- github.com/AsyncHttpClient/async-http-client/security/advisories/GHSA-x8v2-478q-2hvg
- github.com/advisories/GHSA-x8v2-478q-2hvg
- nvd.nist.gov/vuln/detail/CVE-2026-107227
Code Behaviors & Features
Detect and mitigate CVE-2026-107227 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →