CVE-2024-53990
NoneCVSS
—
EPSS
0.7%
Published
Dec 2, 2024
CISA due date
—
Cloudanix analysis
A Java library used for web requests can accidentally mix up login cookies between different users, letting one person see or act as another.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Library
- Class
- Authorization Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The AsyncHttpClient library's self-managed CookieStore silently overwrites explicitly supplied cookies that share the same name with entries already present in the jar, causing HTTP requests to carry cookies belonging to other users in multi-user Java applications.
Why it matters to the business
Multi-tenant services built on this library risk cross-user data exposure or unauthorized actions, increasing privacy incidents and compliance exposure; prevalence across Java HTTP clients heightens the need for prompt upgrades.
How an attack unfolds
An attacker with the ability to influence cookie names or observe multi-user traffic supplies or triggers requests containing duplicate cookie names; the library replaces the intended cookie with one from the shared jar, resulting in the request executing under another user's session without authentication bypass detection.
How to fix it
Upgrade asynchttpclient/async-http-client to a build containing commit 6bd376ad336a237ef02a632df0042d4eb22e2d32 or later; disable the automatic CookieStore or implement explicit per-request cookie isolation until the update is applied.
How to confirm the fix worked
Confirm the library version or commit hash in dependency manifests and runtime classpaths; test cookie handling behavior with duplicate-named cookies under concurrent user sessions to verify isolation is restored.
Typical attack path
- Identify a multi-user Java service using AsyncHttpClient with per-user cookie handling
- Craft or replay HTTP requests that include cookies sharing names with entries already stored in the shared CookieStore
- Trigger the request path so the library performs automatic cookie replacement
- Observe or leverage the resulting request executing with the unintended user's cookies
How to detect it
Review application logs for HTTP requests where cookie values unexpectedly differ from those explicitly set in code; correlate request timestamps with user session boundaries to surface cross-user cookie usage patterns.
What your security team should do
- Immediately inventory all Java applications depending on async-http-client and schedule upgrades to the fixed commit
- Review code paths that pass explicit cookies to AsyncHttpClient and add per-user cookie isolation controls
- Monitor dependency update channels for the next official release containing the fix
The record
The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. When making any HTTP request, the automatically enabled and self-managed CookieStore (aka cookie jar) will silently replace explicitly defined Cookies with any that have the same name from the cookie jar. For services that operate with multiple users, this can result in one user's Cookie being used for another user's requests.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.asynchttpclient:async-http-client | 2.1.0 | 2.12.4 |
| Maven | org.asynchttpclient:async-http-client | 3.0.0.Beta1 | 3.0.1 |
| Chainguard | apache-pulsar | 0 | 4.0.1-r1 |
| Chainguard | apache-pulsar-compat | 0 | 4.0.1-r1 |
| Chainguard | druid | 0 | 34.0.0-r6 |
| Chainguard | druid-compat | 0 | 34.0.0-r6 |
| Chainguard | tez | 0 | 0.10.4-r8 |
| Chainguard | thingsboard | 0 | 3.9-r1 |
| Chainguard | thingsboard-tb-js-executor | 0 | 3.9-r1 |
| Chainguard | thingsboard-tb-mqtt-transport | 0 | 3.9-r1 |
| Chainguard | thingsboard-tb-node | 0 | 3.9-r1 |
| Chainguard | thingsboard-tb-web-ui | 0 | 3.9-r1 |
| Debian:11 | async-http-client | 0 | No fix |
| Debian:12 | async-http-client | 0 | No fix |
| Ubuntu:16.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:18.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:20.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:22.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:24.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:24.10 | async-http-client | 0 | No fix |
| Ubuntu:25.04 | async-http-client | 0 | No fix |
| Ubuntu:25.10 | async-http-client | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | async-http-client | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | async-http-client | 0 | No fix |
| Wolfi | apache-pulsar | 0 | 4.0.1-r1 |
| Wolfi | apache-pulsar-compat | 0 | 4.0.1-r1 |
| Wolfi | druid | 0 | 34.0.0-r6 |
| Wolfi | druid-compat | 0 | 34.0.0-r6 |
| Wolfi | tez | 0 | 0.10.4-r8 |
| Wolfi | thingsboard | 0 | 3.9-r1 |
| Wolfi | thingsboard-tb-js-executor | 0 | 3.9-r1 |
| Wolfi | thingsboard-tb-mqtt-transport | 0 | 3.9-r1 |
| Wolfi | thingsboard-tb-node | 0 | 3.9-r1 |
| Wolfi | thingsboard-tb-web-ui | 0 | 3.9-r1 |
| maven | org.asynchttpclient/async-http-client | 2.1.0 | 2.12.4 |
| maven | org.asynchttpclient/async-http-client | 2.1.0 | 3.0.1 |
| maven | org.asynchttpclient/async-http-client | 3.0.0 | 3.0.1 |
| maven | org.asynchttpclient/async-http-client | 3.0.0.Beta1 | 3.0.1 |
Related vulnerabilities
- CVE-2025-33042 Improper Control of Generation of Code ('Code Injection') vulnerability in Apache Avro… Also affects apache-pulsar
- CVE-2026-1002 The Vert.x Web static handler component cache can be manipulated to deny the access to… Also affects apache-pulsar
- CVE-2025-68161 Apache Log4j does not verify the TLS hostname in its Socket Appender Also affects apache-pulsar
- CVE-2024-29371 In jose4j before 0.9.5, an attacker can cause a Denial-of-Service (DoS) condition by… Also affects apache-pulsar
- CVE-2025-67735 Netty has a CRLF Injection vulnerability in io.netty.handler.codec.http.HttpRequestEncoder Also affects apache-pulsar
- CVE-2025-12383 Eclipse Jersey has a Race Condition Also affects apache-pulsar
- CVE-2025-58056 Netty vulnerable to request smuggling due to incorrect parsing of chunk extensions Also affects apache-pulsar
- CVE-2025-58057 Netty's decoders vulnerable to DoS via zip bomb style attack Also affects apache-pulsar