CVE-2026-32685

Path Traversal in gleam docs build via documentation.pages Allows Arbitrary File Read and Write

State
Published
Severity
4.6 Medium
Published
Jun 2, 2026
Updated
Sep 8, 2026
Reserved
Mar 13, 2026

Read the record on cve.org

Description

Path traversal vulnerability in Gleam's handling of custom documentation pages allows arbitrary file read and file write outside the intended documentation output directory.

The documentation.pages entries from gleam.toml are incorporated into filesystem paths without sufficient validation or confinement to the intended project and documentation output directories. The documentation.pages[].path field can be used to write generated documentation files outside the intended build/dev/docs/<package>/ output directory. The documentation.pages[].source field can be used to read files outside the project directory and embed their contents into generated documentation output.

An attacker who can convince a victim to run gleam docs build on an untrusted project, or with untrusted gleam.toml content, can cause local files readable by the victim to be included in generated documentation artifacts, and can cause generated documentation files to be written outside the intended docs output directory.

This issue affects Gleam from 1.16.0 until 1.17.0.

Scores

CVSSScoreVectorSource
4.04.6 MediumCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:NEEF

Weaknesses

  • CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Affected Products

ProductVersions
GleamGleam
  • 1.16.0 to before 1.17.0Affected
GleamGleam
  • 1.16.0 to before 1.17.0Affected
  • 61ed8deb6572b5591ad17d6302c1a38607522f16 to before 81570611906b6b0039c948037094d09a68700f3aAffected
GleamGleam
  • v1.16.0-elixir to before v1.17.0-elixirAffected
  • v1.16.0-erlang to before v1.17.0-erlangAffected
  • v1.16.0-node to before v1.17.0-nodeAffected
  • v1.16.0-node-slim to before v1.17.0-node-slimAffected
  • v1.16.0-elixir-slim to before v1.17.0-elixir-slimAffected
  • v1.16.0-erlang-slim to before v1.17.0-erlang-slimAffected
  • v1.16.0-erlang-alpine to before v1.17.0-erlang-alpineAffected
  • v1.16.0-elixir-alpine to before v1.17.0-elixir-alpineAffected
  • v1.16.0-node-alpine to before v1.17.0-node-alpineAffected
  • v1.16.0-scratch to before v1.17.0-scratchAffected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.