{"id":22311,"date":"2026-09-15T00:30:47","date_gmt":"2026-09-14T16:30:47","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-82426"},"modified":"2026-09-15T00:30:47","modified_gmt":"2026-09-14T16:30:47","slug":"cve-2026-82426","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-82426","title":{"rendered":"CVE-2026-82426 &#8211; Description\n\nNimbus accepted the `uploadedJarLocation` argument of `submitTopology` \/ `sub"},"content":{"rendered":"<p>Description<\/p>\n<p>Nimbus accepted the `uploadedJarLocation` argument of `submitTopology` \/ `submitTopologyWithOpts` as a<br \/>\nserver-side path and opened it directly, without checking that it referred to a file the caller had<br \/>\nactually uploaded. The intended flow is that a client first calls `beginFileUpload`, which returns a path<br \/>\ninside the Nimbus inbox, and uploads the jar in chunks to that location; nothing bound submission to that<br \/>\nflow, and the `uploaders` map populated by `beginFileUpload` was never consulted at submit time.<\/p>\n<p>An authenticated user with topology submission rights could therefore submit any path readable by the<br \/>\nNimbus daemon user as their topology jar. Nimbus copied the file into the topology&#8217;s jar blob, and the<br \/>\nblob ACL grants the submitting subject read access, so the contents could then be retrieved with the<br \/>\nordinary blob download RPCs. Candidate targets include the Nimbus Kerberos keytab, Thrift and UI TLS<br \/>\nprivate keys, and `storm.yaml` with the ZooKeeper authentication payload. Possession of the Nimbus keytab<br \/>\nturns an ordinary tenant into a cluster administrator.<\/p>\n<p>In a deployment configured as the documentation recommends, submission is available to every<br \/>\nauthenticated principal when `nimbus.users` is unset, so no elevated privilege is required.<\/p>\n<p>Mitigation<\/p>\n<p>Upgrade to 3.1.0, where the submitted location is canonicalised and must resolve inside the Nimbus inbox.<\/p>\n<p>Users who cannot upgrade immediately should restrict topology submission to trusted principals via<br \/>\n`nimbus.users` or `nimbus.groups`, and should treat any file readable by the Nimbus daemon user as<br \/>\npotentially exposed to submitters: rotate the Nimbus keytab and any TLS private keys or ZooKeeper<br \/>\ncredentials reachable from that account. Local mode is unaffected.<\/p>\n<p>Credit<\/p>\n<p>Independently reported to the Apache Storm PMC by n0mi1k, with a proof of concept.<\/p>\n<p>Also found by the ASF using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Description<\/p>\n<p>Nimbus accepted the `uploadedJarLocation` argument of `submitTopology` \/ `submitTopologyWithOpts` as a<br \/>\nserver-side path and opened it directly, without checking that it referred to a file<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-22311","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/22311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}