Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L
Registry-controlled input over the network (AV:N, PR:N) but the victim must run stage download (UI:R); arbitrary file overwrite gives I:H with A:L and no confidentiality impact (C:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L
Lifecycle Timeline
3DescriptionCVE.org
pnpm is a package manager. From 11.3.0 until 11.5.3, pnpm stage download derived a local filename from registry-controlled package name and version fields. A crafted manifest could escape the selected download directory and overwrite another reachable file. The merged fix validates both fields, derives one safe filename, and verifies the final destination before writing. This vulnerability is fixed in 11.5.3.
AnalysisAI
Path traversal in pnpm's pnpm stage download command (versions 11.3.0 through 11.5.2) lets a malicious or compromised registry overwrite arbitrary files reachable by the user running the command. The tool built a local tarball filename directly from registry-controlled package name and version fields, so a crafted manifest (e.g. a version like 1.0.0/../../evil) escaped the intended download directory. This is fixed in 11.5.3; no public exploit identified at time of analysis, though the fixing PR (#12303) includes proof-of-traversal test cases.
Technical ContextAI
pnpm is a widely-used Node.js package manager; the affected code lives in its release/staging tooling (@pnpm/releasing.commands). The vulnerable function derived an output filename via a naive normalizePackageName(name) (only stripping @ and /) concatenated with the raw version field and a stage ID, then passed it to path.resolve() and fs.writeFile(). Because neither field was validated, embedded path separators and ../ sequences in the manifest's name or version survived into the resolved path, producing a classic CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / path traversal). The merged fix introduces createTarballFilename(), which validates the package name with validate-npm-package-name, validates the version with semver valid(), rejects any filename whose path.basename (POSIX and win32) differs from itself, and additionally verifies that the final resolved destination's directory equals the intended download directory before writing.
RemediationAI
Vendor-released patch: upgrade to pnpm 11.5.3 or later, which validates package name and version fields and verifies the write destination stays within the download directory. As a compensating control until upgrade, avoid running pnpm stage download against untrusted or third-party registries, and pin staging operations to a known-good internal registry you control; running the command from an isolated/ephemeral working directory with no sensitive sibling files limits the blast radius of any overwrite, at the cost of extra workflow steps. Review advisory GHSA-v23m-ccfg-pq9h (https://github.com/pnpm/pnpm/security/advisories/GHSA-v23m-ccfg-pq9h) and the fix in https://github.com/pnpm/pnpm/pull/12303 for details.
Arbitrary code execution in the pnpm package manager (versions 10.0.0 through 10.25) lets a git-hosted dependency run co
pnpm is a package manager. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable, no authentica
Path traversal in pnpm before 10.34.0 and 11.4.0 lets a malicious registry package smuggle '../' segments inside a trans
Arbitrary code execution in the pnpm package manager (versions prior to 10.34.2 and 11.5.3) lets a malicious repository
Arbitrary command execution in pnpm before 10.34.2 and 11.5.3 allows a malicious repository to run attacker-chosen nativ
Supply-chain integrity bypass in pnpm package manager (versions ≤10.26.2, per description; GHSA states <10.26.0) allows
PNPM v6.15.1 and below was discovered to contain an untrusted search path which causes the application to behave in unex
Integrity-check bypass in the pnpm package manager (versions before 10.34.0/10.34.1 and 11.0.0-11.3.x) lets tampered pac
Command injection in pnpm versions 6.25.0 through 10.26.2 allows attackers controlling environment variables to execute
Arbitrary file write and deletion in pnpm package manager (versions prior to 10.34.0 and 11.4.0) lets a malicious contri
Arbitrary command execution in pnpm before 10.34.0 and 11.4.0 allows a malicious lockfile to run code on a developer's m
Path traversal in pnpm's global package management flows allows deletion of the global bin directory or its parent when
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39487
GHSA-v23m-ccfg-pq9h