All vulnerabilities
CVE-2026-107228GHSA-2jwh-9rmr-j4xf

org.asynchttpclient:async-http-client: AsyncHttpClient CookieStore Silently Overrides Caller's Explicit Cookie Header via setHeader (Bypass of CVE-2024-53990 Fix)

AsyncHttpClient org.asynchttpclient:async-http-clientmavenLibraries & packages
CVSS
6.8Medium
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.30%Chance of exploitation activity in the next 30 days, higher than 21% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in3.0.14Fixed versionGitHub
Published7 Oct 2026Updated 8 Oct 2026CVE List

What fixes it

  • 3.0.14org.asynchttpclient:async-http-client, mavenGitHub<dependency><groupId>org.asynchttpclient</groupId><artifactId>async-http-client</artifactId><version>3.0.14</version></dependency>
  • 3.0.14org.asynchttpclient:async-http-client, MavenOSV<dependency><groupId>org.asynchttpclient</groupId><artifactId>async-http-client</artifactId><version>3.0.14</version></dependency>

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

Impact

With the cookie store enabled, which is the default, a Cookie header that the caller sets on a request with setHeader or addHeader is thrown away whenever the store holds any cookie for the request's origin: the request's cookie list is written into that header afterwards and replaces it. CVE-2024-53990 fixed the same problem for cookies added with addCookie, but that fix works on the cookie list, and a header set directly never reaches it.

This is not limited to a cookie of the same name. A store cookie of any name erases the caller's header, so a request meant to carry the caller's session cookie goes out with only the store's cookies, and where the store has a cookie of the caller's name, the store's value is sent instead.

It matters most where one client acts for several users. An application that puts each user's session on the request itself, and shares one client and its default cookie store, sends one user's request with a session cookie the store took from a response to another user. The request runs as that other user, so a user of such an application can have their request served under someone else's session, or someone else's under theirs.

Affected versions

  • 3.x: up to and including 3.0.13
  • 2.x: from 2.1.0 up to and including 2.16.1

Patches

Fixed in 3.0.14. The store's cookies are added to a caller's Cookie header instead of replacing it, and where both name the same cookie the caller's is kept. The caller's text is kept as written, and several Cookie headers are folded into one, as RFC 6265 Section 5.4 requires.

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

Workarounds

Where requests carry per-user cookies, use a separate client per user, or disable the cookie store with setCookieStore(null).

References

Incomplete fix of CVE-2024-53990 (GHSA-mfj5-cf8g-g2fv). Reported by @1diot9.

Attribution

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

Text from GitHub Advisory Database

Affected versions 62

  • org.asynchttpclient:async-http-client, maven>= 3.0.0, <= 3.0.13GitHub
  • org.asynchttpclient:async-http-client, maven>= 2.1.0, <= 2.16.1GitHub
  • async-http-clientaffected: >= 3.0.0, < 3.0.14CVE List
  • async-http-clientaffected: >= 2.1.0, <= 2.16.1CVE List
  • org.asynchttpclient:async-http-client, Mavenfrom 3.0.0, fixed in 3.0.14OSV
  • org.asynchttpclient:async-http-client, Maven3.0.0OSV
  • org.asynchttpclient:async-http-client, Maven3.0.1OSV
  • org.asynchttpclient:async-http-client, Maven3.0.10OSV
  • org.asynchttpclient:async-http-client, Maven3.0.11OSV
  • org.asynchttpclient:async-http-client, Maven3.0.12OSV
  • org.asynchttpclient:async-http-client, Maven3.0.13OSV
  • org.asynchttpclient:async-http-client, Maven3.0.2OSV
  • org.asynchttpclient:async-http-client, Maven3.0.3OSV
  • org.asynchttpclient:async-http-client, Maven3.0.4OSV
  • org.asynchttpclient:async-http-client, Maven3.0.5OSV
  • org.asynchttpclient:async-http-client, Maven3.0.6OSV
  • org.asynchttpclient:async-http-client, Maven3.0.7OSV
  • org.asynchttpclient:async-http-client, Maven3.0.8OSV
  • org.asynchttpclient:async-http-client, Maven3.0.9OSV
  • org.asynchttpclient:async-http-client, Mavenfrom 2.1.0, through 2.16.1OSV
  • org.asynchttpclient:async-http-client, Maven2.1.0OSV
  • org.asynchttpclient:async-http-client, Maven2.1.1OSV
  • org.asynchttpclient:async-http-client, Maven2.1.2OSV
  • org.asynchttpclient:async-http-client, Maven2.10.0OSV
  • org.asynchttpclient:async-http-client, Maven2.10.1OSV
  • org.asynchttpclient:async-http-client, Maven2.10.2OSV
  • org.asynchttpclient:async-http-client, Maven2.10.3OSV
  • org.asynchttpclient:async-http-client, Maven2.10.4OSV
  • org.asynchttpclient:async-http-client, Maven2.10.5OSV
  • org.asynchttpclient:async-http-client, Maven2.11.0OSV
  • org.asynchttpclient:async-http-client, Maven2.12.0OSV
  • org.asynchttpclient:async-http-client, Maven2.12.1OSV
  • org.asynchttpclient:async-http-client, Maven2.12.2OSV
  • org.asynchttpclient:async-http-client, Maven2.12.3OSV
  • org.asynchttpclient:async-http-client, Maven2.12.4OSV
  • org.asynchttpclient:async-http-client, Maven2.14.5OSV
  • org.asynchttpclient:async-http-client, Maven2.15.0OSV
  • org.asynchttpclient:async-http-client, Maven2.16.0OSV
  • org.asynchttpclient:async-http-client, Maven2.16.1OSV
  • org.asynchttpclient:async-http-client, Maven2.2.0OSV
  • org.asynchttpclient:async-http-client, Maven2.2.1OSV
  • org.asynchttpclient:async-http-client, Maven2.3.0OSV
  • org.asynchttpclient:async-http-client, Maven2.4.0OSV
  • org.asynchttpclient:async-http-client, Maven2.4.1OSV
  • org.asynchttpclient:async-http-client, Maven2.4.2OSV
  • org.asynchttpclient:async-http-client, Maven2.4.3OSV
  • org.asynchttpclient:async-http-client, Maven2.4.4OSV
  • org.asynchttpclient:async-http-client, Maven2.4.5OSV
  • org.asynchttpclient:async-http-client, Maven2.4.6OSV
  • org.asynchttpclient:async-http-client, Maven2.4.7OSV
  • org.asynchttpclient:async-http-client, Maven2.4.8OSV
  • org.asynchttpclient:async-http-client, Maven2.4.9OSV
  • org.asynchttpclient:async-http-client, Maven2.5.0OSV
  • org.asynchttpclient:async-http-client, Maven2.5.1OSV
  • org.asynchttpclient:async-http-client, Maven2.5.2OSV
  • org.asynchttpclient:async-http-client, Maven2.5.3OSV
  • org.asynchttpclient:async-http-client, Maven2.5.4OSV
  • org.asynchttpclient:async-http-client, Maven2.6.0OSV
  • org.asynchttpclient:async-http-client, Maven2.7.0OSV
  • org.asynchttpclient:async-http-client, Maven2.8.0OSV
  • org.asynchttpclient:async-http-client, Maven2.8.1OSV
  • org.asynchttpclient:async-http-client, Maven2.9.0OSV

References 5