CVE-2026-43965

Medium

Description

Path traversal vulnerability in Gleam's dependency management allows arbitrary directory deletion via malicious build/packages/packages.toml content. Package keys read from build/packages/packages.toml by LocalPackages::read_from_disc are passed without validation to paths.build_packages_package(), which constructs a filesystem path by joining the project build directory with the attacker-controlled key. The resulting path is then passed to fs::delete_directory (which calls remove_dir_all). No check is performed to ensure the path remains within the intended build/packages/ directory. Both absolute paths and relative traversal sequences (e.g. ../) are accepted as package keys, allowing deletion of arbitrary directories. An attacker who can cause a victim to run gleam deps download on a project containing a malicious build/packages/packages.toml (e.g. by committing the normally-gitignored file to a repository) can cause arbitrary directories on the victim's system to be recursively deleted. This issue affects Gleam from 0.18.0-rc1 until 1.17.0.

SeverityMedium
CVSS5.6
Exploit probability—
ProductGleam
PublishedJun 2, 2026
First seenJun 2, 2026

How to fix

Update
  • gleam-lang gleam1.17.0, 690ca069817bee5f77a28fc3e360627c1da19291, v1.17.0-elixir, v1.17.0-erlang, v1.17.0-node, v1.17.0-node-slim, v1.17.0-elixir-slim, v1.17.0-erlang-slim, v1.17.0-erlang-alpine, v1.17.0-elixir-alpine, v1.17.0-node-alpine, v1.17.0-scratch or later

Affected products

ProductAffected versionsFixed in
gleam-lang gleam0.18.0-rc1 ≤ v < 1.17.0, ed7aec0484f10d60978b63788c8a6497590855ab ≤ v < 690ca069817bee5f77a28fc3e360627c1da19291, v0.18.0-rc1-elixir ≤ v < v1.17.0-elixir, v0.18.0-rc1-erlang ≤ v < v1.17.0-erlang, v0.18.0-rc1-node ≤ v < v1.17.0-node, v0.18.0-rc1-node-slim ≤ v < v1.17.0-node-slim, v0.18.0-rc1-elixir-slim ≤ v < v1.17.0-elixir-slim, v0.18.0-rc1-erlang-slim ≤ v < v1.17.0-erlang-slim, v0.18.0-rc1-erlang-alpine ≤ v < v1.17.0-erlang-alpine, v0.18.0-rc1-elixir-alpine ≤ v < v1.17.0-elixir-alpine, v0.18.0-rc1-node-alpine ≤ v < v1.17.0-node-alpine, v0.18.0-rc1-scratch ≤ v < v1.17.0-scratch1.17.0, 690ca069817bee5f77a28fc3e360627c1da19291, v1.17.0-elixir, v1.17.0-erlang, v1.17.0-node, v1.17.0-node-slim, v1.17.0-elixir-slim, v1.17.0-erlang-slim, v1.17.0-erlang-alpine, v1.17.0-elixir-alpine, v1.17.0-node-alpine, v1.17.0-scratch

Check your version

Choose the product and enter the version you run to see whether it falls in the affected range.

In the Intelligence 360 plan

Attack Surface Management

See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.