CVE-2026-42795

Symlink Following in Hex Package Export Allows Embedding Files Outside Project Root

MEDIUM
5.1
CVSS Score
Published: June 2, 2026 at 01:41 PM UTC
Updated: October 6, 2026 at 10:10 PM UTC
2 products affected across 2 vendorsGleamGleam

Using Gleam by Gleam?

Get instant alerts when new vulnerabilities affect Gleam - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.1
Exploit prediction
EPSS 0.2%
SSVC
PoC

Description

Symlink following vulnerability in Gleam's Hex package export allows files outside the project root to be embedded in the generated package tarball. The file collection helpers (gleam_files, native_files, private_files) in compiler-cli/src/fs.rs use follow_links(true) when walking publishable directories such as src/ and priv/. The collected paths are added to the package archive via add_path_to_tar in compiler-cli/src/publish.rs without verifying that the resolved target remains within the project root. A symlink placed under a publishable directory will cause gleam export hex-tarball or gleam publish to embed the contents of the symlink target into the generated Hex package. An attacker with write access to the project repository can place a symlink in src/ or priv/ pointing to an arbitrary file. When a maintainer or CI pipeline runs gleam publish or gleam export hex-tarball, local files readable by the publisher (such as secrets, tokens, or SSH keys) are silently embedded into the published package artifact. This issue affects Gleam from 0.10.0-rc1 until 1.17.0.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

0.10.0-rc1 ≤ v < 1.17.0
Affected range stops below 1.17.0, so it looks safe — our inference, not a vendor statement
0.10.0-rc1 ≤ v < 1.17.0v0.10.0-rc1-elixir ≤ v < v1.17.0-elixirv0.10.0-rc1-elixir-alpine ≤ v < v1.17.0-elixir-alpinev0.10.0-rc1-elixir-slim ≤ v < v1.17.0-elixir-slimv0.10.0-rc1-erlang ≤ v < v1.17.0-erlangv0.10.0-rc1-erlang-alpine ≤ v < v1.17.0-erlang-alpinev0.10.0-rc1-erlang-slim ≤ v < v1.17.0-erlang-slimv0.10.0-rc1-node ≤ v < v1.17.0-nodev0.10.0-rc1-node-alpine ≤ v < v1.17.0-node-alpinev0.10.0-rc1-node-slim ≤ v < v1.17.0-node-slimv0.10.0-rc1-scratch ≤ v < v1.17.0-scratch0.10.0-rc10.10.0-rc1-elixir0.10.0-rc1-elixir-alpine0.10.0-rc1-elixir-slim0.10.0-rc1-erlang0.10.0-rc1-erlang-alpine0.10.0-rc1-erlang-slim0.10.0-rc1-node0.10.0-rc1-node-alpine0.10.0-rc1-node-slim0.10.0-rc1-scratchc82a2d83bd0c06cafdc196820deb3f89a9b3ff7c
Vendor states this is fixed in 6435a5528b9ae0449e2f32be579641ec485f6866 (fixed)
Affected range stops below 1.17.0, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-elixir, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-elixir-alpine, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-elixir-slim, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-erlang, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-erlang-alpine, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-erlang-slim, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-node, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-node-alpine, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-node-slim, so it looks safe — our inference, not a vendor statement
Affected range stops below v1.17.0-scratch, so it looks safe — our inference, not a vendor statement

Remediation

No guide yet

No remediation guidance has been written for this CVE yet. What the record does show:

SSVC — Action Prioritization

SSVCPoCNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

5.1MEDIUMEEF
Vector?

Quick Info

StatusDEFERRED
CWE
CWE-59

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card