Every CVE Search/ Get API key

CVE-2026-107226

AsyncHttpClient: Cookies received over plaintext HTTP can plant, overwrite or delete Secure cookies set over HTTPS

6.8 MediumFix available

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.1.0 until 3.0.14, the default ThreadSafeCookieStore does not retain whether a Set-Cookie response used a secure transport. It accepts Secure cookies received over plaintext and permits insecure cookies to overlay or delete existing Secure cookies with matching scope. An attacker controlling a plaintext same-site response can consequently plant, replace, or remove cookie state later sent to an HTTPS origin, enabling session fixation, CSRF-token replacement, or loss of security-relevant state. This issue is fixed in version 3.0.14.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
High
Availability
None

Exploit likelihood

0.29%Down 0.1 points since Oct 13, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.8

AsyncHttpClient: Cookies received over plaintext HTTP can plant, overwrite or delete Secure cookies set over HTTPS

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.1.0 until 3.0.14, the default ThreadSafeCookieStore does not retain whether a Set-Cookie response used a secure transport. It accepts Secure cookies received over plaintext and permits insecure cookies to overlay or delete existing Secure cookies with matching scope. An attacker controlling a plaintext same-site response can consequently plant, replace, or remove cookie state later sent to an HTTPS origin, enabling session fixation, CSRF-token replacement, or loss of security-relevant state. This issue is fixed in version 3.0.14.

Record
CVE-2026-107226
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Weakness
CWE-384, CWE-693
Updated
2026-11-02
EUVDEUVD-2026-97761 6.8

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.1.0 until 3.0.14, the default ThreadSafeCookieStore does not retain whether a Set-Cookie response used a secure transport. It accepts Secure cookies received over plaintext and permits insecure cookies to overlay or delete existing Secure cookies with matching scope. An attacker controlling a plaintext same-site response can consequently plant, replace, or remove cookie state later sent to an HTTPS origin, enabling session fixation, CSRF-token replacement, or loss of security-relevant state. This issue is fixed in version 3.0.14.

Record
EUVD-2026-97761
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-p2jm-6hj6-9rjg 6.8

AsyncHttpClient: Cookies received over plaintext HTTP can plant, overwrite or delete Secure cookies set over HTTPS

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…

Record
GHSA-p2jm-6hj6-9rjg
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Weakness
CWE-384, CWE-693
Updated
2026-11-02
NVD 6.8

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.1.0 until 3.0.14, the default ThreadSafeCookieStore does not retain whether a Set-Cookie response used a secure transport. It accepts Secure cookies received over plaintext and permits insecure cookies to overlay or delete existing Secure cookies with matching scope. An attacker controlling a plaintext same-site response can consequently plant, replace, or remove cookie state later sent to an HTTPS origin, enabling session fixation, CSRF-token replacement, or loss of security-relevant state. This issue is fixed in version 3.0.14.

Record
CVE-2026-107226
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Weakness
CWE-384, CWE-693
Updated
2026-11-02
OSV 6.8

AsyncHttpClient: Cookies received over plaintext HTTP can plant, overwrite or delete Secure cookies set over HTTPS

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.1.0 until 3.0.14, the default ThreadSafeCookieStore does not retain whether a Set-Cookie response used a secure transport. It accepts Secure cookies received over plaintext and permits insecure cookies to overlay or delete existing Secure cookies with matching scope. An attacker controlling a plaintext same-site response can consequently plant, replace, or remove cookie state later sent to an HTTPS origin, enabling session fixation, CSRF-token replacement, or loss of security-relevant state. This issue is fixed in version 3.0.14.

Record
CVE-2026-107226
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Weakness
CWE-384, CWE-693
Updated
2026-11-02
OSVDEBIAN-CVE-2026-107226 6.8

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.1.0 until 3.0.14, the default ThreadSafeCookieStore does not retain whether a Set-Cookie response used a secure transport. It accepts Secure cookies received over plaintext and permits insecure cookies to overlay or delete existing Secure cookies with matching scope. An attacker controlling a plaintext same-site response can consequently plant, replace, or remove cookie state later sent to an HTTPS origin, enabling session fixation, CSRF-token replacement, or loss of security-relevant state. This issue is fixed in version 3.0.14.

Record
DEBIAN-CVE-2026-107226
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Updated
2026-11-02
Show 4 moreShow less
OSVGHSA-p2jm-6hj6-9rjg 6.8

AsyncHttpClient: Cookies received over plaintext HTTP can plant, overwrite or delete Secure cookies set over HTTPS

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…

Record
GHSA-p2jm-6hj6-9rjg
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Weakness
CWE-384, CWE-693
Updated
2026-11-02
OSVUBUNTU-CVE-2026-107226 6.8

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. From 2.1.0 until 3.0.14, the default ThreadSafeCookieStore does not retain whether a Set-Cookie response used a secure transport. It accepts Secure cookies received over plaintext and permits insecure cookies to overlay or delete existing Secure cookies with matching scope. An attacker controlling a plaintext same-site response can consequently plant, replace, or remove cookie state later sent to an HTTPS origin, enabling session fixation, CSRF-token replacement, or loss of security-relevant state. This issue is fixed in version 3.0.14.

Record
UBUNTU-CVE-2026-107226
CVSS 3.1
6.8 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N
Updated
2026-11-02
OSVCLSA-2026-1792058129 No score

TuxCare security update for org.asynchttpclient:async-http-client (3 CVEs)

TuxCare rebuilt org.asynchttpclient:async-http-client to address 3 CVEs. Fixed in 2.12.1-tuxcare.2.

Record
CLSA-2026-1792058129
Updated
2026-11-02
OSVCLSA-2026-1793887823 No score

TuxCare security update for org.asynchttpclient (16 CVEs)

TuxCare rebuilt 14 org.asynchttpclient packages to address 16 CVEs. Fixed in 2.12.3-tuxcare.2.

Record
CLSA-2026-1793887823
Updated
2026-11-06

Affected products

Affected packages

Affected packages
PackageAffectedFixed
org.asynchttpclient:async-http-client
Maven
3.0.0 to 3.0.13
3.0.14
org.asynchttpclient:async-http-client
Maven
2.1.0 to 2.16.1 None known
org.asynchttpclient:async-http-client
TuxCare:Maven
From an advisory covering 3 CVEs
2.12.1 up to 2.12.1-tuxcare.2, plus listed versions
2.12.1-tuxcare.1
2.12.1-tuxcare.2
org.asynchttpclient:async-http-client
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-bom
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-example
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-guava
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-jdeferred
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-parent
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-registry
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
Show 18 moreShow less
Affected packages
PackageAffectedFixed
org.asynchttpclient:async-http-client-extras-retrofit2
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-rxjava
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-rxjava2
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-simple
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-extras-typesafe-config
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-netty-utils
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
org.asynchttpclient:async-http-client-project
TuxCare:Maven
From an advisory covering 15 CVEs
2.12.3 up to 2.12.3-tuxcare.2, plus listed versions
2.12.3-tuxcare.1
2.12.3-tuxcare.2
async-http-client
Debian:12
All versions, plus listed versions
2.12.3-12.12.3-1+deb12u1
None known
org.asynchttpclient:async-http-client
Maven
3.0.0 up to 3.0.14, plus listed versions
3.0.13.0.103.0.113.0.123.0.13
Show 8 moreShow less
3.0.23.0.33.0.43.0.53.0.63.0.73.0.83.0.9
3.0.14
org.asynchttpclient:async-http-client
Maven
2.1.0 to 2.16.1, plus listed versions
2.1.12.1.22.10.02.10.12.10.2
Show 35 moreShow less
2.10.32.10.42.10.52.11.02.12.02.12.12.12.22.12.32.12.42.14.52.15.02.16.02.2.02.2.12.3.02.4.02.4.12.4.22.4.32.4.42.4.52.4.62.4.72.4.82.4.92.5.02.5.12.5.22.5.32.5.42.6.02.7.02.8.02.8.12.9.0
None known
async-http-client
Ubuntu:Pro:14.04:LTS
All versions, plus listed versions
1.6.5-11.6.5-21.6.5-2ubuntu0.1~esm1
None known
async-http-client
Ubuntu:16.04:LTS
All versions, plus listed versions
1.6.5-4
None known
async-http-client
Ubuntu:18.04:LTS
All versions, plus listed versions
1.6.5-41.6.5-5
None known
async-http-client
Ubuntu:Pro:20.04:LTS
All versions, plus listed versions
2.6.0-12.6.0-1ubuntu0.1~esm1
None known
async-http-client
Ubuntu:22.04:LTS
All versions, plus listed versions
2.12.2-12.12.3-12.12.3-1ubuntu0.22.04.1
None known
async-http-client
Ubuntu:24.04:LTS
All versions, plus listed versions
2.12.3-12.12.3-1ubuntu0.24.04.1
None known
async-http-client
Ubuntu:26.10
All versions, plus listed versions
2.12.3-1ubuntu1
None known
async-http-client
Ubuntu:26.04:LTS
All versions, plus listed versions
2.12.3-12.12.3-1ubuntu12.12.3-1ubuntu1.1
None known

History

History
RecordedChangedSources
affected, aliasesOSV
affected, facts
affectedOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-107226 is a medium vulnerability (CVSS 6.8) in Asynchttpclient Async-http-client, published October 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.29%, the 22nd percentile. Fixed in org.asynchttpclient:async-http-client 3.0.14.

References

Show 4 moreShow less
This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open