CVE-2026-43965

Path Traversal in build/packages/packages.toml Allows Arbitrary Directory Deletion

State
Published
Severity
5.6 Medium
Published
Jun 2, 2026
Updated
Sep 8, 2026
Reserved
May 4, 2026

Read the record on cve.org

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.

Scores

CVSSScoreVectorSource
4.05.6 MediumCVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NEEF

Weaknesses

  • CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Affected Products

ProductVersions
GleamGleam
  • 0.18.0-rc1 to before 1.17.0Affected
GleamGleam
  • 0.18.0-rc1 to before 1.17.0Affected
  • ed7aec0484f10d60978b63788c8a6497590855ab to before 690ca069817bee5f77a28fc3e360627c1da19291Affected
GleamGleam
  • v0.18.0-rc1-elixir to before v1.17.0-elixirAffected
  • v0.18.0-rc1-erlang to before v1.17.0-erlangAffected
  • v0.18.0-rc1-node to before v1.17.0-nodeAffected
  • v0.18.0-rc1-node-slim to before v1.17.0-node-slimAffected
  • v0.18.0-rc1-elixir-slim to before v1.17.0-elixir-slimAffected
  • v0.18.0-rc1-erlang-slim to before v1.17.0-erlang-slimAffected
  • v0.18.0-rc1-erlang-alpine to before v1.17.0-erlang-alpineAffected
  • v0.18.0-rc1-elixir-alpine to before v1.17.0-elixir-alpineAffected
  • v0.18.0-rc1-node-alpine to before v1.17.0-node-alpineAffected
  • v0.18.0-rc1-scratch to before v1.17.0-scratchAffected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.