{"id":"CVE-2026-103061","revision":"1a300cd8d1194b64ae8fa76c01e5888a","records":[{"revision":"1a300cd8d1194b64ae8fa76c01e5888a","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-103061","aliases":[],"title":"Path traversal in Gleam via unvalidated package application names","description":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') vulnerability in gleam-lang gleam allows a malicious package publisher to delete a directory outside the project's build directory when a developer builds a project.\n\nA Hex package release's metadata carries an app field with the release's OTP application name. Gleam reads this field from the hex.pm release API when it downloads dependencies and uses it as the package's build directory name without validating it (hex_manifest_package in compiler-cli/src/dependencies.rs, ProjectPaths::build_directory_for_package). When a dependency fails to compile, Gleam deletes that directory with remove_dir_all. hex.pm didn't restrict the field to a directory name before 2026-10-12, so a publisher could set it to a value such as ../../../../target or an absolute path. When a project depends on such a release directly or transitively and the release fails to compile, gleam build, gleam check, gleam run, gleam test or gleam export deletes the directory the name resolves to. For a pure Gleam package no publisher code runs.\n\nThis issue affects gleam: from 0.32.4 before 1.19.2.","state":0,"publishedAt":"2026-10-12T18:23:41.507+00:00","modifiedAt":"2026-10-16T17:49:42.484+00:00","affected":[{"ecosystem":"Vendor product","name":"gleam","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"cpes\": [\n                        \"cpe:2.3:a:gleam-lang:gleam:*:*:*:*:*:*:*:*\"\n                    ],\n                    \"defaultStatus\": \"unaffected\",\n                    \"modules\": [\n                        \"gleam_cli::dependencies\",\n                        \"gleam_core::manifest\",\n                        \"gleam_core::paths\",\n                        \"gleam_core::build::project_compiler\",\n                        \"gleam_cli::fs\"\n                    ],\n                    \"packageName\": \"gleam\",\n                    \"packageURL\": \"pkg:software-id/gleam.run/gleam\",\n                    \"product\": \"Gleam\",\n                    \"programFiles\": [\n                        \"compiler-cli/src/dependencies.rs\",\n                        \"compiler-core/src/manifest.rs\",\n                        \"compiler-core/src/paths.rs\",\n                        \"compiler-core/src/build/project_compiler.rs\",\n                        \"compiler-cli/src/fs.rs\"\n                    ],\n                    \"programRoutines\": [\n                        {\n                            \"name\": \"gleam_cli::dependencies::hex_manifest_package\"\n                        },\n                        {\n                            \"name\": \"gleam_core::manifest::ManifestPackage::application_name\"\n                        },\n                        {\n                            \"name\": \"gleam_core::paths::ProjectPaths::build_directory_for_package\"\n                        },\n                        {\n                            \"name\": \"gleam_core::build::project_compiler::ProjectCompiler::load_cache_or_compile_package\"\n                        },\n                        {\n                            \"name\": \"gleam_cli::fs::delete_directory\"\n                        }\n                    ],\n                    \"vendor\": \"Gleam\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"1.19.2\",\n                            \"status\": \"affected\",\n                            \"version\": \"0.32.4\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"},{"ecosystem":"https://ghcr.io","name":"gleam-lang/gleam","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://ghcr.io\",\n                    \"cpes\": [\n                        \"cpe:2.3:a:gleam-lang:gleam:*:*:*:*:*:*:*:*\"\n                    ],\n                    \"defaultStatus\": \"unaffected\",\n                    \"modules\": [\n                        \"gleam_cli::dependencies\",\n                        \"gleam_core::manifest\",\n                        \"gleam_core::paths\",\n                        \"gleam_core::build::project_compiler\",\n                        \"gleam_cli::fs\"\n                    ],\n                    \"packageName\": \"gleam-lang/gleam\",\n                    \"packageURL\": \"pkg:oci/gleam?repository_url=ghcr.io%2Fgleam-lang\",\n                    \"product\": \"Gleam\",\n                    \"programFiles\": [\n                        \"compiler-cli/src/dependencies.rs\",\n                        \"compiler-core/src/manifest.rs\",\n                        \"compiler-core/src/paths.rs\",\n                        \"compiler-core/src/build/project_compiler.rs\",\n                        \"compiler-cli/src/fs.rs\"\n                    ],\n                    \"programRoutines\": [\n                        {\n                            \"name\": \"gleam_cli::dependencies::hex_manifest_package\"\n                        },\n                        {\n                            \"name\": \"gleam_core::manifest::ManifestPackage::application_name\"\n                        },\n                        {\n                            \"name\": \"gleam_core::paths::ProjectPaths::build_directory_for_package\"\n                        },\n                        {\n                            \"name\": \"gleam_core::build::project_compiler::ProjectCompiler::load_cache_or_compile_package\"\n                        },\n                        {\n                            \"name\": \"gleam_cli::fs::delete_directory\"\n                        }\n                    ],\n                    \"vendor\": \"Gleam\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"v1.19.2-elixir\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-elixir\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-erlang\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-erlang\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-node\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-node\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-node-slim\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-node-slim\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-elixir-slim\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-elixir-slim\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-erlang-slim\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-erlang-slim\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-erlang-alpine\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-erlang-alpine\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-elixir-alpine\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-elixir-alpine\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-node-alpine\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-node-alpine\",\n                            \"versionType\": \"other\"\n                        },\n                        {\n                            \"lessThan\": \"v1.19.2-scratch\",\n                            \"status\": \"affected\",\n                            \"version\": \"v0.32.4-scratch\",\n                            \"versionType\": \"other\"\n                        }\n                    ]\n                }"},{"ecosystem":"https://github.com","name":"gleam-lang/gleam","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://github.com\",\n                    \"cpes\": [\n                        \"cpe:2.3:a:gleam-lang:gleam:*:*:*:*:*:*:*:*\"\n                    ],\n                    \"defaultStatus\": \"unaffected\",\n                    \"modules\": [\n                        \"gleam_cli::dependencies\",\n                        \"gleam_core::manifest\",\n                        \"gleam_core::paths\",\n                        \"gleam_core::build::project_compiler\",\n                        \"gleam_cli::fs\"\n                    ],\n                    \"packageName\": \"gleam-lang/gleam\",\n                    \"packageURL\": \"pkg:github/gleam-lang/gleam\",\n                    \"product\": \"Gleam\",\n                    \"programFiles\": [\n                        \"compiler-cli/src/dependencies.rs\",\n                        \"compiler-core/src/manifest.rs\",\n                        \"compiler-core/src/paths.rs\",\n                        \"compiler-core/src/build/project_compiler.rs\",\n                        \"compiler-cli/src/fs.rs\"\n                    ],\n                    \"programRoutines\": [\n                        {\n                            \"name\": \"gleam_cli::dependencies::hex_manifest_package\"\n                        },\n                        {\n                            \"name\": \"gleam_core::manifest::ManifestPackage::application_name\"\n                        },\n                        {\n                            \"name\": \"gleam_core::paths::ProjectPaths::build_directory_for_package\"\n                        },\n                        {\n                            \"name\": \"gleam_core::build::project_compiler::ProjectCompiler::load_cache_or_compile_package\"\n                        },\n                        {\n                            \"name\": \"gleam_cli::fs::delete_directory\"\n                        }\n                    ],\n                    \"repo\": \"https://github.com/gleam-lang/gleam\",\n                    \"vendor\": \"Gleam\",\n                    \"versions\": [\n                        {\n                            \"changes\": [\n                                {\n                                    \"at\": \"d15c981fac6e533d70ac8ee89a6ef4dbf139adc3\",\n                                    \"status\": \"unaffected\"\n                                },\n                                {\n                                    \"at\": \"54bbb2b98af1505b6eed93c45b1936fc76412e5c\",\n                                    \"status\": \"unaffected\"\n                                }\n                            ],\n                            \"lessThan\": \"*\",\n                            \"status\": \"affected\",\n                            \"version\": \"d13f27ee80aae7a521d2e9433c4deaf53f892574\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","score":5.9,"severity":"MEDIUM"}],"references":["https://github.com/gleam-lang/gleam/security/advisories/GHSA-jhcr-c7qm-8589","https://cna.erlef.org/cves/CVE-2026-103061.html","https://osv.dev/vulnerability/EEF-CVE-2026-103061","https://github.com/gleam-lang/gleam/commit/d13f27ee80aae7a521d2e9433c4deaf53f892574","https://github.com/gleam-lang/gleam/commit/d15c981fac6e533d70ac8ee89a6ef4dbf139adc3","https://github.com/gleam-lang/gleam/commit/54bbb2b98af1505b6eed93c45b1936fc76412e5c"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-103061","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-103061","identifiers":["CVE-2026-103061"]},"retained":false,"historicalAffected":[]}],"coverage":[]}