CVE-2026-82429 (GCVE-0-2026-82429)
Vulnerability from cvelistv5 – Published: 2026-09-14 14:16 – Updated: 2026-09-14 20:00
VLAI
EPSS
VEX
Title
Apache Storm Worker Launcher: Local Privilege Escalation to Root via a Time-of-Check Race in the Worker Launcher
Summary
Description
The setuid-root `worker-launcher` binary adjusts ownership and permissions of worker directories by walking
the tree with FTS and calling `lchown` and `chmod` on each entry's full pathname while running with an
effective uid of 0. Both syscalls re-resolve the path at the time of the call, after FTS has classified the
entry, and the trees being walked are owned and writable by the untrusted topology user.
A tenant running code on a supervisor node could therefore replace an intermediate directory component with
a symbolic link between classification and the privileged operation, redirecting the root-owned `lchown` or
`chmod` at an arbitrary file on the host. The operation is repeatable at will, since crashing a worker
forces a relaunch and blob updates re-run the walk, so a failed attempt costs the attacker nothing.
This crosses the boundary that `supervisor.run.worker.as.user` and container isolation are intended to
enforce. It is the same defect class as the Hadoop container-executor issues from which this code derives.
Mitigation
Upgrade to 3.1.0, where the privileged walk operates on file descriptors it has already stat'd rather than
on pathnames re-resolved at call time.
Users who cannot upgrade immediately should not run untrusted topology code on supervisors configured with
`supervisor.run.worker.as.user`, since the launcher is the boundary being crossed. Note that the launcher
must be rebuilt and reinstalled after upgrading; replacing the Java artifacts alone is not sufficient.
Credit
The ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.
Severity
7.8 (High)
SSVC
Exploitation: none
Automatable: no
Technical Impact: total
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-09-14 19:59 UTC
CWE
- CWE-367 - Time-of-check time-of-use (TOCTOU) race condition
Assigner
References
2 references
Impacted products
1 product
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Apache Software Foundation | Apache Storm Worker Launcher |
Affected:
3.0.0 , < 3.1.0
(semver)
|
guessed |
{
"containers": {
"adp": [
{
"providerMetadata": {
"dateUpdated": "2026-09-14T15:13:44.810Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"url": "http://www.openwall.com/lists/oss-security/2026/09/13/9"
}
],
"title": "CVE Program Container"
},
{
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
}
},
{
"other": {
"content": {
"id": "CVE-2026-82429",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-14T19:59:35.240189Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-09-14T20:00:03.659Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://repo.maven.apache.org/maven2",
"defaultStatus": "unaffected",
"packageName": "org.apache.storm:storm-core",
"product": "Apache Storm Worker Launcher",
"vendor": "Apache Software Foundation",
"versions": [
{
"lessThan": "3.1.0",
"status": "affected",
"version": "3.0.0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "The ASF using Claude Agents"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cb\u003eDescription\u003c/b\u003e\u003cbr\u003e\u003cbr\u003eThe setuid-root `worker-launcher` binary adjusts ownership and permissions of worker directories by walking\u003cbr\u003ethe tree with FTS and calling `lchown` and `chmod` on each entry\u0027s full pathname while running with an\u003cbr\u003eeffective uid of 0. Both syscalls re-resolve the path at the time of the call, after FTS has classified the\u003cbr\u003eentry, and the trees being walked are owned and writable by the untrusted topology user.\u003cbr\u003e\u003cbr\u003eA tenant running code on a supervisor node could therefore replace an intermediate directory component with\u003cbr\u003ea symbolic link between classification and the privileged operation, redirecting the root-owned `lchown` or\u003cbr\u003e`chmod` at an arbitrary file on the host. The operation is repeatable at will, since crashing a worker\u003cbr\u003eforces a relaunch and blob updates re-run the walk, so a failed attempt costs the attacker nothing.\u003cbr\u003e\u003cbr\u003eThis crosses the boundary that `supervisor.run.worker.as.user` and container isolation are intended to\u003cbr\u003eenforce. It is the same defect class as the Hadoop container-executor issues from which this code derives.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eMitigation\u003c/b\u003e\u003cbr\u003e\u003cbr\u003eUpgrade to 3.1.0, where the privileged walk operates on file descriptors it has already stat\u0027d rather than\u003cbr\u003eon pathnames re-resolved at call time.\u003cbr\u003e\u003cbr\u003eUsers who cannot upgrade immediately should not run untrusted topology code on supervisors configured with\u003cbr\u003e`supervisor.run.worker.as.user`, since the launcher is the boundary being crossed. Note that the launcher\u003cbr\u003emust be rebuilt and reinstalled after upgrading; replacing the Java artifacts alone is not sufficient.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCredit\u003c/b\u003e\u003cbr\u003e\u003cbr\u003eThe ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.\u003cbr\u003e"
}
],
"value": "Description\n\nThe setuid-root `worker-launcher` binary adjusts ownership and permissions of worker directories by walking\nthe tree with FTS and calling `lchown` and `chmod` on each entry\u0027s full pathname while running with an\neffective uid of 0. Both syscalls re-resolve the path at the time of the call, after FTS has classified the\nentry, and the trees being walked are owned and writable by the untrusted topology user.\n\nA tenant running code on a supervisor node could therefore replace an intermediate directory component with\na symbolic link between classification and the privileged operation, redirecting the root-owned `lchown` or\n`chmod` at an arbitrary file on the host. The operation is repeatable at will, since crashing a worker\nforces a relaunch and blob updates re-run the walk, so a failed attempt costs the attacker nothing.\n\nThis crosses the boundary that `supervisor.run.worker.as.user` and container isolation are intended to\nenforce. It is the same defect class as the Hadoop container-executor issues from which this code derives.\n\nMitigation\n\nUpgrade to 3.1.0, where the privileged walk operates on file descriptors it has already stat\u0027d rather than\non pathnames re-resolved at call time.\n\nUsers who cannot upgrade immediately should not run untrusted topology code on supervisors configured with\n`supervisor.run.worker.as.user`, since the launcher is the boundary being crossed. Note that the launcher\nmust be rebuilt and reinstalled after upgrading; replacing the Java artifacts alone is not sufficient.\n\nCredit\n\nThe ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm."
}
],
"metrics": [
{
"other": {
"content": {
"text": "important"
},
"type": "Textual description of severity"
},
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-367",
"description": "CWE-367 Time-of-check time-of-use (TOCTOU) race condition",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-14T14:16:45.617Z",
"orgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
"shortName": "apache"
},
"references": [
{
"tags": [
"vendor-advisory"
],
"url": "https://lists.apache.org/thread/9vjqrt28g0mxg304vw6pw46cx72v4rvq"
}
],
"source": {
"discovery": "UNKNOWN"
},
"title": "Apache Storm Worker Launcher: Local Privilege Escalation to Root via a Time-of-Check Race in the Worker Launcher",
"x_generator": {
"engine": "Vulnogram 1.0.3"
}
}
},
"cveMetadata": {
"assignerOrgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
"assignerShortName": "apache",
"cveId": "CVE-2026-82429",
"datePublished": "2026-09-14T14:16:45.617Z",
"dateReserved": "2026-08-29T10:14:24.656Z",
"dateUpdated": "2026-09-14T20:00:03.659Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"nvd": "{\"cve\":{\"id\":\"CVE-2026-82429\",\"sourceIdentifier\":\"security@apache.org\",\"published\":\"2026-09-14T15:17:09.807\",\"lastModified\":\"2026-09-14T20:58:48.430\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"Description\\n\\nThe setuid-root `worker-launcher` binary adjusts ownership and permissions of worker directories by walking\\nthe tree with FTS and calling `lchown` and `chmod` on each entry\u0027s full pathname while running with an\\neffective uid of 0. Both syscalls re-resolve the path at the time of the call, after FTS has classified the\\nentry, and the trees being walked are owned and writable by the untrusted topology user.\\n\\nA tenant running code on a supervisor node could therefore replace an intermediate directory component with\\na symbolic link between classification and the privileged operation, redirecting the root-owned `lchown` or\\n`chmod` at an arbitrary file on the host. The operation is repeatable at will, since crashing a worker\\nforces a relaunch and blob updates re-run the walk, so a failed attempt costs the attacker nothing.\\n\\nThis crosses the boundary that `supervisor.run.worker.as.user` and container isolation are intended to\\nenforce. It is the same defect class as the Hadoop container-executor issues from which this code derives.\\n\\nMitigation\\n\\nUpgrade to 3.1.0, where the privileged walk operates on file descriptors it has already stat\u0027d rather than\\non pathnames re-resolved at call time.\\n\\nUsers who cannot upgrade immediately should not run untrusted topology code on supervisors configured with\\n`supervisor.run.worker.as.user`, since the launcher is the boundary being crossed. Note that the launcher\\nmust be rebuilt and reinstalled after upgrading; replacing the Java artifacts alone is not sufficient.\\n\\nCredit\\n\\nThe ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.\"}],\"affected\":[{\"source\":\"security@apache.org\",\"affectedData\":[{\"vendor\":\"Apache Software Foundation\",\"product\":\"Apache Storm Worker Launcher\",\"defaultStatus\":\"unaffected\",\"collectionURL\":\"https://repo.maven.apache.org/maven2\",\"packageName\":\"org.apache.storm:storm-core\",\"versions\":[{\"version\":\"3.0.0\",\"lessThan\":\"3.1.0\",\"versionType\":\"semver\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2026-09-14T19:59:35.240189Z\",\"id\":\"CVE-2026-82429\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"total\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"security@apache.org\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-367\"}]}],\"references\":[{\"url\":\"https://lists.apache.org/thread/9vjqrt28g0mxg304vw6pw46cx72v4rvq\",\"source\":\"security@apache.org\"},{\"url\":\"http://www.openwall.com/lists/oss-security/2026/09/13/9\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"}]}}",
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"http://www.openwall.com/lists/oss-security/2026/09/13/9\"}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2026-09-14T15:13:44.810Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 7.8, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"HIGH\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-82429\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-09-14T19:59:35.240189Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-09-14T19:59:57.683Z\"}}], \"cna\": {\"title\": \"Apache Storm Worker Launcher: Local Privilege Escalation to Root via a Time-of-Check Race in the Worker Launcher\", \"source\": {\"discovery\": \"UNKNOWN\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"The ASF using Claude Agents\"}], \"metrics\": [{\"other\": {\"type\": \"Textual description of severity\", \"content\": {\"text\": \"important\"}}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"vendor\": \"Apache Software Foundation\", \"product\": \"Apache Storm Worker Launcher\", \"versions\": [{\"status\": \"affected\", \"version\": \"3.0.0\", \"lessThan\": \"3.1.0\", \"versionType\": \"semver\"}], \"packageName\": \"org.apache.storm:storm-core\", \"collectionURL\": \"https://repo.maven.apache.org/maven2\", \"defaultStatus\": \"unaffected\"}], \"references\": [{\"url\": \"https://lists.apache.org/thread/9vjqrt28g0mxg304vw6pw46cx72v4rvq\", \"tags\": [\"vendor-advisory\"]}], \"x_generator\": {\"engine\": \"Vulnogram 1.0.3\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"Description\\n\\nThe setuid-root `worker-launcher` binary adjusts ownership and permissions of worker directories by walking\\nthe tree with FTS and calling `lchown` and `chmod` on each entry\u0027s full pathname while running with an\\neffective uid of 0. Both syscalls re-resolve the path at the time of the call, after FTS has classified the\\nentry, and the trees being walked are owned and writable by the untrusted topology user.\\n\\nA tenant running code on a supervisor node could therefore replace an intermediate directory component with\\na symbolic link between classification and the privileged operation, redirecting the root-owned `lchown` or\\n`chmod` at an arbitrary file on the host. The operation is repeatable at will, since crashing a worker\\nforces a relaunch and blob updates re-run the walk, so a failed attempt costs the attacker nothing.\\n\\nThis crosses the boundary that `supervisor.run.worker.as.user` and container isolation are intended to\\nenforce. It is the same defect class as the Hadoop container-executor issues from which this code derives.\\n\\nMitigation\\n\\nUpgrade to 3.1.0, where the privileged walk operates on file descriptors it has already stat\u0027d rather than\\non pathnames re-resolved at call time.\\n\\nUsers who cannot upgrade immediately should not run untrusted topology code on supervisors configured with\\n`supervisor.run.worker.as.user`, since the launcher is the boundary being crossed. Note that the launcher\\nmust be rebuilt and reinstalled after upgrading; replacing the Java artifacts alone is not sufficient.\\n\\nCredit\\n\\nThe ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cb\u003eDescription\u003c/b\u003e\u003cbr\u003e\u003cbr\u003eThe setuid-root `worker-launcher` binary adjusts ownership and permissions of worker directories by walking\u003cbr\u003ethe tree with FTS and calling `lchown` and `chmod` on each entry\u0027s full pathname while running with an\u003cbr\u003eeffective uid of 0. Both syscalls re-resolve the path at the time of the call, after FTS has classified the\u003cbr\u003eentry, and the trees being walked are owned and writable by the untrusted topology user.\u003cbr\u003e\u003cbr\u003eA tenant running code on a supervisor node could therefore replace an intermediate directory component with\u003cbr\u003ea symbolic link between classification and the privileged operation, redirecting the root-owned `lchown` or\u003cbr\u003e`chmod` at an arbitrary file on the host. The operation is repeatable at will, since crashing a worker\u003cbr\u003eforces a relaunch and blob updates re-run the walk, so a failed attempt costs the attacker nothing.\u003cbr\u003e\u003cbr\u003eThis crosses the boundary that `supervisor.run.worker.as.user` and container isolation are intended to\u003cbr\u003eenforce. It is the same defect class as the Hadoop container-executor issues from which this code derives.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eMitigation\u003c/b\u003e\u003cbr\u003e\u003cbr\u003eUpgrade to 3.1.0, where the privileged walk operates on file descriptors it has already stat\u0027d rather than\u003cbr\u003eon pathnames re-resolved at call time.\u003cbr\u003e\u003cbr\u003eUsers who cannot upgrade immediately should not run untrusted topology code on supervisors configured with\u003cbr\u003e`supervisor.run.worker.as.user`, since the launcher is the boundary being crossed. Note that the launcher\u003cbr\u003emust be rebuilt and reinstalled after upgrading; replacing the Java artifacts alone is not sufficient.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCredit\u003c/b\u003e\u003cbr\u003e\u003cbr\u003eThe ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.\u003cbr\u003e\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-367\", \"description\": \"CWE-367 Time-of-check time-of-use (TOCTOU) race condition\"}]}], \"providerMetadata\": {\"orgId\": \"f0158376-9dc2-43b6-827c-5f631a4d8d09\", \"shortName\": \"apache\", \"dateUpdated\": \"2026-09-14T14:16:45.617Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-82429\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-09-14T20:00:03.659Z\", \"dateReserved\": \"2026-08-29T10:14:24.656Z\", \"assignerOrgId\": \"f0158376-9dc2-43b6-827c-5f631a4d8d09\", \"datePublished\": \"2026-09-14T14:16:45.617Z\", \"assignerShortName\": \"apache\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Loading…
Loading…