CVE-2026-32146
Improper Path Validation in Git Dependency Handling Allows Arbitrary File System Modification
Improper path validation vulnerability in the Gleam compiler's handling of git dependencies allows arbitrary file system modification during dependency download. Dependency names from gleam.toml and manifest.toml are incorporated into filesystem paths without sufficient validation or confinement to the intended dependency directory, allowing attacker-controlled paths (via relative traversal such as ../ or absolute paths) to target filesystem locations outside that directory. When resolving git dependencies (e.g. via gleam deps download), the computed path is used for filesystem operations including directory deletion and creation. This vulnerability occurs during the dependency resolution and download phase, which is generally expected to be limited to fetching and preparing dependencies within a confined directory. A malicious direct or transitive git dependency can exploit this issue to delete and overwrite arbitrary directories outside the intended dependency directory, including attacker-chosen absolute paths, potentially causing data loss. In some environments, this may be further leveraged to achieve code execution, for example by overwriting git hooks or shell configuration files. This issue affects gleam: from 1.9.0-rc1 before 1.15.4 and from 1.16.0-rc1 before 1.16.0-rc2.
Fixes and workarounds
Fix
Upgrade to Gleam 1.15.4 or later. Both patches must be applied: the original incomplete fix (1aa5d8e594b0aa240bb213fce6ee19c65e6d5bcf, backported as 55bb36e6d7febfbbc48c4d001e0ae13eb0312d78 to 1.15) and the follow-up fix (2dc0467f822c75de94697a912755d172928ee40a, backported as 92aae3913570e8d8962f6399404777d313045bfa to 1.15). Gleam 1.15.4 includes both.
Source: CNA: EEFWorkaround
* Avoid using untrusted git dependencies, especially without pinning to a specific commit SHA * Review dependency trees carefully, including transitive git dependencies * Run dependency resolution commands in a restricted or isolated environment (e.g. containers)
Source: CNA: EEFFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: CNA: EEFFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: CNA: EEFFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: CNA: EEFFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: 6b3ad84c-e1a6-4bf7-a703-f496b71e49dbFix
The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.
Source: 6b3ad84c-e1a6-4bf7-a703-f496b71e49dbAffected products and versions
| Product | Versions | Authority |
|---|---|---|
| Gleam Gleam gleam
software-id |
≥ 1.9.0-rc1; < 1.15.4 (affected, semver) ≥ 1.16.0-rc1; < 1.16.0-rc2 (affected, semver) Other versions: unaffected |
CNA: EEF |
| Gleam Gleam gleam-lang/gleam
oci |
≥ v1.9.0-rc1-elixir; < v1.15.4-elixir (affected, other) ≥ v1.9.0-rc1-erlang; < v1.15.4-erlang (affected, other) ≥ v1.9.0-rc1-node; < v1.15.4-node (affected, other) ≥ v1.9.0-rc1-node-slim; < v1.15.4-node-slim (affected, other) ≥ v1.9.0-rc1-elixir-slim; < v1.15.4-elixir-slim (affected, other) ≥ v1.9.0-rc1-erlang-slim; < v1.15.4-erlang-slim (affected, other) ≥ v1.9.0-rc1-erlang-alpine; < v1.15.4-erlang-alpine (affected, other) ≥ v1.9.0-rc1-elixir-alpine; < v1.15.4-elixir-alpine (affected, other) ≥ v1.9.0-rc1-node-alpine; < v1.15.4-node-alpine (affected, other) ≥ v1.9.0-rc1-scratch; < v1.15.4-scratch (affected, other) ≥ v1.16.0-rc1-elixir; < v1.16.0-rc2-elixir (affected, other) ≥ v1.16.0-rc1-erlang; < v1.16.0-rc2-erlang (affected, other) ≥ v1.16.0-rc1-node; < v1.16.0-rc2-node (affected, other) ≥ v1.16.0-rc1-node-slim; < v1.16.0-rc2-node-slim (affected, other) ≥ v1.16.0-rc1-elixir-slim; < v1.16.0-rc2-elixir-slim (affected, other) ≥ v1.16.0-rc1-erlang-slim; < v1.16.0-rc2-erlang-slim (affected, other) ≥ v1.16.0-rc1-erlang-alpine; < v1.16.0-rc2-erlang-alpine (affected, other) ≥ v1.16.0-rc1-elixir-alpine; < v1.16.0-rc2-elixir-alpine (affected, other) ≥ v1.16.0-rc1-node-alpine; < v1.16.0-rc2-node-alpine (affected, other) ≥ v1.16.0-rc1-scratch; < v1.16.0-rc2-scratch (affected, other) Other versions: unaffected |
CNA: EEF |
| Gleam Gleam gleam-lang/gleam
github |
≥ a4fde22445ab8e5cc79c2ff48971616cb570702c; < * (affected, git); unaffected at 2dc0467f822c75de94697a912755d172928ee40a; unaffected at 92aae3913570e8d8962f6399404777d313045bfa
Other versions: unaffected |
CNA: EEF |
| Red Hat Enterprise Linux 10 Red Hat firefox
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 10 Red Hat gjs
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 10 Red Hat thunderbird
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 7 Red Hat firefox
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 8 Red Hat firefox
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 8 Red Hat mozjs60
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 8 Red Hat thunderbird
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 9 Red Hat firefox
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 9 Red Hat gjs
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
| Red Hat Enterprise Linux 9 Red Hat thunderbird
https://access.redhat.com/downloads/content/package-browser/ |
Range not reported
Other versions: unaffected |
ADP: redhat-SADP |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
NVD applicability configurations (1)
These expressions retain AND/OR operators, negation, and required environmental products. A listed product is not sufficient to establish exposure when additional conditions apply.
[
{
"negate": false,
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:lpil:gleam:*:*:*:*:*:*:*:*",
"versionEndExcluding": "1.15.4",
"versionStartIncluding": "1.9.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "OR"
}
]CVSS assessments
| Version / score | Vector | Authority |
|---|---|---|
| 4.0 / 8.3 high |
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:N/SC:H/SI:H/SA:H | CNA: EEF |
| 3.1 / 8.6 high |
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H | ADP: redhat-SADP |
| 4.0 / 8.3 high |
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:N/SC:H/SI:H/SA:H/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 | NVD: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db |
| 3.1 / 7.8 high |
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H | NVD: [email protected] |
| 3.1 / 8.6 high |
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H | NVD: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c |
Exploit evidence
- https://github.com/gleam-lang/gleam/security/advisories/GHSA-vq5j-55vx-wq8j
exploit · 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
References
- https://github.com/gleam-lang/gleam/security/advisories/GHSA-vq5j-55vx-wq8jCNA: EEF · vendor-advisory, related
- https://cna.erlef.org/cves/CVE-2026-32146.htmlCNA: EEF · related
- https://osv.dev/vulnerability/EEF-CVE-2026-32146CNA: EEF · related
- https://github.com/gleam-lang/gleam/commit/1aa5d8e594b0aa240bb213fce6ee19c65e6d5bcfCNA: EEF · patch
- https://github.com/gleam-lang/gleam/commit/a4fde22445ab8e5cc79c2ff48971616cb570702cCNA: EEF · related
- https://github.com/gleam-lang/gleam/commit/2dc0467f822c75de94697a912755d172928ee40aCNA: EEF · patch
- https://github.com/gleam-lang/gleam/commit/92aae3913570e8d8962f6399404777d313045bfaCNA: EEF · patch
- https://access.redhat.com/security/cve/CVE-2026-32146ADP: redhat-SADP · vdb-entry, x_refsource_REDHAT
- https://bugzilla.redhat.com/show_bug.cgi?id=2457578ADP: redhat-SADP · issue-tracking, x_refsource_REDHAT
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-32146.jsonADP: redhat-SADP · x_sadp-csaf-vex
- https://cna.erlef.org/cves/CVE-2026-32146.html6b3ad84c-e1a6-4bf7-a703-f496b71e49db · Third Party Advisory
- https://github.com/gleam-lang/gleam/commit/1aa5d8e594b0aa240bb213fce6ee19c65e6d5bcf6b3ad84c-e1a6-4bf7-a703-f496b71e49db · Patch
- https://github.com/gleam-lang/gleam/commit/2dc0467f822c75de94697a912755d172928ee40a6b3ad84c-e1a6-4bf7-a703-f496b71e49db · Patch
- https://github.com/gleam-lang/gleam/commit/92aae3913570e8d8962f6399404777d313045bfa6b3ad84c-e1a6-4bf7-a703-f496b71e49db
- https://github.com/gleam-lang/gleam/commit/a4fde22445ab8e5cc79c2ff48971616cb570702c6b3ad84c-e1a6-4bf7-a703-f496b71e49db
- https://github.com/gleam-lang/gleam/security/advisories/GHSA-vq5j-55vx-wq8j6b3ad84c-e1a6-4bf7-a703-f496b71e49db · Exploit, Vendor Advisory
- https://osv.dev/vulnerability/EEF-CVE-2026-321466b3ad84c-e1a6-4bf7-a703-f496b71e49db · Third Party Advisory
- https://access.redhat.com/security/cve/CVE-2026-321460b0ca135-0b70-47e7-9f44-1890c2a1c46c
- https://bugzilla.redhat.com/show_bug.cgi?id=24575780b0ca135-0b70-47e7-9f44-1890c2a1c46c
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-32146.json0b0ca135-0b70-47e7-9f44-1890c2a1c46c
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.