Every CVE Search/ Get API key

CVE-2026-107282

AsyncHttpClient: Replay to a different host sends the original host request and credentials to the new host

9.4 CriticalFix available

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. Prior to 3.0.13 and 2.16.1, cross-host request replay updates the current request but leaves the target request and related proxy context pointing at the original origin. Connection-pool selection, CONNECT handling, realm selection, and TLS setup can consequently send the original host's path, Host header, Authorization credentials, or plaintext request to the replay destination. Documented ResponseFilter failover and retry paths can trigger the replay. This issue is fixed in versions 3.0.13 and 2.16.1.

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
High
Integrity
High
Availability
None

Exploit likelihood

0.19%Unchanged since Oct 8, 2026
90%50%10%1%

What each source reports

CVE List Score used 9.4

AsyncHttpClient: Replay to a different host sends the original host request and credentials to the new host

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. Prior to 3.0.13 and 2.16.1, cross-host request replay updates the current request but leaves the target request and related proxy context pointing at the original origin. Connection-pool selection, CONNECT handling, realm selection, and TLS setup can consequently send the original host's path, Host header, Authorization credentials, or plaintext request to the replay destination. Documented ResponseFilter failover and retry paths can trigger the replay. This issue is fixed in versions 3.0.13 and 2.16.1.

Record
CVE-2026-107282
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Weakness
CWE-319, CWE-441, CWE-522
Updated
2026-11-02
EUVDEUVD-2026-94642 9.4

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. Prior to 3.0.13 and 2.16.1, cross-host request replay updates the current request but leaves the target request and related proxy context pointing at the original origin. Connection-pool selection, CONNECT handling, realm selection, and TLS setup can consequently send the original host's path, Host header, Authorization credentials, or plaintext request to the replay destination. Documented ResponseFilter failover and retry paths can trigger the replay. This issue is fixed in versions 3.0.13 and 2.16.1.

Record
EUVD-2026-94642
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-jmqq-x5g9-9p2w 9.4

AsyncHttpClient: Replay to a different host sends the original host request and credentials to the new host

Impact

When a request is replayed onto a different host, the client updates only the current request and leaves the target request pointing at the original host. Four consumers read that stale value, and each one sends the first host's request, credentials, or both to the second host.

A replay happens through documented, ordinary features: a ResponseFilter that returns a different request, which is the supported failover pattern, and the IOException retry path. The attacker does not need to induce the replay; an application that uses failover produces it by design.

  • The socket to host B is filed in the connection pool under host A's key. A later request the application addresses to A is served over the connection to B, and A's Authorization header goes to B.
  • Over a CONNECT tunnel, the client tunnels to B and negotiates TLS with B correctly, then writes A's request into that tunnel. B receives A's path, A's Host, and A's Authorization. TLS does not protect against this, because the handshake really is with B, so no certificate mismatch occurs.
  • The replay reuses the original realm, so A's credentials are regenerated onto a replay request that carries no realm of its own. The cross-origin redirect path strips realms for exactly this reason; the replay path never did.
  • The stale value also decides whether TLS is used at all. When the original request was http:// and the replay is https://, no SSL handler is installed and the replayed request, credentials included, is written in cleartext.

Affected versions

  • 3.x: up to and including 3.0.12
  • 2.x: up to and including 2.16.0

Both lines are affected identically. This is long-standing behaviour, not a recent regression.

Patches

Fixed in 3.0.13 on the 3.x line and in 2.16.1 on the 2.x line. The target request now moves when a request is replayed, and the proxy moves with it: the proxy is part of the connection pool key, so correcting only the host would convert a harmless pool miss into a hit and route a proxied connection to a direct request.

Workarounds

Do not use a ResponseFilter that replays to a different host, and disable request retries, if the client is configured with credentials or used through a proxy. Replaying to the same host is not affected.

Details

NettyRequestSender.newNettyRequestAndResponseFuture calls setCurrentRequest without setTargetRequest, and replayRequest does not move the target either. The stale target is then read by the pool key derivation in NettyResponseFuture, by ConnectSuccessInterceptor when it writes the tunnelled request, by the realm selection in NettyRequestSender, and by NettyConnectListener when it decides whether to install an SSL handler.

Existing replay tests do not cover this, because all of them replay to the same host.

Record
GHSA-jmqq-x5g9-9p2w
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Weakness
CWE-319, CWE-441, CWE-522
Updated
2026-11-02
NVD 9.4

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. Prior to 3.0.13 and 2.16.1, cross-host request replay updates the current request but leaves the target request and related proxy context pointing at the original origin. Connection-pool selection, CONNECT handling, realm selection, and TLS setup can consequently send the original host's path, Host header, Authorization credentials, or plaintext request to the replay destination. Documented ResponseFilter failover and retry paths can trigger the replay. This issue is fixed in versions 3.0.13 and 2.16.1.

Record
CVE-2026-107282
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Weakness
CWE-319, CWE-441, CWE-522
Updated
2026-11-02
OSV 9.4

AsyncHttpClient: Replay to a different host sends the original host request and credentials to the new host

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. Prior to 3.0.13 and 2.16.1, cross-host request replay updates the current request but leaves the target request and related proxy context pointing at the original origin. Connection-pool selection, CONNECT handling, realm selection, and TLS setup can consequently send the original host's path, Host header, Authorization credentials, or plaintext request to the replay destination. Documented ResponseFilter failover and retry paths can trigger the replay. This issue is fixed in versions 3.0.13 and 2.16.1.

Record
CVE-2026-107282
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Weakness
CWE-319, CWE-441, CWE-522
Updated
2026-11-02
OSVDEBIAN-CVE-2026-107282 9.4

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. Prior to 3.0.13 and 2.16.1, cross-host request replay updates the current request but leaves the target request and related proxy context pointing at the original origin. Connection-pool selection, CONNECT handling, realm selection, and TLS setup can consequently send the original host's path, Host header, Authorization credentials, or plaintext request to the replay destination. Documented ResponseFilter failover and retry paths can trigger the replay. This issue is fixed in versions 3.0.13 and 2.16.1.

Record
DEBIAN-CVE-2026-107282
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
Show 5 moreShow less
OSVGHSA-jmqq-x5g9-9p2w 9.4

AsyncHttpClient: Replay to a different host sends the original host request and credentials to the new host

Impact

When a request is replayed onto a different host, the client updates only the current request and leaves the target request pointing at the original host. Four consumers read that stale value, and each one sends the first host's request, credentials, or both to the second host.

A replay happens through documented, ordinary features: a ResponseFilter that returns a different request, which is the supported failover pattern, and the IOException retry path. The attacker does not need to induce the replay; an application that uses failover produces it by design.

  • The socket to host B is filed in the connection pool under host A's key. A later request the application addresses to A is served over the connection to B, and A's Authorization header goes to B.
  • Over a CONNECT tunnel, the client tunnels to B and negotiates TLS with B correctly, then writes A's request into that tunnel. B receives A's path, A's Host, and A's Authorization. TLS does not protect against this, because the handshake really is with B, so no certificate mismatch occurs.
  • The replay reuses the original realm, so A's credentials are regenerated onto a replay request that carries no realm of its own. The cross-origin redirect path strips realms for exactly this reason; the replay path never did.
  • The stale value also decides whether TLS is used at all. When the original request was http:// and the replay is https://, no SSL handler is installed and the replayed request, credentials included, is written in cleartext.

Affected versions

  • 3.x: up to and including 3.0.12
  • 2.x: up to and including 2.16.0

Both lines are affected identically. This is long-standing behaviour, not a recent regression.

Patches

Fixed in 3.0.13 on the 3.x line and in 2.16.1 on the 2.x line. The target request now moves when a request is replayed, and the proxy moves with it: the proxy is part of the connection pool key, so correcting only the host would convert a harmless pool miss into a hit and route a proxied connection to a direct request.

Workarounds

Do not use a ResponseFilter that replays to a different host, and disable request retries, if the client is configured with credentials or used through a proxy. Replaying to the same host is not affected.

Details

NettyRequestSender.newNettyRequestAndResponseFuture calls setCurrentRequest without setTargetRequest, and replayRequest does not move the target either. The stale target is then read by the pool key derivation in NettyResponseFuture, by ConnectSuccessInterceptor when it writes the tunnelled request, by the realm selection in NettyRequestSender, and by NettyConnectListener when it decides whether to install an SSL handler.

Existing replay tests do not cover this, because all of them replay to the same host.

Record
GHSA-jmqq-x5g9-9p2w
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Weakness
CWE-319, CWE-441, CWE-522
Updated
2026-11-02
OSVUBUNTU-CVE-2026-107282 9.4

The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and asynchronously process HTTP responses. Prior to 3.0.13 and 2.16.1, cross-host request replay updates the current request but leaves the target request and related proxy context pointing at the original origin. Connection-pool selection, CONNECT handling, realm selection, and TLS setup can consequently send the original host's path, Host header, Authorization credentials, or plaintext request to the replay destination. Documented ResponseFilter failover and retry paths can trigger the replay. This issue is fixed in versions 3.0.13 and 2.16.1.

Record
UBUNTU-CVE-2026-107282
CVSS 4.0
9.4 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Updated
2026-11-02
OSVCLSA-2026-1791926769 No score

TuxCare security update for org.asynchttpclient (13 CVEs)

TuxCare rebuilt 14 org.asynchttpclient packages to address 13 CVEs. Fixed in 2.12.1-tuxcare.1.

Record
CLSA-2026-1791926769
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
OSVROOT-APP-MAVEN-CVE-2026-107282 No score

CVE-2026-107282 in org.asynchttpclient:async-http-client - Patched by Root

Root has patched CVE-2026-107282 in the org.asynchttpclient:async-http-client package for Root:Maven. Multiple fixed versions available.

Record
ROOT-APP-MAVEN-CVE-2026-107282
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
org.asynchttpclient:async-http-client
Maven
3.0.0 to 3.0.12
3.0.13
org.asynchttpclient:async-http-client
Maven
2.0.0 to 2.16.0
2.16.1
org.asynchttpclient:async-http-client
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-bom
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-example
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-guava
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-jdeferred
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-parent
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-registry
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-retrofit2
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
Show 33 moreShow less
Affected packages
PackageAffectedFixed
org.asynchttpclient:async-http-client-extras-rxjava
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-rxjava2
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-simple
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-extras-typesafe-config
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-netty-utils
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
org.asynchttpclient:async-http-client-project
TuxCare:Maven
From an advisory covering 12 CVEs
2.12.1 up to 2.12.1-tuxcare.1
2.12.1-tuxcare.1
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
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.13, plus listed versions
3.0.13.0.103.0.113.0.123.0.2
Show 7 moreShow less
3.0.33.0.43.0.53.0.63.0.73.0.83.0.9
3.0.13
org.asynchttpclient:async-http-client
Maven
2.0.0 up to 2.16.1, plus listed versions
2.0.12.0.102.0.112.0.122.0.13
Show 45 moreShow less
2.0.142.0.152.0.162.0.172.0.182.0.192.0.22.0.202.0.212.0.222.0.232.0.242.0.252.0.262.0.272.0.282.0.292.0.32.0.302.0.312.0.322.0.332.0.342.0.352.0.362.0.372.0.382.0.392.0.42.0.402.0.52.0.62.0.72.0.82.0.92.1.02.1.0-RC12.1.0-RC22.1.0-RC32.1.0-RC42.1.0-alpha12.1.0-alpha102.1.0-alpha112.1.0-alpha122.1.0-alpha13
2.16.1
org.asynchttpclient:async-http-client
Root:Maven
before 2.15.0-aikido.1
2.15.0-aikido.13.0.10-aikido.1
io.root.org.asynchttpclient:async-http-client
Root:Maven
before 2.15.0-root.io.1
2.15.0-root.io.13.0.10-root.io.1
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
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

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

In short

CVE-2026-107282 is a critical vulnerability (CVSS 9.4) in Asynchttpclient Async-http-client, published October 7, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.19%, the 8th percentile. Fixed in org.asynchttpclient:async-http-client 3.0.13.

References

Show 6 moreShow less
This page doesn't list everything

Left out here: 61 versions. The JSON record has them.

MoveEnter Open