{"id":22312,"date":"2026-09-15T00:30:47","date_gmt":"2026-09-14T16:30:47","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-82427"},"modified":"2026-09-15T00:30:47","modified_gmt":"2026-09-14T16:30:47","slug":"cve-2026-82427","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-82427","title":{"rendered":"CVE-2026-82427 &#8211; Description\n\nA topology&#8217;s `topology.blobstore.map` lets the submitter choose a local name"},"content":{"rendered":"<p>Description<\/p>\n<p>A topology&#8217;s `topology.blobstore.map` lets the submitter choose a local name for each blob that the<br \/>\nsupervisor localises. That name was used to build a path under the topology&#8217;s working directory without<br \/>\nnormalisation, in both `AsyncLocalizer` and `Container.createBlobstoreLinks`, and the symlink helper<br \/>\nforce-deletes whatever already exists at the target before creating the link.<\/p>\n<p>A submitter could therefore use `..\/` segments to direct that delete-and-symlink operation at an arbitrary<br \/>\npath, as the supervisor user, on every node the topology is scheduled onto. The consequences include<br \/>\nrecursive deletion of supervisor-owned content and planting a symlink that causes a subsequent worker<br \/>\nlaunch to execute attacker-chosen code as another tenant&#8217;s operating-system user, which defeats the<br \/>\nisolation that `supervisor.run.worker.as.user` is intended to provide.<\/p>\n<p>Mitigation<\/p>\n<p>Upgrade to 3.1.0, where the resolved target must lie inside the expected root at both call sites.<\/p>\n<p>Users who cannot upgrade immediately should restrict topology submission to trusted principals, and may<br \/>\nreject submissions whose `topology.blobstore.map` entries contain path separators or `..` segments before<br \/>\nthey reach Nimbus.<\/p>\n<p>Credit<\/p>\n<p>The ASF &#8212; found 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>A topology&#8217;s `topology.blobstore.map` lets the submitter choose a local name for each blob that the<br \/>\nsupervisor localises. That name was used to build a path under the topology&#8217;s working d<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-22312","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/22312","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=22312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}