CVE-2026-43965
Path Traversal in build/packages/packages.toml Allows Arbitrary Directory Deletion
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.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
5.6
Path Traversal in build/packages/packages.toml Allows Arbitrary Directory Deletion
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.
- Record
CVE-2026-43965- CVSS 4.0
- 5.6 Medium
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-22
- Updated
- 2026-11-02
EUVDEUVD-2026-33926
5.6
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.
- Record
EUVD-2026-33926- CVSS 4.0
- 5.6 Medium
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
NVD
5.6
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.
- Record
CVE-2026-43965- CVSS 4.0
- 5.6 Medium
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-22
- Updated
- 2026-11-02
OSV
5.6
Path Traversal in build/packages/packages.toml Allows Arbitrary Directory Deletion
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.
- Record
CVE-2026-43965- CVSS 4.0
- 5.6 Medium
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVEEF-CVE-2026-43965
5.6
Path Traversal in build/packages/packages.toml Allows Arbitrary Directory Deletion
Summary
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.
- Record
EEF-CVE-2026-43965- CVSS 4.0
- 5.6 Medium
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10953-1 No score
gleam-1.17.0-1.1 on GA media
These are all security issues fixed in the gleam-1.17.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10953-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21143-1 No score
Security update for gleam
This update for gleam fixes the following issues:
Changes in gleam:
-
Update to 1.17.0:
- Fixed security vulnerabilities:
- Restrict custom documentation page
pathandsourcevalues sogleam docs buildcannot escape the docs output directory or project root (bsc#1267396, CVE-2026-32685) - Restrict publication tarball creation so they cannot contain files from outside the project root (bsc#1267397, CVE-2026-42795)
- Stricter deserialisation rules for files internal the build directory to reject corrupted data (bsc#1267398, CVE-2026-43965)
- Restrict custom documentation page
- All features and bug fixes are extensively highlighted with
examples in the upstream blog post at
https://gleam.run/news/single-file-gleam-beam-programs-with-escript/
and changelog at
https://github.com/gleam-lang/gleam/blob/v1.17.0/CHANGELOG.md some of
the highlights include:
- Various JavaScript code generation fixes and optimization
- Various compiler error handling improvements
- Ability to use the
todokeyword in constants - Improved handling of Git monorepos during package management
- Ability to create escripts from Gleam programs
- Various language server improvements like reference highlighting, record hovering and code actions
- Fixed security vulnerabilities:
-
Update to 1.16.0:
- Changelog v1.16.0: https://gleam.run/news/javascript-source-maps/
-
Update to 1.15.1:
- Changelog v1.12.0: https://gleam.run/news/no-more-dependency-management-headaches/
- Changelog v1.13.0: https://gleam.run/news/formalising-external-apis/
- Changelog v1.14.0: https://gleam.run/news/the-happy-holidays-2025-release/
- Changelog v1.15.0: https://gleam.run/news/upgrading-hex-security/
-
Replace deprecated "disabled" mode with "manual" in _service
-
Update to 1.11.0:
- The displaying of internal types in HTML documentation has been improved
- A warning is now emitted when the same module is imported multiple times into the same module with different aliases
- Fixed a bug where a bit array segment matching on a floating point number would match with NaN or Infinity on the JavaScript target
- https://github.com/gleam-lang/gleam/blob/v1.11.1/CHANGELOG.md
-
Update to 1.10.0:
-
skip unit tests that requires networking upon build
-
Update to 1.9.0:
- Changelog: https://gleam.run/news/hello-echo-hello-git/
-
Update to 1.8.1:
- Fixed a metadata caching bug where accessors for opaque types could sometimes be used in other modules. (Louis Pilfold)
- Changelog: https://gleam.run/news/gleam-gets-rename-variable/
- Update to 1.7.0:
- Update to 1.6.3:
- Fixed a bug where Gleam would be unable to compile to BEAM bytecode on older versions of Erlang/OTP. (yoshi)
- Update to 1.6.2:
- Fixed a bug where patterns in use expressions would not be checked to ensure that they were exhaustive. (Surya Rose)
- Update to 1.6.1:
- fix update use_manifest logic (Jason Sipula)
- 1.6.0 Changelog: https://gleam.run/news/context-aware-compilation/
- Record
openSUSE-SU-2026:21143-1- Updated
- 2026-11-02
Affected products
Affected packages
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-43965 is a medium vulnerability (CVSS 5.6) in Gleam, published June 2, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.23%, the 13th percentile. No source names a fixed version.
References
github.com/gleam-lang/gleam/security/advisories/GHSA-jqvf-f6p2-wrv3
cna.erlef.org/cves/CVE-2026-43965.html
osv.dev/vulnerability/EEF-CVE-2026-43965
github.com/gleam-lang/gleam/commit/690ca069817bee5f77a28fc3e360627c1da19291
ghcr.io
github.com
Show 9 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43965.json
nvd.nist.gov/vuln/detail/CVE-2026-43965
github.com/gleam-lang/gleam
suse.com/security/cve/CVE-2026-32685
suse.com/security/cve/CVE-2026-42795
suse.com/security/cve/CVE-2026-43965
bugzilla.suse.com/1267396
bugzilla.suse.com/1267397
bugzilla.suse.com/1267398