ZeroHour

CVE-2026-82429

moderate

Time-of-Check Race in Apache Storm worker-launcher Allows Local Root Escalation

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

The setuid-root worker-launcher binary in Apache Storm walks worker directory trees using FTS and invokes lchown and chmod on full pathnames while running with effective uid 0, and because both syscalls re-resolve the path after FTS has classified each entry, an untrusted topology user can replace an intermediate directory component with a symbolic link and redirect root-owned ownership/permission changes at arbitrary files on the host (a CWE-367 time-of-check race, the same defect class as the Hadoop container-executor issues this code derives from). The race is cheap to retry: crashing a worker forces a relaunch and blob updates re-run the walk, so failed attempts cost the attacker nothing. Successful exploitation yields root on the supervisor node, breaking the isolation boundary that supervisor.run.worker.as.user and container isolation are intended to enforce. All versions prior to 3.1.0 are affected where the launcher is installed setuid-root and untrusted topology code runs on supervisors. There is no CVSS score yet, no known public proof of concept, and no evidence of exploitation in the wild.

What to do: Upgrade to Apache Storm 3.1.0 and rebuild and reinstall the worker-launcher binary on every supervisor — replacing the Java artifacts alone leaves the vulnerable setuid binary in place. Until patched, do not run untrusted topology code on supervisors configured with supervisor.run.worker.as.user. Verify the launcher version and setuid permissions on each supervisor, and audit worker directories and host files for unexpected symbolic links or ownership/permission changes.

Affected
Apache Software Foundation Apache Storm (setuid-root worker-launcher binary)all versions prior to 3.1.0; fixed in 3.1.0
Estimated exposure
moderatelikely low thousands of supervisor nodes (a few thousand Storm clusters worldwide) — Apache Storm is a moderately deployed enterprise stream processor (far smaller footprint than Kafka or Flink, with only hundreds of internet-exposed Storm UIs in public scans since clusters run internally), and the exploitable subset is…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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.

Weakness
CWE-367
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

CVE-2026-82429: Apache Storm Worker Launcher: Local Privilege Escalation to Root via a Time-of-Check Race in the Worker Launcher

Apache Storm's setuid-root worker-launcher re-resolves paths during recursive chown/chmod, letting local users win a race to escalate to root.

CVE-2026-82429 affects Apache Storm Worker Launcher (org.apache.storm:storm-core) versions 3.0.0 before 3.1.0, rated important. The setuid-root worker-launcher walks worker directories with FTS calling lchown and chmod on full pathnames while running with effective uid 0, and both syscalls re-resolve the path at call time. A local attacker can exploit this time-of-check race by swapping path components to gain root privileges. Fixed in version 3.1.0.

oss-security · 2d agoVulnerabilityCVE-2026-82429