Every CVE Search/ Get API key

CVE-2026-107227

AsyncHttpClient: Unbounded WebSocket permessage-deflate decompression enables a decompression-bomb denial of service when compression is enabled

7.5 HighFix available

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.2.0 until 3.0.14, WebSocket permessage-deflate decompression is unbounded when compression is enabled. The inbound pipeline aggregates compressed frames before WebSocketClientCompressionHandler inflates them, so webSocketMaxFrameSize and webSocketMaxBufferSize do not bound decompressed output. A malicious WebSocket peer can send a small compressed message that expands to a very large Netty buffer and exhausts JVM heap. This issue is fixed in version 3.0.14.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.43%Unchanged since Oct 8, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.5

AsyncHttpClient: Unbounded WebSocket permessage-deflate decompression enables a decompression-bomb denial of service when compression is enabled

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.2.0 until 3.0.14, WebSocket permessage-deflate decompression is unbounded when compression is enabled. The inbound pipeline aggregates compressed frames before WebSocketClientCompressionHandler inflates them, so webSocketMaxFrameSize and webSocketMaxBufferSize do not bound decompressed output. A malicious WebSocket peer can send a small compressed message that expands to a very large Netty buffer and exhausts JVM heap. This issue is fixed in version 3.0.14.

Record
CVE-2026-107227
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-409
Updated
2026-11-02
EUVDEUVD-2026-94588 7.5

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.2.0 until 3.0.14, WebSocket permessage-deflate decompression is unbounded when compression is enabled. The inbound pipeline aggregates compressed frames before WebSocketClientCompressionHandler inflates them, so webSocketMaxFrameSize and webSocketMaxBufferSize do not bound decompressed output. A malicious WebSocket peer can send a small compressed message that expands to a very large Netty buffer and exhausts JVM heap. This issue is fixed in version 3.0.14.

Record
EUVD-2026-94588
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-x8v2-478q-2hvg 7.5

AsyncHttpClient: Unbounded WebSocket permessage-deflate decompression enables a decompression-bomb denial of service when compression is enabled

Impact

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.

Who is Impacted

Only applications that enable WebSocket compression with setEnablewebSocketCompression(true), which is off by default, and connect to a WebSocket server that is untrusted, compromised, or reached over cleartext ws://.

Affected versions

  • 3.x: up to and including 3.0.13
  • 2.x: from 2.2.0, when WebSocket compression was added, up to and including 2.16.1

Patches

Fixed in 3.0.14. A new setting, webSocketMaxDecompressedFrameSize (setWebSocketMaxDecompressedFrameSize, or the org.asynchttpclient.webSocketMaxDecompressedFrameSize property), bounds how far a message may inflate, and a message that would go past it fails the connection. It defaults to 128000000 bytes, the same as webSocketMaxBufferSize, so a message is bounded alike whether or not it was compressed; a compressed message that inflates past that, which was accepted before, now fails the connection. With aggregateWebSocketFrameFragments turned off, the bound applies to each frame instead, and fragments are delivered one at a time. Set it lower if you enable compression and do not expect large messages. 0 disables the limit.

The 2.x line is end of life and will not receive a fix. Upgrade to 3.0.14.

Workarounds

Leave WebSocket compression disabled, which is the default.

Details

After the handshake the inbound pipeline is ws-decoder, ws-aggregator, PerMessageDeflateDecoder, ahc-ws: the aggregator, which enforces webSocketMaxBufferSize, sees each message before it is inflated. WebSocketClientCompressionHandler.INSTANCE is built with maxAllocation = 0, which Netty treats as unbounded, and Netty has deprecated it in favour of a constructor that takes a limit. RFC 6455 Section 10.4 asks an implementation to limit the size of a message after reassembly, and under RFC 7692 Section 6.2 the message delivered to the application is the decompressed payload.

This is a different path from the HTTP response decompression fixed under CVE-2026-85721, which never reached the WebSocket pipeline.

Attribution

AI-assisted tools were used to support discovery and analysis.

Record
GHSA-x8v2-478q-2hvg
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-409
Updated
2026-11-02
NVD 7.5

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.2.0 until 3.0.14, WebSocket permessage-deflate decompression is unbounded when compression is enabled. The inbound pipeline aggregates compressed frames before WebSocketClientCompressionHandler inflates them, so webSocketMaxFrameSize and webSocketMaxBufferSize do not bound decompressed output. A malicious WebSocket peer can send a small compressed message that expands to a very large Netty buffer and exhausts JVM heap. This issue is fixed in version 3.0.14.

Record
CVE-2026-107227
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-409
Updated
2026-11-02
OSV 7.5

AsyncHttpClient: Unbounded WebSocket permessage-deflate decompression enables a decompression-bomb denial of service when compression is enabled

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.2.0 until 3.0.14, WebSocket permessage-deflate decompression is unbounded when compression is enabled. The inbound pipeline aggregates compressed frames before WebSocketClientCompressionHandler inflates them, so webSocketMaxFrameSize and webSocketMaxBufferSize do not bound decompressed output. A malicious WebSocket peer can send a small compressed message that expands to a very large Netty buffer and exhausts JVM heap. This issue is fixed in version 3.0.14.

Record
CVE-2026-107227
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-409
Updated
2026-11-02
OSVDEBIAN-CVE-2026-107227 7.5

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.2.0 until 3.0.14, WebSocket permessage-deflate decompression is unbounded when compression is enabled. The inbound pipeline aggregates compressed frames before WebSocketClientCompressionHandler inflates them, so webSocketMaxFrameSize and webSocketMaxBufferSize do not bound decompressed output. A malicious WebSocket peer can send a small compressed message that expands to a very large Netty buffer and exhausts JVM heap. This issue is fixed in version 3.0.14.

Record
DEBIAN-CVE-2026-107227
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
Show 5 moreShow less
OSVGHSA-x8v2-478q-2hvg 7.5

AsyncHttpClient: Unbounded WebSocket permessage-deflate decompression enables a decompression-bomb denial of service when compression is enabled

Impact

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.

Who is Impacted

Only applications that enable WebSocket compression with setEnablewebSocketCompression(true), which is off by default, and connect to a WebSocket server that is untrusted, compromised, or reached over cleartext ws://.

Affected versions

  • 3.x: up to and including 3.0.13
  • 2.x: from 2.2.0, when WebSocket compression was added, up to and including 2.16.1

Patches

Fixed in 3.0.14. A new setting, webSocketMaxDecompressedFrameSize (setWebSocketMaxDecompressedFrameSize, or the org.asynchttpclient.webSocketMaxDecompressedFrameSize property), bounds how far a message may inflate, and a message that would go past it fails the connection. It defaults to 128000000 bytes, the same as webSocketMaxBufferSize, so a message is bounded alike whether or not it was compressed; a compressed message that inflates past that, which was accepted before, now fails the connection. With aggregateWebSocketFrameFragments turned off, the bound applies to each frame instead, and fragments are delivered one at a time. Set it lower if you enable compression and do not expect large messages. 0 disables the limit.

The 2.x line is end of life and will not receive a fix. Upgrade to 3.0.14.

Workarounds

Leave WebSocket compression disabled, which is the default.

Details

After the handshake the inbound pipeline is ws-decoder, ws-aggregator, PerMessageDeflateDecoder, ahc-ws: the aggregator, which enforces webSocketMaxBufferSize, sees each message before it is inflated. WebSocketClientCompressionHandler.INSTANCE is built with maxAllocation = 0, which Netty treats as unbounded, and Netty has deprecated it in favour of a constructor that takes a limit. RFC 6455 Section 10.4 asks an implementation to limit the size of a message after reassembly, and under RFC 7692 Section 6.2 the message delivered to the application is the decompressed payload.

This is a different path from the HTTP response decompression fixed under CVE-2026-85721, which never reached the WebSocket pipeline.

Attribution

AI-assisted tools were used to support discovery and analysis.

Record
GHSA-x8v2-478q-2hvg
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400, CWE-409
Updated
2026-11-02
OSVUBUNTU-CVE-2026-107227 7.5

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.2.0 until 3.0.14, WebSocket permessage-deflate decompression is unbounded when compression is enabled. The inbound pipeline aggregates compressed frames before WebSocketClientCompressionHandler inflates them, so webSocketMaxFrameSize and webSocketMaxBufferSize do not bound decompressed output. A malicious WebSocket peer can send a small compressed message that expands to a very large Netty buffer and exhausts JVM heap. This issue is fixed in version 3.0.14.

Record
UBUNTU-CVE-2026-107227
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVCLSA-2026-1792058129 No score

TuxCare security update for org.asynchttpclient:async-http-client (3 CVEs)

TuxCare rebuilt org.asynchttpclient:async-http-client to address 3 CVEs. Fixed in 2.12.1-tuxcare.2.

Record
CLSA-2026-1792058129
Updated
2026-11-02
OSVCLSA-2026-1793887823 No score

TuxCare security update for org.asynchttpclient (16 CVEs)

TuxCare rebuilt 14 org.asynchttpclient packages to address 16 CVEs. Fixed in 2.12.3-tuxcare.2.

Record
CLSA-2026-1793887823
Updated
2026-11-06
OSVROOT-APP-MAVEN-CVE-2026-107227 No score

CVE-2026-107227 in org.asynchttpclient:async-http-client - Patched by Root

Root has patched CVE-2026-107227 in the org.asynchttpclient:async-http-client package for Root:Maven. Multiple fixed versions available.

Record
ROOT-APP-MAVEN-CVE-2026-107227
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
org.asynchttpclient:async-http-client
Maven
3.0.0 to 3.0.13
3.0.14
org.asynchttpclient:async-http-client
Maven
2.2.0 to 2.16.1 None known
org.asynchttpclient:async-http-client
TuxCare:Maven
From an advisory covering 3 CVEs
2.12.1 up to 2.12.1-tuxcare.2, plus listed versions
2.12.1-tuxcare.1
2.12.1-tuxcare.2
org.asynchttpclient:async-http-client
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-bom
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-example
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-guava
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-jdeferred
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-parent
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-registry
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
Show 20 moreShow less
Affected packages
PackageAffectedFixed
org.asynchttpclient:async-http-client-extras-retrofit2
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-rxjava
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-rxjava2
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-simple
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-typesafe-config
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-netty-utils
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-project
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
async-http-client
Debian:12
All versions, plus listed versions
2.12.3-12.12.3-1+deb12u1
None known
org.asynchttpclient:async-http-client
Maven
3.0.0 up to 3.0.14, plus listed versions
3.0.13.0.103.0.113.0.123.0.13
Show 8 moreShow less
3.0.23.0.33.0.43.0.53.0.63.0.73.0.83.0.9
3.0.14
org.asynchttpclient:async-http-client
Maven
2.2.0 to 2.16.1, plus listed versions
2.10.02.10.12.10.22.10.32.10.4
Show 32 moreShow less
2.10.52.11.02.12.02.12.12.12.22.12.32.12.42.14.52.15.02.16.02.2.12.3.02.4.02.4.12.4.22.4.32.4.42.4.52.4.62.4.72.4.82.4.92.5.02.5.12.5.22.5.32.5.42.6.02.7.02.8.02.8.12.9.0
None known
org.asynchttpclient:async-http-client
Root:Maven
before 2.15.0-aikido.1
2.15.0-aikido.13.0.10-aikido.1
io.root.org.asynchttpclient:async-http-client
Root:Maven
before 2.15.0-root.io.1
2.15.0-root.io.13.0.10-root.io.1
async-http-client
Ubuntu:Pro:14.04:LTS
All versions, plus listed versions
1.6.5-11.6.5-21.6.5-2ubuntu0.1~esm1
None known
async-http-client
Ubuntu:16.04:LTS
All versions, plus listed versions
1.6.5-4
None known
async-http-client
Ubuntu:18.04:LTS
All versions, plus listed versions
1.6.5-41.6.5-5
None known
async-http-client
Ubuntu:Pro:20.04:LTS
All versions, plus listed versions
2.6.0-12.6.0-1ubuntu0.1~esm1
None known
async-http-client
Ubuntu:22.04:LTS
All versions, plus listed versions
2.12.2-12.12.3-12.12.3-1ubuntu0.22.04.1
None known
async-http-client
Ubuntu:24.04:LTS
All versions, plus listed versions
2.12.3-12.12.3-1ubuntu0.24.04.1
None known
async-http-client
Ubuntu:26.10
All versions, plus listed versions
2.12.3-1ubuntu1
None known
async-http-client
Ubuntu:26.04:LTS
All versions, plus listed versions
2.12.3-12.12.3-1ubuntu12.12.3-1ubuntu1.1
None known

History

History
RecordedChangedSources
affected, aliasesOSV
affected, facts
affectedOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-107227 is a high vulnerability (CVSS 7.5) in Asynchttpclient Async-http-client, published October 7, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.43%, the 37th percentile. Fixed in org.asynchttpclient:async-http-client 3.0.14.

References

Show 4 moreShow less
MoveEnter Open