{"id":36295,"date":"2026-10-13T04:32:37","date_gmt":"2026-10-12T20:32:37","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-103061"},"modified":"2026-10-13T04:32:37","modified_gmt":"2026-10-12T20:32:37","slug":"cve-2026-103061","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-103061","title":{"rendered":"CVE-2026-103061 &#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 gleam-lang gleam allows a malicious package publisher to delete a directory outside the project&#8217;s build directory when a developer builds a project.<\/p>\n<p>A Hex package release&#8217;s metadata carries an app field with the release&#8217;s OTP application name. Gleam reads this field from the hex.pm release API when it downloads dependencies and uses it as the package&#8217;s build directory name without validating it (hex_manifest_package in compiler-cli\/src\/dependencies.rs, ProjectPaths::build_directory_for_package). When a dependency fails to compile, Gleam deletes that directory with remove_dir_all. hex.pm didn&#8217;t restrict the field to a directory name before 2026-10-12, so a publisher could set it to a value such as ..\/..\/..\/..\/target or an absolute path. When a project depends on such a release directly or transitively and the release fails to compile, gleam build, gleam check, gleam run, gleam test or gleam export deletes the directory the name resolves to. For a pure Gleam package no publisher code runs.<\/p>\n<p>This issue affects gleam: from 0.32.4 before 1.19.2.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Improper Limitation of a Pathname to a Restricted Directory (&#8216;Path Traversal&#8217;) vulnerability in gleam-lang gleam allows a malicious package publisher to delete a directory outside the project&#8217;s build <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-36295","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/36295","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=36295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=36295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=36295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}