CVE-2026-42795
Symlink Following in Hex Package Export Allows Embedding Files Outside Project Root
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.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- Active
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.1
Symlink Following in Hex Package Export Allows Embedding Files Outside Project Root
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.
- Record
CVE-2026-42795- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-59
- Updated
- 2026-11-02
EUVDEUVD-2026-33928
5.1
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.
- Record
EUVD-2026-33928- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
NVD
5.1
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.
- Record
CVE-2026-42795- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:A/VC:H/VI:N/VA:N/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-59
- Updated
- 2026-11-02
OSV
5.1
Symlink Following in Hex Package Export Allows Embedding Files Outside Project Root
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.
- Record
CVE-2026-42795- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-59
- Updated
- 2026-11-02
OSVEEF-CVE-2026-42795
5.1
Symlink Following in Hex Package Export Allows Embedding Files Outside Project Root
Summary
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.
Workarounds
* Avoid running gleam publish or gleam export hex-tarball on untrusted projects * Review the contents of src/ and priv/ for unexpected symlinks before publishing * Run publishing commands in a restricted or isolated environment (e.g. containers)
- Record
EEF-CVE-2026-42795- CVSS 4.0
- 5.1 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-59
- 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-42795 is a medium vulnerability (CVSS 5.1) 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.20%, the 9th percentile. No source names a fixed version.
References
github.com/gleam-lang/gleam/security/advisories/GHSA-qhh5-fg4c-8gqc
cna.erlef.org/cves/CVE-2026-42795.html
osv.dev/vulnerability/EEF-CVE-2026-42795
github.com/gleam-lang/gleam/commit/6435a5528b9ae0449e2f32be579641ec485f6866
ghcr.io
github.com
Show 9 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42795.json
nvd.nist.gov/vuln/detail/CVE-2026-42795
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