CVE-2026-82430: Apache Storm Worker Launcher: Local Privilege Escalation to Root via Container Command Files Chowned to the Tenant
Description
When launching a Docker or OCI worker, the setuid-root worker-launcher first changes ownership of the entire worker directory to the untrusted topology user, and only afterwards reads and acts on the command file that the supervisor wrote into that same directory. The file is opened without ONOFOLLOW and without re-verifying its owner, so between the ownership change and the read the tenant can replace its contents.
For the Docker path the parsed command is executed with real uid 0, and the command sanitiser is not a privilege boundary: it admits -v with an arbitrary source, --device, --cap-add, --security-opt, --user and --net, and copies positional arguments through verbatim. A rewritten file therefore yields an attacker-authored, root-equivalent container invocation with the host filesystem available.
For the OCI path the same rewrite window applies, and mount validation is structural only, with no source or destination allow-list, so arbitrary host paths can be bind-mounted read-write into the container. The username field of the command file is likewise attacker-settable and is checked only against non-root and minimum-uid rules, permitting execution as another tenant's uid.
Mitigation
Upgrade to 3.1.0, where the command file is validated before the ownership change and re-verified on open, and where mount sources and destinations are constrained by configuration.
Users who cannot upgrade immediately should disable Docker and OCI worker isolation, or restrict topology submission on affected supervisors to trusted principals. Note that the launcher must be rebuilt and reinstalled after upgrading.
Credit
The ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Apache Storm worker-launcherto a version that resolves this vulnerability.Fixed in 3.1.0 - Configuration
Users who cannot upgrade immediately should disable Docker worker isolation.
Apache Storm worker isolation Docker worker isolation = disabled - Configuration
Users who cannot upgrade immediately should disable OCI worker isolation.
Apache Storm worker isolation OCI worker isolation = disabled - Compensating control
When launching Docker or OCI workers on affected supervisors until upgraded, restrict topology so workers run against trusted principals (restrict topology).
- Compensating control
On affected supervisors until upgraded, ensure container submission is limited to trusted principals (restrict topology/topology access) to reduce exposure.
Event History
Frequently Asked Questions
Who can exploit this issue?
An untrusted topology user who can modify the worker directory after worker-launcher changes its ownership can replace the supervisor-written command file before it is read. Exploitation depends on winning that interval and supplying a rewritten command file.
Is the impact different for Docker and OCI workers?
For Docker workers, the rewritten command can produce a container invocation executed with real UID 0, with options that permit host filesystem access and other privileged settings. For OCI workers, arbitrary host paths can be bind-mounted read-write because mount validation has no source or destination allow-list.
Do command-file username checks prevent exploitation?
No. The username field is attacker-settable and is checked only to ensure it is non-root and meets minimum-UID rules; those checks do not prevent the described command-file replacement.