CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-55688

CVE-2026-55688: Cookie Tossing / Cookie Injection Vulnerability in AsyncHttpClient

Alon Barad
Alon Barad
Software Engineer

Aug 27, 2026·5 min read·3 visits

Executive Summary (TL;DR)

AsyncHttpClient versions prior to 2.16.0 and 3.0.11 fail to perform origin domain validation when storing cookies. This allows an attacker-influenced server to inject cookies for arbitrary domains, which are subsequently sent to trusted servers, leading to potential session fixation or CSRF bypass.

CVE-2026-55688 is a medium-severity cookie injection vulnerability in the AsyncHttpClient (AHC) library. Due to a failure to validate the domain attribute against the origin server during cookie handling, applications using a shared AHC client instance are vulnerable to cookie-tossing attacks.

Vulnerability Overview

AsyncHttpClient (AHC) is a widely used Java library designed to execute HTTP requests asynchronously. The library is commonly integrated into backend services, microservices, web scrapers, and API gateways to execute outbound connections.

By default, AHC implements a shared cookie management system utilizing the ThreadSafeCookieStore class. This shared state model introduces a significant attack surface if a single client instance is reused to interact with both trusted resources and external, attacker-influenced endpoints.

Under default conditions, the HTTP client should strictly isolate cookie storage based on origin boundaries. When this boundary isolation fails, the client is exposed to cookie injection techniques, enabling unauthorized configuration of client-side application states across different security domains.

Root Cause Analysis

The root cause of CVE-2026-55688 is the library's omission of RFC 6265 Section 5.3 Step 6 verification during the parsing and storing of HTTP cookies. RFC 6265 governs how HTTP state management mechanisms must behave. Specifically, it mandates that an agent must reject cookies whose Domain attribute does not domain-match the request URI's host.

Prior to the patch, the ThreadSafeCookieStore.add method accepted the domain attribute specified in the server's Set-Cookie header without comparing it against the requesting host's domain. When the store processed the incoming metadata, it immediately mapped the parsed cookie to the domain claimed by the Set-Cookie header itself, rather than restricting it to the domain of the originating server.

Consequently, an untrusted server could register a cookie for an unrelated target domain. When the client subsequently initialized a request to the target domain, the shared ThreadSafeCookieStore retrieved the injected cookie and appended it to the outgoing HTTP headers.

Code Analysis

The vulnerability resided in ThreadSafeCookieStore.java. In the vulnerable implementation, the add method accepted incoming cookies and assigned their storage key directly using the parsed domain attribute.

// Vulnerable Implementation (Before Fix)
private void add(String requestDomain, String requestPath, Cookie cookie) {
    AbstractMap.SimpleEntry<String, Boolean> pair = cookieDomain(cookie.domain(), requestDomain);
    String keyDomain = pair.getKey();
    boolean hostOnly = pair.getValue();
    
    // Vulnerable code lacked domain-matching validation.
    // Any domain specified in the Set-Cookie header was processed directly.
    
    String keyPath = cookiePath(cookie.path(), requestPath);
    CookieKey key = new CookieKey(cookie.name().toLowerCase(), keyPath);
    // ... processes storage without verifying requestDomain against keyDomain ...
}

The fix, introduced in PR #2196 and PR #2199, added standard validation to reject mismatches.

// Patched Implementation (With Validation Guard)
private static boolean domainsMatch(String cookieDomain, String requestDomain) {
    return requestDomain.equals(cookieDomain) || requestDomain.endsWith('.' + cookieDomain);
}
 
private void add(String requestDomain, String requestPath, Cookie cookie) {
    AbstractMap.SimpleEntry<String, Boolean> pair = cookieDomain(cookie.domain(), requestDomain);
    String keyDomain = pair.getKey();
    boolean hostOnly = pair.getValue();
 
    // RFC 6265 Section 5.3 Step 6 verification
    // Rejects the cookie if the domain attribute does not domain-match the request host
    if (!hostOnly && !domainsMatch(keyDomain, requestDomain)) {
        return;
    }
 
    String keyPath = cookiePath(cookie.path(), requestPath);
    CookieKey key = new CookieKey(cookie.name().toLowerCase(), keyPath);
    // ... processes validated storage ...
}

While the patch prevents basic domain mismatches, it does not include Public Suffix List (PSL) validation, which represents an architectural limitation in multi-tenant environments.

Exploitation Methodology

An exploitation flow requires that the victim client application uses a single, shared AsyncHttpClient instance to process requests to both an attacker-controlled endpoint and a targeted secure domain.

First, the client application issues an HTTP request to http://www.attacker.com/. The attacker's server responds with an HTTP status code and a malicious header payload: Set-Cookie: session_id=evil_attacker_session; Domain=victim.com; Path=/.

Second, the vulnerable ThreadSafeCookieStore parses this response. Because of the missing validation check, AHC indexes this cookie under the domain key victim.com.

Third, when the client subsequently initiates a legitimate request to https://victim.com/, AHC queries the ThreadSafeCookieStore. The engine retrieves the injected cookie and injects it into the outbound request's headers, thereby compromising downstream authentication or session mechanisms.

Impact Assessment & Patch Limitations

The CVSS Base Score is evaluated at 4.0 (Medium) due to the high complexity required to execute the attack, as it relies on the execution of multiple sequentially targeted requests. However, the scope of the vulnerability is changed (S:C), meaning the compromise occurs across distinct security authorities.

Successful exploitation can facilitate session fixation attacks where the attacker pre-determines the session identifier of a client communicating with a secure server. Additionally, this allows attackers to overwrite critical anti-CSRF token cookies, rendering web interfaces susceptible to cross-site request forgery.

Furthermore, because the domainsMatch helper function uses a simple .endsWith() matching mechanism, it lacks verification against the Public Suffix List. In multi-tenant systems utilizing shared suffixes (e.g., github.io or herokuapp.com), an attacker hosting an application on a tenant subdomain can still toss cookies to sister subdomains, posing continued risks in multi-tenant configurations.

Official Patches

AsyncHttpClientGHSA Security Advisory Details
AsyncHttpClientPR resolving cookie domain validation bug in 3.x branch
AsyncHttpClientPR resolving cookie domain validation bug in 2.x branch

Fix Analysis (2)

Technical Appendix

CVSS Score
4.0/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:L/A:N
EPSS Probability
0.33%
Top 75% most exploited

Affected Systems

AsyncHttpClient versions 2.0.0 through 2.15.4AsyncHttpClient versions 3.0.0.Beta1 through 3.0.10

Affected Versions Detail

Product
Affected Versions
Fixed Version
async-http-client
AsyncHttpClient
>= 2.0.0, < 2.16.02.16.0
async-http-client
AsyncHttpClient
>= 3.0.0.Beta1, < 3.0.113.0.11
AttributeDetail
CWE IDCWE-1275, CWE-20, CWE-565
Attack VectorNetwork (AV:N)
CVSS v3.1 Score4.0
EPSS Score0.0033
Exploit Statuspoc
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1539Steal Web Session Cookie
Credential Access
T1556Modify Authentication Process
Defense Evasion
CWE-1275
Sensitive Cookie with Improper SameSite Attribute

Sensitive Cookie with Improper SameSite Attribute / Improper Input Validation

Vulnerability Timeline

Maintainer commits the core fix to the 3.x branch
2026-06-14
Contributor backports the fix to the 2.x branch
2026-06-15
CVE Advisory and GitHub Security Advisory Published
2026-07-01
NVD Record updated with final CVSS 3.1 metrics
2026-08-06

References & Sources

  • [1]NVD - CVE-2026-55688 Detail
  • [2]Debian LTS Announcement Advisory

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•40 minutes ago•CVE-2026-54511
8.6

CVE-2026-54511: Log Injection and Structured Data Key Injection in @logtape/syslog

CVE-2026-54511 is a critical security vulnerability in the @logtape/syslog package, which serves as the syslog sink for the LogTape logging library. The flaw is caused by a failure to neutralize C0 control characters in structured data values and to validate keys against RFC 5424 SD-NAME specifications when structured data output is enabled. Remote attackers can leverage this defect to terminate TCP syslog frames and append completely forged syslog records to downstream collectors, compromising the integrity of audit trails and SIEM databases.

Alon Barad
Alon Barad
0 views•6 min read
•about 2 hours ago•CVE-2026-54786
5.0

CVE-2026-54786: Host File Descriptor Exhaustion in Wasmtime WASIp1 Runtime

A resource leak vulnerability in Wasmtime's WASIp1 native implementation of the fd_renumber system call allows guest WebAssembly applications to leak host file descriptors, ultimately leading to process-wide Denial of Service (DoS) via resource exhaustion.

Amit Schendel
Amit Schendel
2 views•8 min read
•about 4 hours ago•GHSA-93QJ-5Q5V-3C2H
0.0

GHSA-93QJ-5Q5V-3C2H: Embedded Malicious Code in pantheon-agents PyPI Packages

A supply-chain compromise affecting the pantheon-agents PyPI package, where versions 0.6.1 and 0.6.2 were uploaded with malicious payloads that exfiltrate sensitive environment variables and credentials.

Alon Barad
Alon Barad
6 views•5 min read
•about 5 hours ago•GHSA-X287-5C68-36WP
7.1

GHSA-X287-5C68-36WP: Broken Object-Level Authorization in OpenWISP IPAM Django Admin

A broken object-level authorization (BOLA) vulnerability exists in the Django Admin custom export view of OpenWISP IPAM. This flaw allows a multi-tenancy restricted staff user to export subnets and associated IP addresses belonging to different organizations by supplying a targeted subnet identifier in the export request.

Alon Barad
Alon Barad
3 views•6 min read
•about 6 hours ago•CVE-2026-54563
7.1

CVE-2026-54563: Path Traversal and Incorrect Authorization in Cloudreve WebDAV Component

A high-severity path traversal vulnerability in Cloudreve's WebDAV component allows authenticated users with scoped WebDAV credentials to bypass directory containment limits and access unauthorized filesystem areas.

Alon Barad
Alon Barad
3 views•5 min read
•about 7 hours ago•CVE-2026-54606
8.5

CVE-2026-54606: DOM-based Cross-Site Scripting via Programmatic Script Recreation in SunEditor Embed Plugin

A DOM-based Cross-Site Scripting (XSS) vulnerability was identified in SunEditor before version 3.1.4. The Embed plugin programmatically recreated and mounted script elements from raw HTML embed code, permitting remote attackers to execute arbitrary JavaScript within a user's browser session.

Amit Schendel
Amit Schendel
3 views•6 min read