Authenticated Arbitrary File Read in Apache Storm Nimbus via Unvalidated Jar Path
CVSS 3.1
6.5medium
EPSS
—
Published
()
Modified
AI analysis
Apache Storm's Nimbus daemon accepted the `uploadedJarLocation` argument of `submitTopology`/`submitTopologyWithOpts` as a server-side path and opened it directly, never verifying it pointed to a jar the caller had actually uploaded via `beginFileUpload`. An authenticated user with topology submission rights could therefore name any file readable by the Nimbus daemon user as their topology jar; Nimbus copies it into a topology blob whose ACL grants the submitter read access, letting them exfiltrate the contents through ordinary blob download RPCs. High-value targets include the Nimbus Kerberos keytab (which turns an ordinary tenant into a cluster administrator), Thrift and UI TLS private keys, and `storm.yaml` containing ZooKeeper authentication credentials. Any secured (non-local-mode) Storm deployment is affected, and in the documentation's default configuration — `nimbus.users` unset — every authenticated principal may submit topologies, so no elevated privilege is required. No CVSS score has been assigned, the flaw is not in CISA's KEV, and no public exploit is known (a PoC was reported privately to the Apache Storm PMC).
What to do: Upgrade to Apache Storm 3.1.0, where the submitted jar location is canonicalised and must resolve inside the Nimbus inbox. If you cannot upgrade immediately, restrict topology submission to trusted principals via `nimbus.users` or `nimbus.groups`, and treat every file readable by the Nimbus daemon user as potentially exposed — rotate the Nimbus Kerberos keytab, any Thrift/UI TLS private keys, and ZooKeeper credentials in `storm.yaml`. Also review submitted topology jar blobs for content that does not match a legitimate topology jar. Local-mode deployments need no action.
Affected
Apache Storm
All versions prior to 3.1.0 (server/Nimbus deployments; local mode unaffected)
Estimated exposure
nichelikely a few thousand Storm clusters worldwide, with only hundreds of Storm UI/Nimbus endpoints internet-exposed — Apache Storm is an enterprise stream-processing platform typically deployed on internal big-data clusters rather than exposed to the internet, and public scan data consistently shows only a few hundred Storm UI endpoints visible online;…
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Description
Description Nimbus accepted the `uploadedJarLocation` argument of `submitTopology` / `submitTopologyWithOpts` as a server-side path and opened it directly, without checking that it referred to a file the caller had actually uploaded. The intended flow is that a client first calls `beginFileUpload`, which returns a path inside the Nimbus inbox, and uploads the jar in chunks to that location; nothing bound submission to that flow, and the `uploaders` map populated by `beginFileUpload` was never consulted at submit time. An authenticated user with topology submission rights could therefore submit any path readable by the Nimbus daemon user as their topology jar. Nimbus copied the file into the topology's jar blob, and the blob ACL grants the submitting subject read access, so the contents could then be retrieved with the ordinary blob download RPCs. Candidate targets include the Nimbus Kerberos keytab, Thrift and UI TLS private keys, and `storm.yaml` with the ZooKeeper authentication payload. Possession of the Nimbus keytab turns an ordinary tenant into a cluster administrator. In a deployment configured as the documentation recommends, submission is available to every authenticated principal when `nimbus.users` is unset, so no elevated privilege is required. Mitigation Upgrade to 3.1.0, where the submitted location is canonicalised and must resolve inside the Nimbus inbox. Users who cannot upgrade immediately should restrict topology submission to trusted principals via `nimbus.users` or `nimbus.groups`, and should treat any file readable by the Nimbus daemon user as potentially exposed to submitters: rotate the Nimbus keytab and any TLS private keys or ZooKeeper credentials reachable from that account. Local mode is unaffected. Credit Independently reported to the Apache Storm PMC by n0mi1k, with a proof of concept. Also found by the ASF using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.
Apache Storm Nimbus 3.0.0 before 3.1.0 allows arbitrary server-side file read via unvalidated uploadedJarLocation in submitTopology calls.
CVE-2026-82426 (rated important) affects Apache Storm Nimbus (org.apache.storm:storm-server) versions 3.0.0 before 3.1.0. Nimbus accepted the uploadedJarLocation argument of submitTopology/submitTopologyWithOpts as a server-side path and opened it directly, without verifying the caller had actually uploaded that file via beginFileUpload. This enables arbitrary file read on the Nimbus host; the issue is fixed in version 3.1.0.