Skip to main content

AsyncHttpClient EUVDEUVD-2026-97761

| CVE-2026-107226 MEDIUM
Session Fixation (CWE-384)
2026-10-08 https://github.com/AsyncHttpClient/async-http-client GHSA-p2jm-6hj6-9rjg
6.8
CVSS 3.1 · Vendor: https://github.com/AsyncHttpClient/async-http-client
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Control plaintext host under target site
  2. Delivery
    Return Set-Cookie Secure; Domain cookie
  3. Exploit
    Library stores it ignoring scheme
  4. Execution
    Victim issues HTTPS request
  5. Persist
    Attacker cookie sent inside TLS
  6. Impact
    Session fixation or CSRF-token overwrite

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session fixation prevention
Exploitation Conditions

Exploitation requires (1) an application using AsyncHttpClient 2.1.0-2.16.1 or 3.0.0-3.0.13 with the cookie store (CookieStore) enabled, (2) that store being shared across plaintext (http://) and HTTPS origins of the same site, and (3) the attacker being able to answer a plaintext HTTP request for that site - either via a network man-in-the-middle position or, without any network foothold, by controlling a plaintext host under the same registrable domain that sets a Domain cookie. The attacker's planted/overwritten/deleted cookie only causes harm if the HTTPS application actually relies on that cookie for session or CSRF state. Limiting factors: no effect on applications that disable the cookie store or never mix plaintext and HTTPS origins on one store; plaintext loopback (localhost / loopback literals) is intentionally treated as secure so dev servers are not a vector for TLS-set cookies; and the flaw cannot be stopped by the client enforcing __Host- prefixes (it does not), so same-site domain-cookie planting remains possible even after patching unless the app uses __Host- names.

Impact

This is a genuine but conditional integrity flaw, not a drop-in critical. The upstream CVSS:3.1 vector (AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N = 6.8, CWE-384) is internally consistent with the description: no authentication is required (PR:N), but exploitation is not trivial (AC:H) because the attacker must be able to answer a plaintext HTTP response for the target site - either from a network man-in-the-middle position or from a plaintext host under the same registrable domain. Integrity is High (an attacker can replace or delete a Secure cookie, enabling session fixation or CSRF-token overwrite), and Scope is Changed because the harm lands on the separate HTTPS application rather than the client library itself; Confidentiality and Availability are correctly N (the attacker plants a value but does not directly read secrets). No EPSS score was provided, the CVE is NOT in CISA KEV, and no public exploit code is referenced, so there is no public exploit identified at time of analysis. The practical risk is therefore moderate and situational: it matters where an application built on AsyncHttpClient shares one CookieStore across both http:// and https:// origins of the same site and relies on a Secure cookie for session or CSRF state. The AC:H requirement and the need for a same-site plaintext foothold argue against opportunistic mass exploitation; this is a targeted-conditions bug, well-matched to its 6.8 rating rather than under- or over-scored.

Exploit ScenarioDerived

An attacker who controls (or can MITM) a plaintext http:// endpoint under the victim's site - e.g. http://insecure.example.com - returns a Set-Cookie for SID=attacker-value with the Secure and Domain=example.com attributes. Because the library's cookie store ignores the scheme the cookie arrived on, the victim's next request to https://bank.example.com sends the attacker's SID inside TLS, fixing the HTTPS session (or, with Max-Age=0, deleting a cookie the site depends on). No public exploit code is identified, but the technique is fully described in the advisory and requires only the ability to answer one plaintext request (AV:N/AC:H, no auth).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 08, 2026

Plaintext HTTP responses can plant, overwrite, or delete Secure cookies held in AsyncHttpClient's ThreadSafeCookieStore, because the store never considers the scheme a Set-Cookie arrived on, so the attacker's value is subsequently sent back to the HTTPS site inside TLS. Affected are the Maven artifact org.asynchttpclient:async-http-client 3.0.0 through 3.0.13 and 2.1.0 through 2.16.1; exploitation is remote and unauthenticated (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N, 6.8, CWE-384) but conditional - the application must have the cookie store enabled and share one store across plaintext and HTTPS origins of the same site, and the HTTPS application must rely on the affected cookie for session or CSRF state. Concretely this yields session fixation into the HTTPS session, a clobbered CSRF token, or the removal of a cookie the site depends on; there is no confirmed active exploitation (not in CISA KEV) and no public exploit identified at time of analysis, and the severity is tempered by the requirement for a plaintext foothold on the same site (a same-site plaintext host setting a Domain cookie, or a network man-in-the-middle).

RemediationAI

Upgrade the Maven dependency org.asynchttpclient:async-http-client to 3.0.14 - this is the vendor-released patch, referenced at https://github.com/AsyncHttpClient/async-http-client/releases/tag/async-http-client-project-3.0.14 and detailed in the advisory https://github.com/AsyncHttpClient/async-http-client/security/advisories/GHSA-p2jm-6hj6-9rjg (commit 6ec7ee45034d154f502852a962d2891746fb82c1). There is no fix for the 2.x line: it is end of life, so anyone on 2.1.0 through 2.16.1 must move to 3.0.14 or otherwise migrate off the 2.x branch; patching is not an option there. If an immediate upgrade is not possible, the vendor's workaround is to stop sharing one CookieStore between plaintext and HTTPS origins that are not mutually trusted, explicitly including distinct hosts under the same registrable site - the trade-off is that separate stores no longer share any cookie state between those origins, which can break legitimate single-sign-on or cookie-propagation flows that currently depend on a shared jar. Disabling the cookie store entirely also avoids the flaw, at the cost of losing all automatic cookie persistence, so callers must capture and replay cookies themselves. Be aware that the 3.0.14 fix does not prevent an HTTPS host under the same site from setting a domain cookie for a cookie name the request host never sets itself, and the client does not enforce cookie name prefixes, so applications that need that protection should adopt __Host- prefixed cookie names server-side and client-side - a change that requires Path=/ and the absence of a Domain attribute on those cookies. Finally, because exploitation can occur with a same-site plaintext host, verify that no plaintext HTTP endpoint under the application's registrable domain can be answered by untrusted parties, and consider HSTS-style controls at the network edge to remove the plaintext surface entirely.

Affected VersionsENISA

async-http-client 3.0.0, < 3.0.14
async-http-client 2.1.0, ≤ 2.16.1

Affected Packages

maven org.asynchttpclient:async-http-client fix: 3.0.14
euvd async_http_client_2_1_0 no fix
euvd async_http_client_3_0_0 fix: 3.0.14

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in maven, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

AsyncHttpClient is a Java HTTP client library; the vulnerable component is ThreadSafeCookieStore, introduced in the 2.x line at 2.1.0, which implements RFC 6265 cookie storage. Its add(Uri, Cookie) method reduces the incoming request to host and path before storing, so the scheme is discarded and never reaches the code that decides whether a cookie should be kept; get(Uri) does read the scheme, but only to withhold Secure cookies from plaintext requests on retrieval. As a result, two normative rules of draft-ietf-httpbis-rfc6265bis-22 (approved to obsolete RFC 6265, Section 5.7) were unimplemented: step 13 (ignore a Secure cookie unless it arrived over a secure connection) and step 16 (ignore a non-Secure cookie from an insecure connection when it would overlay an existing Secure cookie). This is classified CWE-384 (Session Fixation) because the practical outcome is attacker control of the session identifier the HTTPS server trusts. A second, narrower defect compounded the first: because the step 16 path test is one-way by design, a plaintext SID cookie for Path=/ could legitimately coexist with a Secure SID for Path=/account, and the store returned matching cookies in hash order while RequestBuilderBase.addCookieIfUnset keeps only the first cookie of each name - letting an attacker influence which value was sent by padding a plaintext response with filler cookies. The 3.0.14 fix introduces a secure-context notion (HTTPS, WSS, or plaintext to loopback), a shadowsSecureCookie check applied before the expiry branch so Max-Age=0 cannot delete a Secure cookie, eviction ordering that puts non-Secure cookies first, and a deterministic retrieval order: on a secure request, cookies received in a secure context first, then the request host's own cookies before parent-domain cookies, then longer paths first. Loopback handling is deliberately narrow - exactly localhost or a parsed loopback address literal (strict parsing fails closed, so 127.0.0.256 is treated as a name) counts as a secure context for cookies the dev server set itself, while a Secure cookie that arrived over TLS is never sent over plaintext, loopback included. Note also that neither the fix nor the client enforces cookie name prefixes, so an HTTPS host under the same site can still set a domain cookie for a name the request host never sets itself; only an application-level __Host- prefix prevents that.

Know when Session Fixation gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/AsyncHttpClient/async-http-client) PRIMARY 6.8 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
vuln.today AI 6.8 MEDIUM

Unauthenticated (PR:N) network attack, but requires a same-site plaintext response position (AC:H); integrity-only impact (I:H) landing on the separate HTTPS application (S:C), no confidentiality or availability loss.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N

Primary rating from Vendor (https://github.com/AsyncHttpClient/async-http-client).

CVSS VectorVendor: https://github.com/AsyncHttpClient/async-http-client

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
None
Integrity
High
Availability
None

DescriptionCVE.org

Impact

The cookie store ignores the scheme a Set-Cookie arrived on. draft-ietf-httpbis-rfc6265bis-22 (approved to obsolete RFC 6265, in the RFC Editor queue) Section 5.7 requires a user agent to ignore a cookie with the Secure attribute unless it arrived over a secure connection (step 13), and to ignore a non-Secure cookie from an insecure connection when it would overlay a Secure cookie the store already holds (step 16). Neither rule is implemented. The only Secure handling is on retrieval, where a Secure cookie is not sent over plaintext.

So anyone who can answer a plaintext request to a site can set, replace or delete the site's Secure cookies, and the next HTTPS request carries the attacker's value back inside TLS:

http://example.com   ->  Set-Cookie: SID=attacker-value; Secure; Path=/
https://example.com  ->  Cookie: SID=attacker-value

This does not need an attacker on the network path. A plaintext host under the same site reaches the HTTPS one by setting a domain cookie:

http://insecure.example.com  ->  Set-Cookie: SID=attacker-value; Secure; Domain=example.com; Path=/
https://bank.example.com     ->  Cookie: SID=attacker-value

A plaintext Set-Cookie of the same name, domain and path overwrites a Secure cookie, and one with Max-Age=0 deletes it. Depending on what the application does with the cookie, this is session fixation into the HTTPS session, an overwritten CSRF token, or the removal of a cookie the site relies on. Unlike GHSA-qjr7-w8pj-pmv9, which can only add a cookie, this replaces or deletes one, hence Integrity: High; the harm lands on the HTTPS site, hence Scope: Changed.

Affected versions

  • 3.x: up to and including 3.0.13
  • 2.x: from 2.1.0, when the cookie store was introduced, up to and including 2.16.1

Patches

Fixed in 3.0.14 on the 3.x line. A cookie with the Secure attribute is ignored unless the request was secure, and a non-Secure cookie from a request that did not use TLS is ignored when it would overlay a Secure cookie of the same name whose path its own path falls under. A plaintext response can therefore no longer plant, overwrite or delete a Secure cookie.

When several cookies of one name match a request, the client sends only the first, so the order in which the store returns them decides which one is used. That order is now: on a secure request, cookies received in a secure context (HTTPS, WSS or plaintext loopback) first; then the request host's own cookies before cookies set for a parent domain; then, within one host, longer paths first. A plaintext attacker cannot outrank a cookie the site set over HTTPS by ordering or padding its own cookies, or by setting one before the site sets its own.

Plaintext requests to localhost, or to an address literal that is a loopback address, count as secure, so a development server that sets Secure cookies over http://localhost gets them back. This is limited to the cookies such a server set itself: a Secure cookie that arrived over HTTPS is never sent over plaintext, loopback included, and a plaintext loopback port cannot overlay it. Numeric spellings that are not address literals, such as 127.0.0.256, and names under localhost are not treated as loopback, because the client resolves them as names.

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

Workarounds

Do not share one CookieStore between plaintext and HTTPS origins that are not mutually trusted, including hosts under the same site. Disabling the cookie store also avoids it.

Details

ThreadSafeCookieStore.add(Uri, Cookie) reduces the request to its host and path before storing, so the scheme never reaches the code that decides whether to keep a cookie. get(Uri) does read it, but only to leave Secure cookies out of plaintext requests.

A narrower form survives the two storage rules on their own. The step 16 path test is one-way by design, so a plaintext SID for Path=/ is legitimately stored beside a Secure SID for Path=/account, and both match a request under /account. The store returned matching cookies in hash order, and the client keeps only the first cookie of each name when it builds the request (RequestBuilderBase.addCookieIfUnset), so an attacker could decide which one was sent, for example by padding one plaintext response with filler cookies. The ordering described above closes it.

The fix does not stop an HTTPS host under the same site from setting a domain cookie for a name the request host never sets itself. Only a __Host- cookie name prefix prevents that, and the client does not enforce cookie name prefixes.

Attribution

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

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 24 maven packages depend on org.asynchttpclient:async-http-client (15 direct, 9 indirect)

Ecosystem-wide dependent count for version 3.0.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 72% exploitable
Prevalence
Medium
widely-used Java HTTP client library, but not a universal dependency
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

CVE-2026-102489 CRITICAL POC
9.4 Sep 30

Session hijacking in self-hosted Zammad 6.3.0 through 6.5.4 allows remote, unauthenticated attackers to take over a legi

CVE-2017-12965 CRITICAL POC
9.8 Aug 23

Session fixation vulnerability in Apache2Triad 1.5.4 allows remote attackers to hijack web sessions via the PHPSESSID pa

CVE-2025-28242 CRITICAL POC
9.8 Apr 18

Improper session management in the /login_ok.htm endpoint of DAEnetIP4 METO v1.25 allows attackers to execute a session

CVE-2022-40916 CRITICAL POC
9.8 Feb 06

Tiny File Manager v2.4.7 and below is vulnerable to session fixation. Rated critical severity (CVSS 9.8), this vulnerabi

CVE-2025-45949 CRITICAL POC
9.8 Apr 28

A critical vulnerability was found in PHPGurukul User Registration & Login and User Management System V3.3 in the /login

CVE-2023-48929 CRITICAL POC
9.8 Dec 08

Franklin Fueling Systems System Sentinel AnyWare (SSA) version 1.6.24.492 is vulnerable to Session Fixation. Rated criti

CVE-2023-41012 CRITICAL POC
9.8 Sep 05

An issue in China Mobile Communications China Mobile Intelligent Home Gateway v.HG6543C4 allows a remote attacker to exe

CVE-2023-31498 CRITICAL POC
9.8 May 11

A privilege escalation issue was found in PHP Gurukul Hospital Management System In v.4.0 allows a remote attacker to ex

CVE-2022-3269 CRITICAL POC
9.8 Sep 23

Session Fixation in GitHub repository ikus060/rdiffweb prior to 2.4.7. Rated critical severity (CVSS 9.8), this vulnerab

CVE-2021-39290 CRITICAL POC
9.8 Aug 23

Certain NetModule devices allow Limited Session Fixation via PHPSESSID. Rated critical severity (CVSS 9.8), this vulnera

CVE-2020-11729 CRITICAL POC
9.8 Apr 15

An issue was discovered in DAViCal Andrew's Web Libraries (AWL) through 0.60. Rated critical severity (CVSS 9.8), this v

CVE-2019-18418 CRITICAL POC
9.8 Oct 24

clonos.php in ClonOS WEB control panel 19.09 allows remote attackers to gain full access via change password requests be

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy