Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPublish malicious scoped path-traversal package
-
DeliveryVictim runs pnpm install on affected project
-
ExploitScoped name bypasses slash validation in pickPackage.ts
-
ExecutionUnvalidated name joins into arbitrary filesystem path
-
PersistPackage contents overwrite shell startup or Git hooks
-
ImpactAttacker code executes at next trigger
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The victim must run pnpm install or any pnpm command triggering dependency resolution against a project whose dependency graph includes a package with a scoped name containing .. path-traversal sequences. This can originate from a package.json declaration or from a crafted pnpm-lock.yaml; the regression tests in PR #12872 confirm the lockfile vector succeeds even under --frozen-lockfile --trust-lockfile, meaning trust-lockfile mode does not prevent exploitation. The --ignore-scripts flag provides no protection because the file overwrite occurs through the extraction pipeline, not npm lifecycle scripts. Exploitation is limited to pnpm v10 before 10.34.5 and v11 before 11.11.0; npm and yarn are not affected by this validator gap. The attacker must control or compromise the source of a dependency in the victim's graph, either by publishing to a registry the victim trusts or by poisoning a lockfile committed to the project. |
| Impact | The provided CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H) scores 7.5. AC:H is well-calibrated: the attacker must place a malicious scoped-name package into the victim's dependency graph via a registry or lockfile compromise, requiring meaningful social engineering or supply-chain access. S:U in the provided vector is arguably under-scored, as file writes escape node_modules to arbitrary filesystem paths including system-wide directories, which implies scope change; this analysis assesses S:C instead. No EPSS data is available in the provided intelligence. The CVE is not listed in CISA KEV, confirming no known active exploitation at time of analysis. The --ignore-scripts bypass is the primary severity amplifier: developers in supply-chain-aware environments frequently rely on this flag as a compensating control, and this vulnerability invalidates that assumption entirely. The realistic exploitation path (convince a developer to install a malicious package) is consistent with documented supply-chain attack campaigns and warrants prompt patching despite the AC:H rating. |
| Exploit ScenarioDerived | An attacker publishes a convincingly named npm package under a scoped identifier embedding a path-traversal sequence, such as @legitimate-org/../../../home/developer/.gitconfig, and either submits it as a transitive dependency update or persuades the victim to add it directly. When the developer runs pnpm install - even with --ignore-scripts - pnpm's extraction pipeline resolves the traversal and writes package contents to the developer's home directory, silently replacing their Git configuration. On the next git commit or push, a malicious Git hook executes with the developer's full privileges. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 31, 2026
Scoped path traversal in pnpm allows arbitrary filesystem overwrites during package installation, defeating the --ignore-scripts safety flag entirely. Affected are pnpm v10 before 10.34.5 and v11 before 11.11.0: the package manager's name validation in pickPackage.ts rejects slash characters only for unscoped package names, permitting a scoped name such as @evil/../../../home/user/.bashrc to pass unchecked into raw path joins across three resolver modules and extract package content to any attacker-controlled path. No public exploit has been identified at time of analysis, though GitHub-confirmed patches with regression tests are available.
RemediationAI
Upgrade pnpm to version 10.34.5 (https://github.com/pnpm/pnpm/releases/tag/v10.34.5) or 11.11.0 (https://github.com/pnpm/pnpm/releases/tag/v11.11.0), the vendor-confirmed patched releases for the respective branches. The upstream fix, delivered via PRs #12872 and #12890, validates scoped package names for path-traversal sequences before they enter any filesystem path join and applies the check at all pipeline entry points including the lockfile path. There is no configuration-only workaround: --ignore-scripts does not mitigate this vulnerability and should not be relied upon as a compensating control. If immediate patching is blocked, manually audit pnpm-lock.yaml and package.json dependency declarations for any scoped names containing .. sequences, and restrict installation of new or updated dependencies to registries with strict package-name validation policies, noting that this only reduces - not eliminates - the attack surface.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
pnpm (cpe:2.3:a:pnpm:pnpm:*:*:*:*:*:*:*:*) is a Node.js package manager that installs dependencies into a content-addressable virtual store and symlinks them into node_modules. CWE-22 (Improper Limitation of a Pathname to a Restricted Directory) is the root cause: the validation logic in pnpm11/resolving/npm-resolver/src/pickPackage.ts enforces a slash-character check only on unscoped package names, not on the @scope/name form. A crafted scoped name such as @x/../../../etc/cron.d/backdoor passes validation and then participates in raw path.join() calls in three pipeline files: pnpm11/installing/deps-resolver/src/resolvePeers.ts, pnpm11/installing/deps-resolver/src/index.ts, and pnpm11/deps/graph-builder/src/lockfileToDepGraph.ts. The vulnerability surfaces in two distinct trigger paths: via a package.json dependency declaration and via a crafted pnpm-lock.yaml lockfile, including under --frozen-lockfile --trust-lockfile. Because the file write occurs through the extraction pipeline rather than npm lifecycle scripts, --ignore-scripts provides no mitigation.
Know when Pnpm gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
Scope changed to S:C because file writes escape node_modules to arbitrary filesystem paths outside pnpm's authority; all other metrics align with the provided vector.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
pnpm is a package manager. Prior to 10.34.5 and 11.11.0, pnpm accepts a scoped path traversal in a tarball dependency's package.json manifest name because pnpm11/resolving/npm-resolver/src/pickPackage.ts rejects slash characters only for unscoped names. During pnpm install, the unvalidated name reaches raw path joins in pnpm11/installing/deps-resolver/src/resolvePeers.ts, pnpm11/installing/deps-resolver/src/index.ts, and pnpm11/deps/graph-builder/src/lockfileToDepGraph.ts, causing package extraction outside node_modules and allowing attacker-controlled files to overwrite arbitrary filesystem paths even when --ignore-scripts is used. The overwrite can replace shell startup files, Git hooks, or installed package code and lead to code execution. This issue is fixed in versions 10.34.5, and 11.11.0.
Articles & Coverage 1
Technical POC Analysis
CWE-22 (Path Traversal), with GitHub additionally mapping CWE-73 and CWE-94.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
pnpm package manager (versions 10 before 10.34.5, 11 before 11.11.0) contains a path traversal vulnerability allowing attackers to overwrite arbitrary files on developer machines during package installation. Development teams using affected versions face supply chain compromise risk and potential code execution if they install malicious packages.
Apply vendor patch: upgrade to pnpm v10.34.5 or v11.11.0 or later. If immediate patching is not feasible, restrict package installations to verified internal registries and require manual review of new package dependencies before installation.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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 `pnpm stage download` command (versions 11.3.0 through 11.5.2) lets a malicious or compromised
EUVD-2026-68883
GHSA-vq4v-j7r6-jq4m
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB