Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain local account on shared host
-
DeliveryPre-plant symlink at $tmpdir/ahc/ResumableAsyncHandler.properties
-
ExploitVictim app saves resumable state via ResumableAsyncHandler
-
ExecutionClient follows symlink on write
-
ImpactTruncate/overwrite target file and read leaked URLs
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling UNIX symlink resolution
|
| Exploitation Conditions | Exploitation requires (1) the application to use ResumableAsyncHandler decorating another AsyncHandler backed by PropertiesBasedResumableProcessor - applications using the no-argument constructors get a no-op processor and are NOT vulnerable; (2) a shared, multi-user filesystem where the attacker is a separate local user who can read the default-permission store (for URL/token disclosure) or write within / pre-create the $java.io.tmpdir/ahc directory (for the symlink overwrite); and (3) the client process actually saving resumable download state so the planted link is followed. Limiting factors: no remote vector (local access mandatory), a low-but-present privilege requirement (a local account), high attack complexity from the needed directory control and timing against the save, dependence on a POSIX shared tmpdir shared across trust boundaries, and affected versions being below 2.16.1 / 3.0.12. Single-user, single-tenant, or container-isolated deployments with no untrusted local users are effectively unexposed. |
| Impact | This is a moderate, locally-scoped issue rather than a top-tier priority. The supplied CVSS 3.1 vector (AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:L, base 5.8) is internally consistent with the description: exploitation requires a local account on a shared multi-user host (AV:L/PR:L), a non-trivial precondition and timing/race against the client's save operation (AC:H), and yields limited confidentiality (C:L - leaked download URLs/tokens) but high integrity impact (I:H - symlink-driven truncate/overwrite of a file writable by the client process). No EPSS score, KEV listing, or public POC was provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The combination of local-only vector, high attack complexity, and the requirement that the application actually use the filesystem-backed resumable handler makes this a low-to-moderate real-world risk despite the HIGH integrity sub-score. A dependency significantly narrows exposure: the flaw only applies when ResumableAsyncHandler decorates another AsyncHandler using PropertiesBasedResumableProcessor - the no-argument constructors use a no-op processor and are unaffected - so many deployments pulling in the library are not vulnerable at all. Prioritize patching on shared/multi-tenant hosts; single-tenant or containerized single-user deployments face little practical exposure. |
| Exploit ScenarioDerived | On a shared multi-user Linux host, a low-privileged local attacker who can write to or pre-create $java.io.tmpdir/ahc plants a symbolic link at ResumableAsyncHandler.properties pointing at a file the victim Java process can write. When the application's ResumableAsyncHandler next saves resumable download state, the client follows the link and truncates/overwrites the target file; the attacker can also simply read the world-readable store to harvest download URLs containing embedded credentials or query tokens. No public exploit code was provided, and the high attack complexity reflects the need for local access and favorable timing against the client's save operation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Local information disclosure and symlink-following file overwrite in AsyncHttpClient versions 2.0.0 through 2.16.0 and 3.x before 3.0.12 let an authenticated local user on a shared multi-user host read resumable download URLs - including embedded credentials and query tokens - from a predictably named store at $java.io.tmpdir/ahc/ResumableAsyncHandler.properties, or plant a symbolic link that the client follows when saving state, truncating and overwriting any file writable by the client process. Only applications that decorate another AsyncHandler with ResumableAsyncHandler backed by PropertiesBasedResumableProcessor are exposed; the no-argument constructors use a no-op processor and are unaffected. Exploitation requires local access, control of the shared $java.io.tmpdir/ahc directory, and timing against a state save; no public exploit code was identified at time of analysis and there is no KEV confirmation of active exploitation. The issue is fixed in 2.16.1 and 3.0.12.
RemediationAI
Upgrade to a fixed release: AsyncHttpClient 2.16.1 for the 2.x line or 3.0.12 for the 3.x line, per the vendor advisory at https://github.com/AsyncHttpClient/async-http-client/security/advisories/GHSA-cf59-3jcr-vfhw and the corresponding release tags. If an immediate upgrade is not possible, stop using ResumableAsyncHandler with PropertiesBasedResumableProcessor on shared multi-user hosts - the no-argument ResumableAsyncHandler constructors fall back to a no-op processor and are unaffected, though they disable resumable-download state persistence entirely - or supply a custom ResumableProcessor that writes to a per-user directory created with owner-only permissions (0700) and opens files with NOFOLLOW_LINKS and CREATE_NEW semantics to defeat pre-planted links. As a compensating control, restrict $java.io.tmpdir/ahc so it is owned by the service account and inaccessible to other local users (mode 0700 on the directory and 0600 on the properties file); the trade-off is potential breakage if other legitimate processes rely on that path, and the control must be re-applied whenever the directory is recreated. Deploy the client in a single-user container or namespace where no untrusted local account shares the temp directory, which eliminates both the disclosure and symlink-overwrite vectors at the cost of losing the shared-temp execution model. Note that upgrades also require confirming that any custom code depending on the old default path or default permissions is updated, since the fixed versions enforce owner-only POSIX permissions and link-refusing opens that will cause saves to fail rather than follow a re-planted file or symlink.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in 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 library for executing HTTP requests and asynchronously processing responses; its resumable-download support stores per-URL byte offsets so interrupted transfers can continue. In affected releases, PropertiesBasedResumableProcessor persisted that index at the fixed, world-predictable path $java.io.tmpdir/ahc/ResumableAsyncHandler.properties using default umask permissions and plain java.io.File operations that do not pass LinkOption.NOFOLLOW_LINKS, so reads and writes traverse any symbolic link already present at that path. The root-cause class is CWE-61 (UNIX symbolic link following), compounded by creation of a shared file in a multi-user temp directory with permissive defaults: any local account able to read the file harvests the download URLs (which may carry userinfo or query tokens), and any local account able to write inside or pre-create the $java.io.tmpdir/ahc directory can redirect the save path via a planted link, causing a createNewFile/FileOutputStream-style write to truncate and overwrite a target the client process can write. The upstream fix replaces the path handling with java.nio.file APIs that open with NOFOLLOW_LINKS, create the directory and store with POSIX owner-only permissions (rwx------ and rw------- respectively), and use WRITE plus CREATE_NEW after a deleteIfExists so a re-planted file or link causes failure rather than being written through. The CPE cpe:2.3:a:asynchttpclient:async-http-client:*:*:*:*:*:*:*:* covers the affected Maven artifact org.asynchttpclient:async-http-client across both the 2.x and 3.x release lines below the fixed versions.
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
AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:L
Local shared-tmpdir vector (AV:L) requiring a local account (PR:L) and favorable timing/directory control (AC:H); limited URL/token disclosure (C:L) but arbitrary writable-file truncation (I:H, A:L).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
The AsyncHttpClient library allows Java applications to execute HTTP requests and asynchronously process HTTP responses. From 2.0.0 until 2.16.1 and 3.0.12, PropertiesBasedResumableProcessor stores resumable download state at the predictable shared path $java.io.tmpdir/ahc/ResumableAsyncHandler.properties with default permissions and link-following file operations. A local user who can read the shared store can see download URLs, including embedded user information or query tokens. A local user who can write within or pre-create the affected shared store directory can plant a symbolic link that the client follows when saving state, truncating and overwriting a target file writable by the client process. The filesystem path is used when ResumableAsyncHandler decorates another AsyncHandler, while the no-argument constructors use a no-op processor and are unaffected. This issue is fixed in versions 2.16.1 and 3.0.12.
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-102223
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB