CVE-2026-85721: AsyncHttpClient unbounded HTTP/1.1 response decompression denial of service

CVE-2026-85721 · Severity: high · CVSS 7.5 · Published 2026-09-17

AsyncHttpClient, a popular Java library for making HTTP requests, decompresses response bodies without size limits by default. An attacker controlling or intercepting a server response can send a small compressed file that expands dramatically in memory, exhausting the client application's heap and crashing it. This impacts any application using AsyncHttpClient for external API calls or web requests.

Technologies: AsyncHttpClient, org.asynchttpclient:async-http-client (Maven). Vendors: AsyncHttpClient, Maven.

Quick answers

Is CVE-2026-85721 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-85721 being exploited in the wild.
How severe is CVE-2026-85721?
High severity, with a CVSS score of 7.5, published 17 September 2026.
Which products and versions are affected?
AsyncHttpClient 3.x up to and including 3.0.11; 2.x up to and including 2.16.0; org.asynchttpclient:async-http-client (Maven) ECOSYSTEM:introduced=3.0.0,fixed=3.0.12.
Is there a fix for CVE-2026-85721?
Yes. org.asynchttpclient:async-http-client (Maven): upgrade to 3.0.12 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-85721 attacked?
It is attacked over the network.
Am I affected by CVE-2026-85721?
Check whether you run AsyncHttpClient or org.asynchttpclient:async-http-client (Maven) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • org.asynchttpclient:async-http-client (Maven): upgrade to 3.0.12 or later
    # set org.asynchttpclient:async-http-client to 3.0.12 in your pom.xml or build.gradle

Technical details

The vulnerability is a decompression-bomb denial of service in AsyncHttpClient's HTTP/1.1 response decompression path. The ChannelManager.newHttpContentDecompressor() method creates Netty's HttpContentDecompressor without any cumulative size bound; Netty's maxAllocation parameter only limits individual decode steps, not the total decompressed output. A remote attacker (or a compromised/hostile server) can send a small gzip-, deflate-, snappy-, brotli-, or zstd-compressed response that decompresses to massive size across multiple chunks, causing OutOfMemoryError. The fix, available in 3.0.12 and 2.16.1, tracks accumulated decompressed bytes per response and rejects bodies exceeding a configured limit. Versions 3.0.8–3.0.10 also have an unbounded HTTP/2 decompressor.

Affected products

  • AsyncHttpClient AsyncHttpClient 3.x up to and including 3.0.11; 2.x up to and including 2.16.0

Identifiers

  • CVE-2026-85721
  • GHSA-7grg-jcf7-rpmx

Timeline

  • 2026-09-17: disclosed: GHSA-7grg-jcf7-rpmx published
  • 2026-09-17: patched: Fixed in AsyncHttpClient 3.0.12 (3.x line) and 2.16.1 (2.x line)

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.