highCVSS 7.5Vulnerability

CVE-2026-85721

### Impact With automatic response decompression enabled (the default), the HTTP/1.1 path decompresses response bodies with no limit on the total output size. A hostile or compromised server, or an attacker who can change a response in transit, can send a small compressed body that inflates without bound in memory, exhausting the client's heap and causing an OutOfMemoryError. gzip, deflate and snappy are always available as vectors; brotli and zstd apply only when those optional codecs are on the classpath. ### Affected versions * 3.x: up to and including 3.0.11 * 2.x: up to and including 2.16.0 The HTTP/2 path carries its own limit from 3.0.11 onward. On 3.0.8, 3.0.9 and 3.0.10 the HTTP/2 decompressor is also unbounded, so on those versions switching to HTTP/2 is not a mitigation. ### Patches Fixed in 3.0.12 on the 3.x line and in 2.16.1 on the 2.x line. The fix counts the decompressed bytes produced for each response and fails the response once the configured maximum is exceeded, so the limit applies to the whole body rather than to any single chunk. ### Workarounds On 3.x, disable automatic decompression (setEnableAutomaticDecompression(false)) and decompress manually with your own size limit. The 2.x line has no such setting; the decompressor is installed unconditionally, so the only option there is to remove the inflater handler through httpAdditionalChannelInitializer. On either line, running the client behind a proxy that caps response sizes also works. ### Details ChannelManager.newHttpContentDecompressor() created Netty's HttpContentDecompressor without any bound, and Netty's own maxAllocation parameter limits a single decode step rather than the accumulated size of a response, so it cannot bound a decompression bomb delivered as many small chunks. The fix tracks the accumulated decompressed size per response instead. Note that 3.0.12 is itself affected by a separate issue, GHSA-rqf5-2wxv-rjf4, where a Digest challenge the client cannot read downgrade

Properties

ghsa_id
GHSA-7grg-jcf7-rpmx
summary
AsyncHttpClient's unbounded HTTP/1.1 response decompression enables a decompression-bomb denial of service
severity
high
cvss_score
7.5
cve_id
CVE-2026-85721
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
signal_observed_at
2026-09-17T21:32:39+00:00
is_ghsa_only
false
ghsa_published
2026-09-17T17:18:56Z
source_url
https://github.com/advisories/GHSA-7grg-jcf7-rpmx
ghsa_updated
2026-09-17T17:18:58Z

Related Entities (5)

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]maven/org.asynchttpclient:async-http-client

AFFECTS (1)

[Software]maven/org.asynchttpclient:async-http-client

HAS_WEAKNESS (2)

[Weakness]Uncontrolled Resource Consumption
[Weakness]Improper Handling of Highly Compressed Data (Data Amplification)

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-85721 (CVSS 7.5) — Ninja Signal Threat Intelligence | Ninja Signal