{"id":36106,"date":"2026-10-13T00:33:11","date_gmt":"2026-10-12T16:33:11","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-96612"},"modified":"2026-10-13T00:33:11","modified_gmt":"2026-10-12T16:33:11","slug":"cve-2026-96612","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-96612","title":{"rendered":"CVE-2026-96612 &#8211; Improper Limitation of a Pathname to a Restricted Directory (&#8216;Path Traversal&#8217;) vulnerabili"},"content":{"rendered":"<p>Improper Limitation of a Pathname to a Restricted Directory (&#8216;Path Traversal&#8217;) vulnerability in hexpm hex allows a malicious package publisher to delete a directory outside the project&#8217;s deps directory and extract package files into it when a developer fetches dependencies.<\/p>\n<p>A package release&#8217;s requirements carry an app label that names the dependency&#8217;s OTP application. Hex takes this label from the repository&#8217;s signed registry and uses it as the dependency&#8217;s application name without validating it (Hex.RemoteConverger.deps\/2, Hex.Mix.to_lock\/1). Mix derives the dependency&#8217;s checkout directory as deps\/, and Hex.SCM.update\/1 runs File.rm_rf!\/1 on that directory and unpacks the package into it. hex.pm only checks the label&#8217;s length, so a publisher can set it to a value such as ..\/..\/target. When a project depends on such a release directly or transitively, mix deps.get or mix deps.update deletes the directory the label resolves to and writes the labelled package&#8217;s files there. This happens before any dependency code is compiled.<\/p>\n<p>This issue affects hex: from 0.6.0 before 2.5.2.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Improper Limitation of a Pathname to a Restricted Directory (&#8216;Path Traversal&#8217;) vulnerability in hexpm hex allows a malicious package publisher to delete a directory outside the project&#8217;s deps director<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-36106","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/36106","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=36106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=36106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=36106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}