Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain influence over pnpm-lock.yaml
-
DeliveryReplace commit hash with --upload-pack=<command>
-
ExploitVictim runs pnpm install
-
Executiongit fetch parses value as option
-
PersistGit executes injected command
-
ImpactCode runs as install user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
|
| Exploitation Conditions | Exploitation requires three concrete conditions: (1) the attacker must control the contents of |
| Impact | Signals are moderate and internally consistent rather than alarming. CVSS 3.1 is 7.3 (High) with vector AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N, but the real-world gating factors are significant: the attacker must control the contents of |
| Exploit ScenarioDerived | An attacker who can influence a project's |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv3 – Jun 29, 2026
Arbitrary command execution in pnpm before 10.34.0 and 11.4.0 allows a malicious lockfile to run code on a developer's machine during pnpm install. Because pnpm passes the lockfile-controlled resolution.commit to git fetch/git checkout without a -- separator or 40-hex-character validation, an attacker can substitute the expected commit hash with a Git option such as --upload-pack=<command>, which Git executes for SSH and local (file://) transports. Publicly available exploit code exists (POC), but there is no public exploit identified as actively exploited; EPSS is low (0.17%, 7th percentile), consistent with a developer-targeted supply-chain vector rather than mass internet scanning.
Earlier versions of this analysis (2)
Argument injection in the pnpm package manager (versions prior to 10.34.0 and 11.4.0) allows a malicious lockfile to inject Git options into the shallow git-fetch path, achieving arbitrary command execution when a victim installs a project with SSH or local git dependencies. Because pnpm forwards the lockfile-controlled resolution.commit value to git fetch without a -- separator or commit-hash validation, an attacker can replace the expected 40-character hash with --upload-pack=<command>, which SSH and local git transports execute. Publicly available exploit code exists and the issue is documented in GHSA-p4xf-rf54-rj3x, though it is not listed in CISA KEV and EPSS probability is low (0.17%).
Argument injection in pnpm's git dependency shallow-fetch path enables arbitrary command execution on developer machines and CI systems using SSH or local git transports. Versions prior to 10.34.0 (v10 series) and 11.4.0 (v11 series) pass the lockfile-controlled resolution.commit field directly to git fetch without an argument separator or commit-format validation, allowing a malicious lockfile to substitute a crafted Git option such as --upload-pack=<command> for the expected 40-character hexadecimal commit SHA. No public exploit code has been identified and the CVE is absent from CISA KEV, but the supply-chain attack surface and the C:H/I:H CVSS impact ratings make this a meaningful risk for development pipelines consuming SSH-based git dependencies.
RemediationAI
Upgrade pnpm to a fixed release: Vendor-released patch: 10.34.0 (for the 10.x line) or 11.4.0 (for the 11.x line), per advisory https://github.com/pnpm/pnpm/security/advisories/GHSA-p4xf-rf54-rj3x. The fix adds a -- separator before lockfile-controlled revision values and validates resolution.commit against a 40-character hex pattern. Until you can upgrade, reduce exposure with these specific controls: treat any change to pnpm-lock.yaml as security-sensitive and require code review of lockfile diffs before merging or before running install in CI (side effect: added review friction on legitimate dependency bumps); prefer HTTPS git transport for any git: dependencies and avoid SSH or local file:// git dependencies, since HTTPS ignores --upload-pack and is not exploitable (side effect: may require credential/token reconfiguration for private repos); and run pnpm install for untrusted repositories inside an isolated/ephemeral sandbox or container so injected command execution cannot reach developer credentials or the host (side effect: slower local onboarding). Audit existing lockfiles for any resolution.commit value that is not a 40-character hexadecimal hash.
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
The flaw is a classic argument injection (CWE-88) in pnpm's git dependency fetcher (fetching/git-fetcher/src/index.ts). When a git host is configured for shallow fetching, pnpm builds the command git fetch --depth 1 origin <resolution.commit> and later git checkout <resolution.commit>, appending the lockfile value as a positional argument with no -- end-of-options marker. Git treats any token beginning with - as an option, so a value like --upload-pack=touch /tmp/pwned is interpreted as the --upload-pack flag. Git's --upload-pack specifies the program run on the remote end; for SSH and local transports Git invokes that string as a shell command on the local/origin side, yielding code execution. HTTPS transport does not honor --upload-pack, so it is not exploitable. The root cause is that resolution.commit is typed as a plain string and is never validated against /^[0-9a-f]{40}$/i. The single CPE provided (cpe:2.3:a:pnpm:pnpm:*) confirms the affected component is the pnpm package manager itself.
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:L/PR:L/UI:R/S:U/C:H/I:H/A:N
Attacker controls a distributed lockfile (PR:N) but needs victim to run install (UI:R) and a non-default SSH/local transport (AC:H); injected command execution yields full C/I/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
pnpm is a package manager. Prior to 10.34.0 and 11.4.0, pnpm passes the lockfile-controlled git resolution.commit value to git fetch without a -- separator or commit-format validation. For git dependencies fetched through the shallow-fetch path, a malicious lockfile can replace the expected 40-character commit hash with a Git option such as --upload-pack=<command>. For SSH and local transports, --upload-pack can execute the supplied command. HTTPS transports ignore --upload-pack, so the practical attack surface is primarily SSH or local git dependencies. This vulnerability is fixed in 10.34.0 and 11.4.0.
Executive ViewAI
pnpm package manager versions before 10.34.0 and 11.4.0 allow malicious lockfiles to execute arbitrary code on developer machines, creating a supply-chain risk that could compromise source code and CI/CD infrastructure across the organization. The vulnerability affects all development teams and automated build systems using vulnerable pnpm versions, with attack surface extending through open-source dependencies and external contributions. While publicly available exploit code exists, current exploitation remains limited; immediate patching is essential given the ease of delivery through dependency chains.
Apply vendor patch. Upgrade pnpm to version 10.34.0 or later (v10 series) or 11.4.0 or later (v11 series). No interim mitigations available; patching is mandatory.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
Scoped path traversal in pnpm allows arbitrary filesystem overwrites during package installation, defeating the --ignore
Arbitrary file write and deletion in pnpm package manager (versions prior to 10.34.0 and 11.4.0) lets a malicious contri
Path traversal in pnpm's `pnpm stage download` command (versions 11.3.0 through 11.5.2) lets a malicious or compromised
EUVD-2026-39490
GHSA-p4xf-rf54-rj3x
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB