Skip to main content

pnpm EUVDEUVD-2026-39490

| CVE-2026-50014 HIGH
Improper Neutralization of Argument Delimiters in a Command ('Argument Injection') (CWE-88)
2026-06-25 GitHub_M GHSA-p4xf-rf54-rj3x
7.3
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain influence over pnpm-lock.yaml
  2. Delivery
    Replace commit hash with --upload-pack=<command>
  3. Exploit
    Victim runs pnpm install
  4. Execution
    git fetch parses value as option
  5. Persist
    Git executes injected command
  6. Impact
    Code 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 pnpm-lock.yaml, specifically the resolution.commit field of a git dependency (e.g., via a malicious PR or compromised repo); (2) that git dependency must be fetched over SSH or local (file://) git transport AND go through pnpm's shallow-fetch path - HTTPS transport ignores --upload-pack and is NOT exploitable; and (3) a victim must run pnpm install (UI:R) on pnpm older than 10.34.0 or 11.0.0-11.3.x. Limiting factors that reduce real-world risk: the requirement for write/influence over the lockfile, the requirement for non-default SSH or local git transport (HTTPS, the common case, is immune), the need for victim-initiated install, and the absence of active exploitation (SSVC 'poc', no KEV, EPSS 0.17%).

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 pnpm-lock.yaml, the affected dependency must use SSH or local git transport (HTTPS - the common case - is immune), and a victim must run pnpm install. SSVC aligns with this: exploitation is 'poc' (not active), automatable 'no', and technical impact 'partial'. EPSS is low (0.17%, percentile 7%), and there is no CISA KEV listing, indicating no evidence of widespread active exploitation. The published vector's AC:L arguably understates difficulty given the required non-default SSH/local transport, which makes the practical complexity higher; the official A:N also understates impact since arbitrary command execution typically threatens availability. Net assessment: a credible, working developer-machine RCE worth prompt patching in CI/CD and developer fleets, but not an emergency internet-facing exposure - it depends on a poisoned lockfile and non-default transport.

Exploit ScenarioDerived

An attacker who can influence a project's pnpm-lock.yaml - for example via a malicious pull request, a compromised dependency, or a poisoned shared repository - edits a git dependency entry that resolves over SSH or local transport and replaces the 40-character commit hash with --upload-pack=<malicious command>. When a developer or CI runner subsequently runs pnpm install, pnpm's shallow-fetch path passes that value to git fetch, and Git executes the attacker's command as the user running install. A working proof-of-concept exists that creates a local bare repo and triggers the path to run an injected touch command.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv3 – 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)
v2 Jun 29, 2026 - 21:28 cvss changed CVSS 7.3

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%).

v1 Jun 25, 2026 - 18:23 CVSS 6.4

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

pnpm 11.0.0, < 11.4.0
pnpm < 10.33.4

Affected Packages

npm pnpm fix: 10.33.4, 10.34.0, 11.4.0

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

Vendor (GitHub_M) PRIMARY MEDIUM
NVD 7.3 HIGH
AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 6.4 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
Severity Changed
Jun 29, 2026 - 21:22 NVD
MEDIUM HIGH
CVSS changed
Jun 29, 2026 - 21:22 NVD
6.4 (MEDIUM) 7.3 (HIGH)
Patch available
Jun 25, 2026 - 19:17 EUVD

DescriptionNVD

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.2%
Top 93% exploitable
Prevalence
High
widely-used JavaScript package manager across many development and CI environments
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

56
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Pnpm

View all
CVE-2025-69264 CRITICAL POC
9.8 Jan 07

Arbitrary code execution in the pnpm package manager (versions 10.0.0 through 10.25) lets a git-hosted dependency run co

CVE-2023-37478 CRITICAL POC
9.8 Aug 01

pnpm is a package manager. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable, no authentica

CVE-2026-50016 HIGH POC
8.8 Jun 25

Path traversal in pnpm before 10.34.0 and 11.4.0 lets a malicious registry package smuggle '../' segments inside a trans

CVE-2026-55698 HIGH POC
8.8 Jun 25

Arbitrary code execution in the pnpm package manager (versions prior to 10.34.2 and 11.5.3) lets a malicious repository

CVE-2026-55697 HIGH POC
8.8 Jun 25

Arbitrary command execution in pnpm before 10.34.2 and 11.5.3 allows a malicious repository to run attacker-chosen nativ

CVE-2025-69263 HIGH POC
8.8 Jan 07

Supply-chain integrity bypass in pnpm package manager (versions ≤10.26.2, per description; GHSA states <10.26.0) allows

CVE-2022-26183 HIGH POC
8.8 Mar 21

PNPM v6.15.1 and below was discovered to contain an untrusted search path which causes the application to behave in unex

CVE-2026-50021 HIGH POC
8.1 Jun 25

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

CVE-2025-69262 HIGH POC
7.8 Jan 07

Command injection in pnpm versions 6.25.0 through 10.26.2 allows attackers controlling environment variables to execute

CVE-2026-82393 HIGH POC
7.5 Aug 31

Scoped path traversal in pnpm allows arbitrary filesystem overwrites during package installation, defeating the --ignore

CVE-2026-50015 HIGH POC
7.3 Jun 25

Arbitrary file write and deletion in pnpm package manager (versions prior to 10.34.0 and 11.4.0) lets a malicious contri

CVE-2026-55700 HIGH POC
7.1 Jun 25

Path traversal in pnpm's `pnpm stage download` command (versions 11.3.0 through 11.5.2) lets a malicious or compromised

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy