# CVE-2026-32146: Improper Path Validation in Git Dependency Handling Allows Arbitrary File System Modification

Status: published. Published: 2026-04-11. Updated: 2026-11-11.

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.

## Remediation

- 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: EEF)
- workaround: * 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: EEF)
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: EEF) — https://github.com/gleam-lang/gleam/commit/1aa5d8e594b0aa240bb213fce6ee19c65e6d5bcf
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: EEF) — https://github.com/gleam-lang/gleam/commit/2dc0467f822c75de94697a912755d172928ee40a
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: EEF) — https://github.com/gleam-lang/gleam/commit/92aae3913570e8d8962f6399404777d313045bfa
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db) — https://github.com/gleam-lang/gleam/commit/1aa5d8e594b0aa240bb213fce6ee19c65e6d5bcf
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db) — https://github.com/gleam-lang/gleam/commit/2dc0467f822c75de94697a912755d172928ee40a

## Affected products and versions

- Gleam / Gleam (gleam): ≥ 1.9.0-rc1; < 1.15.4 (affected, semver); ≥ 1.16.0-rc1; < 1.16.0-rc2 (affected, semver). Source: CNA: EEF
- Gleam / Gleam (gleam-lang/gleam): ≥ 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). Source: CNA: EEF
- Gleam / Gleam (gleam-lang/gleam): ≥ a4fde22445ab8e5cc79c2ff48971616cb570702c; < * (affected, git); unaffected at 2dc0467f822c75de94697a912755d172928ee40a; unaffected at 92aae3913570e8d8962f6399404777d313045bfa. Source: CNA: EEF
- Red Hat / Red Hat Enterprise Linux 10 (firefox): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 10 (gjs): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 10 (thunderbird): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 7 (firefox): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 8 (firefox): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 8 (mozjs60): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 8 (thunderbird): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 9 (firefox): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 9 (gjs): Version range not reported. Source: ADP: redhat-SADP
- Red Hat / Red Hat Enterprise Linux 9 (thunderbird): Version range not reported. Source: ADP: redhat-SADP

## NVD configuration conditions

Affected CPE matches depend on the following AND/OR and negation conditions:

```json
[
  {
    "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"
  }
]
```

## Severity and prioritization

- CVSS 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; source: CNA: EEF

- CVSS 3.1: 8.6 (high); CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H; source: ADP: redhat-SADP

- CVSS 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; source: NVD: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db

- CVSS 3.1: 7.8 (high); CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H; source: NVD: nvd@nist.gov

- CVSS 3.1: 8.6 (high); CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H; source: NVD: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c

- CISA KEV: No listing in collected sources

- EPSS: 0.24% as of 2026-11-10; percentile 15.67%

- SSVC: exploitation poc; automatable no; technical impact partial; source ADP: CISA-ADP

- Weaknesses: CWE-22

## Exploit evidence

- exploit: https://github.com/gleam-lang/gleam/security/advisories/GHSA-vq5j-55vx-wq8j (6b3ad84c-e1a6-4bf7-a703-f496b71e49db)

## References

- https://github.com/gleam-lang/gleam/security/advisories/GHSA-vq5j-55vx-wq8j (CNA: EEF; vendor-advisory, related)

- https://cna.erlef.org/cves/CVE-2026-32146.html (CNA: EEF; related)

- https://osv.dev/vulnerability/EEF-CVE-2026-32146 (CNA: EEF; related)

- https://github.com/gleam-lang/gleam/commit/1aa5d8e594b0aa240bb213fce6ee19c65e6d5bcf (CNA: EEF; patch)

- https://github.com/gleam-lang/gleam/commit/a4fde22445ab8e5cc79c2ff48971616cb570702c (CNA: EEF; related)

- https://github.com/gleam-lang/gleam/commit/2dc0467f822c75de94697a912755d172928ee40a (CNA: EEF; patch)

- https://github.com/gleam-lang/gleam/commit/92aae3913570e8d8962f6399404777d313045bfa (CNA: EEF; patch)

- https://access.redhat.com/security/cve/CVE-2026-32146 (ADP: redhat-SADP; vdb-entry, x_refsource_REDHAT)

- https://bugzilla.redhat.com/show_bug.cgi?id=2457578 (ADP: redhat-SADP; issue-tracking, x_refsource_REDHAT)

- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-32146.json (ADP: redhat-SADP; x_sadp-csaf-vex)

- https://cna.erlef.org/cves/CVE-2026-32146.html (6b3ad84c-e1a6-4bf7-a703-f496b71e49db; Third Party Advisory)

- https://github.com/gleam-lang/gleam/commit/1aa5d8e594b0aa240bb213fce6ee19c65e6d5bcf (6b3ad84c-e1a6-4bf7-a703-f496b71e49db; Patch)

- https://github.com/gleam-lang/gleam/commit/2dc0467f822c75de94697a912755d172928ee40a (6b3ad84c-e1a6-4bf7-a703-f496b71e49db; Patch)

- https://github.com/gleam-lang/gleam/commit/92aae3913570e8d8962f6399404777d313045bfa (6b3ad84c-e1a6-4bf7-a703-f496b71e49db)

- https://github.com/gleam-lang/gleam/commit/a4fde22445ab8e5cc79c2ff48971616cb570702c (6b3ad84c-e1a6-4bf7-a703-f496b71e49db)

- https://github.com/gleam-lang/gleam/security/advisories/GHSA-vq5j-55vx-wq8j (6b3ad84c-e1a6-4bf7-a703-f496b71e49db; Exploit, Vendor Advisory)

- https://osv.dev/vulnerability/EEF-CVE-2026-32146 (6b3ad84c-e1a6-4bf7-a703-f496b71e49db; Third Party Advisory)

- https://access.redhat.com/security/cve/CVE-2026-32146 (0b0ca135-0b70-47e7-9f44-1890c2a1c46c)

- https://bugzilla.redhat.com/show_bug.cgi?id=2457578 (0b0ca135-0b70-47e7-9f44-1890c2a1c46c)

- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-32146.json (0b0ca135-0b70-47e7-9f44-1890c2a1c46c)

## Provenance

- CNA: EEF: https://www.cve.org/CVERecord?id=CVE-2026-32146; retrieved 2026-11-11; source updated 2026-11-11

- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-32146; retrieved 2026-11-11; source updated 2026-11-10

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-32146; retrieved 2026-11-10; source updated Not reported

Revision: ebaeec239a3887ff593c82c84650c45f283d27df700d9aecd2e4fcad342c0e35

Canonical: https://y2.dev/cve/CVE-2026-32146

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.