Public vulnerability disclosure

CVE-2026-32146

Improper Path Validation in Git Dependency Handling Allows Arbitrary File System Modification

publishedCWE-22

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.

Technical severity8.3 highCVSS 4.0 · CNA: EEF
Published2026-04-11Source updated 2026-11-11
Collected2026-11-113 attributed sources

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: 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

Fix

The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.

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

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

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

Affected products and versions

Affected products, source version ranges and reporting authorities
ProductVersionsAuthority
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

CVSS scores, vectors and reporting authorities
Version / scoreVectorAuthority
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:HCNA: EEF
3.1 / 8.6
high
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:HADP: 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:XNVD: 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:HNVD: [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:HNVD: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c

Exploit evidence

References

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/cves
https://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.

Agent access JSON · OpenAPI · CVE API guide