CVE-2026-32685
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.
Leer descripción completaMostrar menos
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.
CVSS
- Versión: 4.0
- Vector: CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/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
- Puntuación base: 4.6
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.19%
- Percentil entre todas las CVEs puntuadas: 8
- Fecha de la puntuación: 6/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-22
Referencias
- https://cna.erlef.org/cves/CVE-2026-32685.html
- https://github.com/gleam-lang/gleam/commit/81570611906b6b0039c948037094d09a68700f3a
- https://github.com/gleam-lang/gleam/commit/c9230cd3045de8fd8481dae3a4557c0146df1430
- https://github.com/gleam-lang/gleam/security/advisories/GHSA-wjx8-7w8m-p4v7
- https://osv.dev/vulnerability/EEF-CVE-2026-32685
- https://github.com/gleam-lang/gleam/security/advisories/GHSA-wjx8-7w8m-p4v7
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-32685",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-32685",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-06-02T15:06:11.916565Z"
}
}
],
"cvssMetricV40": [
{
"type": "Secondary",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"cvssData": {
"Safety": "NOT_DEFINED",
"version": "4.0",
"Recovery": "NOT_DEFINED",
"baseScore": 4.6,
"Automatable": "NOT_DEFINED",
"attackVector": "LOCAL",
"baseSeverity": "MEDIUM",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/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",
"exploitMaturity": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED",
"userInteraction": "ACTIVE",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"subIntegrityImpact": "NONE",
"vulnIntegrityImpact": "LOW",
"integrityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"availabilityRequirement": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"subConfidentialityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"confidentialityRequirement": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED"
}
}
]
},
"affected": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"affectedData": [
{
"cpes": [
"cpe:2.3:a:gleam-lang:gleam:*:*:*:*:*:*:*:*"
],
"vendor": "Gleam",
"modules": [
"compiler-core",
"compiler-cli"
],
"product": "Gleam",
"versions": [
{
"status": "affected",
"version": "1.16.0",
"lessThan": "1.17.0",
"versionType": "semver"
}
],
"packageURL": "pkg:software-id/gleam.run/gleam",
"packageName": "gleam",
"programFiles": [
"compiler-core/src/config.rs",
"compiler-core/src/docs.rs",
"compiler-cli/src/docs.rs",
"compiler-cli/src/fs.rs"
],
"defaultStatus": "unaffected",
"programRoutines": [
{
"name": "compiler_cli::docs::build_project"
},
{
"name": "compiler_core::docs::generate_html"
}
]
},
{
"cpes": [
"cpe:2.3:a:gleam-lang:gleam:*:*:*:*:*:*:*:*"
],
"repo": "https://github.com/gleam-lang/gleam",
"vendor": "Gleam",
"modules": [
"compiler-core",
"compiler-cli"
],
"product": "Gleam",
"versions": [
{
"status": "affected",
"version": "1.16.0",
"lessThan": "1.17.0",
"versionType": "semver"
},
{
"status": "affected",
"version": "61ed8deb6572b5591ad17d6302c1a38607522f16",
"lessThan": "81570611906b6b0039c948037094d09a68700f3a",
"versionType": "git"
}
],
"packageURL": "pkg:github/gleam-lang/gleam",
"packageName": "gleam-lang/gleam",
"programFiles": [
"compiler-core/src/config.rs",
"compiler-core/src/docs.rs",
"compiler-cli/src/docs.rs",
"compiler-cli/src/fs.rs"
],
"collectionURL": "https://github.com",
"defaultStatus": "unaffected",
"programRoutines": [
{
"name": "compiler_cli::docs::build_project"
},
{
"name": "compiler_core::docs::generate_html"
}
]
},
{
"cpes": [
"cpe:2.3:a:gleam-lang:gleam:*:*:*:*:*:*:*:*"
],
"vendor": "Gleam",
"modules": [
"compiler-core",
"compiler-cli"
],
"product": "Gleam",
"versions": [
{
"status": "affected",
"version": "v1.16.0-elixir",
"lessThan": "v1.17.0-elixir",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-erlang",
"lessThan": "v1.17.0-erlang",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-node",
"lessThan": "v1.17.0-node",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-node-slim",
"lessThan": "v1.17.0-node-slim",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-elixir-slim",
"lessThan": "v1.17.0-elixir-slim",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-erlang-slim",
"lessThan": "v1.17.0-erlang-slim",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-erlang-alpine",
"lessThan": "v1.17.0-erlang-alpine",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-elixir-alpine",
"lessThan": "v1.17.0-elixir-alpine",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-node-alpine",
"lessThan": "v1.17.0-node-alpine",
"versionType": "other"
},
{
"status": "affected",
"version": "v1.16.0-scratch",
"lessThan": "v1.17.0-scratch",
"versionType": "other"
}
],
"packageURL": "pkg:oci/gleam?repository_url=ghcr.io/gleam-lang",
"packageName": "gleam-lang/gleam",
"programFiles": [
"compiler-core/src/config.rs",
"compiler-core/src/docs.rs",
"compiler-cli/src/docs.rs",
"compiler-cli/src/fs.rs"
],
"collectionURL": "https://ghcr.io",
"defaultStatus": "unaffected",
"programRoutines": [
{
"name": "compiler_cli::docs::build_project"
},
{
"name": "compiler_core::docs::generate_html"
}
]
}
]
}
],
"published": "2026-06-02T14:16:50.610",
"references": [
{
"url": "https://cna.erlef.org/cves/CVE-2026-32685.html",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/gleam-lang/gleam/commit/81570611906b6b0039c948037094d09a68700f3a",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/gleam-lang/gleam/commit/c9230cd3045de8fd8481dae3a4557c0146df1430",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/gleam-lang/gleam/security/advisories/GHSA-wjx8-7w8m-p4v7",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-32685",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/gleam-lang/gleam/security/advisories/GHSA-wjx8-7w8m-p4v7",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
],
"vulnStatus": "Deferred",
"weaknesses": [
{
"type": "Secondary",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"description": [
{
"lang": "en",
"value": "CWE-22"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Path traversal vulnerability in Gleam's handling of custom documentation pages allows arbitrary file read and file write outside the intended documentation output directory.\n\nThe 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.\n\nAn 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.\n\nThis issue affects Gleam from 1.16.0 until 1.17.0."
},
{
"lang": "es",
"value": "Una vulnerabilidad de salto de ruta en el manejo de Gleam de las páginas de documentación personalizadas permite la lectura y escritura arbitraria de archivos fuera del directorio de salida de documentación previsto.\n\nLas entradas documentation.pages de gleam.toml se incorporan en rutas del sistema de archivos sin suficiente validación o confinamiento a los directorios de salida de proyecto y documentación previstos. El campo documentation.pages[].path puede usarse para escribir archivos de documentación generados fuera del directorio de salida previsto build/dev/docs/<package>/. El campo documentation.pages[].source puede usarse para leer archivos fuera del directorio del proyecto e incrustar su contenido en la salida de documentación generada.\n\nUn atacante que pueda convencer a una víctima de ejecutar gleam docs build en un proyecto no confiable, o con contenido gleam.toml no confiable, puede hacer que archivos locales legibles por la víctima se incluyan en artefactos de documentación generados, y puede hacer que los archivos de documentación generados se escriban fuera del directorio de salida de docs previsto.\n\nEste problema afecta a Gleam desde la versión 1.16.0 hasta la 1.17.0."
}
],
"lastModified": "2026-09-08T01:17:30.287",
"sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
}