Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify app using AHC with replaying ResponseFilter
-
DeliveryInduce request failure forcing failover
-
ExploitReplay retargets a different origin
-
ExecutionStale proxy/target context reused
-
ImpactCredentials and plaintext sent to replay host
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V12 - Secure Communication Transport encryption
|
| Exploitation Conditions | Exploitation requires the application to use AsyncHttpClient prior to 3.0.13 or 2.16.1 configured with a ResponseFilter that triggers failover or retry replay of a request onto a DIFFERENT base origin (different host/scheme/port) or performs an HTTPS-to-HTTP scheme downgrade - the documented ResponseFilter failover/retry path is the exact trigger. The leak occurs because the replay updates the current request but leaves the target request, connection-pool partition key, CONNECT/proxy context, realm, and TLS setup bound to the original origin. Limiting factors: this is NOT a default configuration (stock AHC usage without a cross-host replaying filter is unaffected), AC:H and AT:P indicate a specific sequence/timing condition must be met, and there is no attacker-facing endpoint to exploit directly - the impact is credential/plaintext disclosure to whichever host the application itself replays to. |
| Impact | Signals here point in genuinely different directions, so the raw score should not drive prioritization. The vendor-supplied CVSS 4.0 vector (9.4) uses AV:N/PR:N/UI:N, which reads like trivial remote unauthenticated compromise, but AC:H and AT:P explicitly encode that success depends on a specific, non-default condition and a timing/sequence requirement - namely an application configured with a ResponseFilter whose failover/retry logic replays a request onto a different origin. No EPSS score, KEV listing, or public POC was provided; their absence is not disproof but means there is no evidence of active or at-scale exploitation. The issue is best understood as a client-side credential/data-leak (CWE-319): during cross-host replay, AsyncHttpClient leaves connection-pool selection, CONNECT handling, realm selection, and TLS setup pointing at the original origin, so the original host's path, Host header, Authorization credentials, or plaintext payload can be emitted to the replay destination. The high VC/VI and subsequent-system SC/SI reflect credential disclosure to an unintended host and request mis-delivery, not remote code execution. Net assessment: a real and serious data-exposure bug for the subset of deployments using replaying ResponseFilters, but for the majority of AHC users who do not configure such failover, real-world exploitable risk is substantially lower than 9.4 suggests. The beneficiary of the leak is largely the replay destination (or a network position observing the plaintext/credentials), not an arbitrary internet attacker against a default install. |
| Exploit ScenarioDerived | A Java application uses AsyncHttpClient with a custom ResponseFilter that fails over or retries a failed request against a secondary host. When that replay targets a different origin (or downgrades HTTPS to HTTP), the library re-points the current request but not the target/proxy context, so the first host's Authorization credentials, Host header, or plaintext body are transmitted to the second host, disclosing secrets to an unintended destination. No public exploit identified at time of analysis; the fix commit ships a CrossHostReplayTest demonstrating the condition, but that is a regression test rather than a weaponized exploit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Cross-host request replay in AsyncHttpClient (AHC) before 3.0.13 and 2.16.1 can disclose the original origin's request path, Host header, Authorization credentials, or even a plaintext request to a completely different destination when an application's ResponseFilter fails over or retries a request onto a different base origin (host, scheme, or port) or downgrades HTTPS to HTTP. The assessed vector is unauthenticated from the network perspective (PR:N, AV:N), but exploitation hinges on a concrete application-side prerequisite: a ResponseFilter (or equivalent retry/failover code path) that replays requests across origins - default AHC usage with same-host retries is unaffected, and AC:H/AT:P reflect the specific sequencing that must occur. No public exploit code and no confirmed active exploitation were identified at time of analysis, and because the impact depends on configuration rather than an attacker-reachable endpoint, the CVSS 4.0 score of 9.4 and the independent CVSS 3.1 assessment point in different directions; prioritization should be driven by whether a cross-host replaying filter is deployed.
RemediationAI
Vendor-released patch: upgrade to AsyncHttpClient 3.0.13 (3.x line) or 2.16.1 (2.x line); both fix releases and their Maven artifacts are linked from the GitHub security advisory GHSA-jmqq-x5g9-9p2w and from the release tags async-http-client-project-3.0.13 and async-http-client-project-2.16.1, and the underlying fixes are commit 15b254514a411623e5f1d8c99ea79c0f82f8a466 (NettyResponseFuture.setProxyServer / partition-key recomputation) and commit bbc31aed3b044f9f7a126cf689a8c8d7ad2ae1cb (NettyRequestSender replay path). Where an immediate upgrade is not possible, the highest-value compensating control is to remove or restrict ResponseFilters that replay onto a different base origin or that downgrade the scheme - rewrite failover filters so retries stay on the same host, scheme, and port, or implement cross-host failover by constructing a brand-new request and a fresh client instead of replaying the existing future, accepting the extra connection-setup cost and loss of connection reuse as the trade-off. Additional hardening: strip Authorization, Proxy-Authorization, Cookie, and other per-origin headers from any request that is re-issued to a different host, and refuse to follow failover paths that would send HTTPS requests over plain HTTP, which directly blocks the cleartext-disclosure variant; configure the client with a per-host credential/Realm setup so credentials cannot be reused across origins, noting that this reduces only the blast radius, not the underlying partition-key bug. Dependency scanning and SBOM checks should flag transitive versions below 3.0.13 and 2.16.1 for upgrade, and no independent patched version should be assumed for forks or shaded copies until they are individually verified.
Affected VersionsENISA
Affected Packages
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 widely embedded Java HTTP/1.1 and HTTP/2 client library built on Netty, commonly pulled in transitively by frameworks and services rather than exposed as an application itself. The defect is a state-management failure inside NettyResponseFuture: when a ResponseFilter triggers replayRequest, the code updated the current request but left the future's target request, memoized connection-pool basePartitionKeyCache, proxy context (ProxyServer), realms (server and proxy authentication realms), and TLS setup bound to the original origin. Because the partition key is derived from host/scheme/port plus the proxy, a stale key could file a socket under a route the future no longer takes - for example filing a proxied connection under the direct key for the new host, so the next direct request to that host draws a socket that actually traverses the proxy, sending its credentials through it. The same staleness affects CONNECT tunnel handling (the request ConnectSuccessInterceptor writes into a tunnel), NettyConnectListener's decision on whether to install an SslHandler, and realm selection, which is why a downgraded or cross-origin replay can emit the old host's path, Host header, Authorization header, or cleartext body to the replay destination. CWE-319 (cleartext transmission of sensitive information) captures the most severe outcome, an HTTPS-to-HTTP scheme downgrade in which credentials and request content leave unencrypted, while the broader class is improper synchronization/refresh of security-relevant request state. The upstream fix makes proxyServer non-final and adds setProxyServer(), which recomputes the partition key, and NettyRequestSender now samples the initial partition key before retargeting and calls setProxyServer() before setTargetRequest() so both inputs to the key move together; the same commit set also drains the channel under the correct key and clears stale realms on base change or downgrade.
Know when Java 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
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
AC:H because exploitation needs a non-default replaying ResponseFilter and a cross-origin or scheme-downgrade replay; PR:N as the flaw needs no attacker authentication; S:C since credentials/requests leak to a separate host; A:N as availability is unaffected.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
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.
Blast Radius
ecosystem impact- 24 maven packages depend on org.asynchttpclient:async-http-client (15 direct, 9 indirect)
Ecosystem-wide dependent count for version 3.0.0.
Articles & Coverage 2
Technical POC Analysis
Bug class: CWE-319 Cleartext Transmission of Sensitive Information, with the advisory additionally listing CWE-441 Unintended Proxy/Intermediary and CWE-522 Insufficiently Protected Credentials.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
AsyncHttpClient, a widely embedded Java HTTP client library used across enterprise applications and services, can disclose Authorization credentials, Host headers, request paths, and even full plaintext requests to unintended external destinations when application retry or failover logic replays a request onto a different origin or downgrades HTTPS to HTTP. Because the library is a shared dependency, many internal services may be affected at once, creating a credential-theft and data-exposure path that could enable downstream account takeover and lateral movement. Exposure is configuration-dependent rather than driven by an attacker-reachable endpoint: no public exploit code and no confirmed active exploitation were identified at time of analysis, and the network vector is unauthenticated (PR:N) but requires a specific application-side cross-origin replay sequence (AC:H/AT:P).
No vendor-released patch identified at time of analysis. Interim mitigations: disable cross-origin retry/failover in AsyncHttpClient ResponseFilter and equivalent retry code paths; pin all retries to the original host, scheme, and port; block HTTPS-to-HTTP downgrades; enforce TLS-only egress with destination allowlisting; avoid transmitting long-lived credentials in request headers and rotate any Authorization tokens that may have been replayed across origins; shorten token lifetimes; and monitor egress logs for requests reaching unexpected destinations or traveling in plaintext.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
EUVD-2026-94642
GHSA-jmqq-x5g9-9p2w
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB