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.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-379",
"CWE-61",
"CWE-732"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102740.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "2.0.0"
},
{
"fixed": "2.16.1"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"introduced": "3.0.0"
},
{
"fixed": "3.0.12"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "0422e11c954c4b026e986d1458f7a7a2eab7e591"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "d945ce3357b093e74526871cd309832a717ecfda"
}
],
"source": "REFERENCES_COMMIT"
},
{
"original_tag": "async-http-client-project-2.16.1",
"range": [
{
"fixed": "d1f0ccec417092098d40242fee7dfac84bb3c21f"
}
],
"source": "REFERENCES_TAG"
},
{
"original_tag": "async-http-client-project-3.0.12",
"range": [
{
"fixed": "c07038b44e5206375662b46859672e8f1df9f05a"
}
],
"source": "REFERENCES_TAG"
}
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-102740.json"
[
{
"deprecated": false,
"digest": {
"function_hash": "91001973005208225941329552223831704016",
"length": 669
},
"id": "CVE-2026-102740-21734c65",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/0422e11c954c4b026e986d1458f7a7a2eab7e591",
"target": {
"file": "client/src/main/java/org/asynchttpclient/handler/resumable/PropertiesBasedResumableProcessor.java",
"function": "load"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"219246596221720898981563676126452787927",
"112413554918931264338179563940130289539",
"262908889413526511266896616639455764237"
],
"threshold": 0.9
},
"id": "CVE-2026-102740-26220b3f",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/d1f0ccec417092098d40242fee7dfac84bb3c21f",
"target": {
"file": "client/src/main/java/org/asynchttpclient/cookie/ThreadSafeCookieStore.java"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"183551444354362238107517517692416048706",
"260697025943890863301352537966248894108",
"333186829501684322282014831174017131691",
"86553127015700551574046206267271785536",
"14926683482834752160022108391563941576",
"123238995004552513260604933695963545654",
"318902087249488870402577298340063238402",
"42978901981821907742087803589077532051",
"210697753372839889348505047893958477789",
"100544349276582039464719617671504405360",
"262787563441881040733469658127101114567",
"62236473767611062764237056964196936060",
"212561181229632699549032594032396411415",
"76729777595136260593927549964263097640",
"231374272658392911340093254928357034724",
"316049377475191990984728157750859537661",
"145217407286050245449056568271732133176",
"241739974109738915402721029763574194455",
"254557511574084502856299631549679567905",
"119806284674598344010396981371257012591",
"78224084051090285274659704388550222336",
"286166348337997817107767828048176072973",
"290085314461067946785982073307841853028",
"194613023073791608682553511722624006263",
"173423853214909004747563790015906985884",
"75369897702381052954358832496380388906",
"117294432669596230257536493554047035975",
"175215762541251239966734862147620680130",
"276198803968230200034503162807483123082",
"170220781093684127894057745168676141092",
"216964388733054462233636823321144602486",
"68585242354729714865652074714531871605",
"160522342941877368922880155819032188589",
"210265043821639772670293290339298757623",
"28738968429874625613435408532932709321",
"6804071144853219733083908672279135958",
"77596498421832521378779810584268689750",
"63548963883179759422448460172834317951"
],
"threshold": 0.9
},
"id": "CVE-2026-102740-392f8529",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/d945ce3357b093e74526871cd309832a717ecfda",
"target": {
"file": "client/src/main/java/org/asynchttpclient/handler/resumable/PropertiesBasedResumableProcessor.java"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "179962604291289426182560778745434718346",
"length": 785
},
"id": "CVE-2026-102740-4ab649ca",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/0422e11c954c4b026e986d1458f7a7a2eab7e591",
"target": {
"file": "client/src/main/java/org/asynchttpclient/handler/resumable/PropertiesBasedResumableProcessor.java",
"function": "save"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "120080246338274285982572117633430545933",
"length": 770
},
"id": "CVE-2026-102740-74225a4d",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/d945ce3357b093e74526871cd309832a717ecfda",
"target": {
"file": "client/src/main/java/org/asynchttpclient/handler/resumable/PropertiesBasedResumableProcessor.java",
"function": "save"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "14114006572858630342413201099140027434",
"length": 670
},
"id": "CVE-2026-102740-b3ea5757",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/d945ce3357b093e74526871cd309832a717ecfda",
"target": {
"file": "client/src/main/java/org/asynchttpclient/handler/resumable/PropertiesBasedResumableProcessor.java",
"function": "load"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"183551444354362238107517517692416048706",
"260697025943890863301352537966248894108",
"333186829501684322282014831174017131691",
"96429913204922166117501073352415351130",
"4521556181089879240855552570820395105",
"127109513927400825114616102538279281645",
"42978901981821907742087803589077532051",
"210697753372839889348505047893958477789",
"100544349276582039464719617671504405360",
"310926494955297263253940903466349972924",
"192968888286480147596078604429601946497",
"11440855239117717038006386222869447081",
"314788186355242424280106483487037101373",
"242470897938117406049622789001621496033",
"316049377475191990984728157750859537661",
"146413448185317770739099071592689339788",
"241739974109738915402721029763574194455",
"254557511574084502856299631549679567905",
"119806284674598344010396981371257012591",
"78224084051090285274659704388550222336",
"286166348337997817107767828048176072973",
"290085314461067946785982073307841853028",
"194613023073791608682553511722624006263",
"173423853214909004747563790015906985884",
"75369897702381052954358832496380388906",
"117294432669596230257536493554047035975",
"175215762541251239966734862147620680130",
"276198803968230200034503162807483123082",
"170220781093684127894057745168676141092",
"228124702775252823963465805378033617422",
"88381046967966127093933541021116692526",
"334359660315031193398298172211158097738",
"297378044221604899792207321978340082846",
"177334819204697745557698311705059647957",
"57962619139711813647916662974706369698",
"154791910562721020605362203780823732341",
"63548963883179759422448460172834317951"
],
"threshold": 0.9
},
"id": "CVE-2026-102740-b9bb204a",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/0422e11c954c4b026e986d1458f7a7a2eab7e591",
"target": {
"file": "client/src/main/java/org/asynchttpclient/handler/resumable/PropertiesBasedResumableProcessor.java"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "319981061666573934872902157208912328509",
"length": 685
},
"id": "CVE-2026-102740-c7b286ac",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/asynchttpclient/async-http-client/commit/d1f0ccec417092098d40242fee7dfac84bb3c21f",
"target": {
"file": "client/src/main/java/org/asynchttpclient/cookie/ThreadSafeCookieStore.java",
"function": "add"
}
}
]
"2026-10-28T11:03:33Z"