Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker deploys rogue npm registry server
-
DeliveryCraft repository with .npmrc redirecting registry to rogue server
-
ExploitDeveloper clones repository and runs pnpm install
-
Executionpnpm forwards user's unscoped _authToken to rogue registry in Authorization header
-
PersistAttacker captures npm authentication token
-
ImpactUse stolen token to publish malicious packages or access victim's private registry
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Three conditions must be simultaneously true for exploitation: (1) the victim developer has an unscoped _authToken stored in their user-level npm configuration (e.g., ~/.npmrc contains a bare _authToken= line not scoped to a specific registry host); (2) the attacker can get the developer to execute pnpm metadata fetch or install commands inside a repository whose project-level .npmrc sets registry= to an attacker-controlled URL; and (3) that project .npmrc does not supply its own auth token for the redirected registry, which triggers the fallback to the user's global unscoped credential. Exploitation is bounded by UI:A - passive network presence alone is insufficient; active developer invocation of pnpm is required. Developers using only registry-scoped tokens (e.g., //registry.npmjs.org/:_authToken=...) are not affected regardless of pnpm version. Automated CI systems running pnpm against untrusted repository inputs may be vulnerable if configured with unscoped tokens. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N) scores 6.9, reflecting high confidentiality impact against a network-accessible attack path, tempered by the UI:A requirement - the developer must actively invoke pnpm in a malicious repository. The PR:N metric correctly reflects the attacker perspective: no credentials on the victim machine are needed; only control of a rogue registry endpoint. Real-world risk is asymmetrically high relative to the score because a stolen npm token can be weaponized for supply chain attacks, far beyond the immediate confidentiality boundary. No KEV listing exists and no POC code has been identified, indicating this is not yet under widespread opportunistic exploitation. EPSS data is unavailable in the provided intelligence. The primary limiting factor is the social engineering requirement: the attacker must induce a developer with an unscoped npm token to clone and run pnpm install in a crafted repository - a realistic but non-trivial bar in targeted developer-focused attacks. |
| Exploit ScenarioDerived | An attacker sets up a server acting as a fake npm registry and publishes or contributes a repository whose .npmrc contains registry=https://attacker-controlled-registry.example.com with no associated auth line. When a developer who has an unscoped _authToken in their ~/.npmrc clones the repository and runs pnpm install, pnpm resolves the attacker's registry as the target and forwards the developer's token in the Authorization header. The attacker's server logs the token, which can then be used to publish malicious packages to the real npm registry or exfiltrate private packages accessible to that account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 25, 2026
Credential leakage in pnpm package manager versions prior to 10.34.0 and 11.4.0 exposes a developer's unscoped npm authentication token to attacker-controlled registries. When a project-level .npmrc overrides the registry URL without supplying its own auth token, pnpm incorrectly inherits and forwards the user's globally-configured unscoped _authToken to that foreign registry as an Authorization header. No public exploit has been identified at time of analysis, though the real-world impact is severe - a captured npm token can enable supply chain attacks via malicious package publishing.
RemediationAI
Upgrade pnpm to version 10.34.0 or later (v10 branch) or 11.4.0 or later (v11 branch), as confirmed by vendor advisory GHSA-cjhr-43r9-cfmw at https://github.com/pnpm/pnpm/security/advisories/GHSA-cjhr-43r9-cfmw. If an immediate upgrade is not feasible, the most effective compensating control is to replace unscoped _authToken entries in ~/.npmrc with registry-scoped tokens in the form //registry.npmjs.org/:_authToken=TOKEN - scoped credentials are tied to a specific registry hostname and are significantly less likely to be forwarded to a foreign endpoint; the trade-off is a slightly more verbose per-registry configuration. Additionally, developers should audit project-level .npmrc files for unexpected registry= overrides before running pnpm in unfamiliar or third-party repositories. Organizations with CI/CD pipelines should ensure pipeline npm tokens are also scoped rather than unscoped. No workaround fully eliminates risk without either upgrading or removing unscoped tokens.
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 resolves registry configuration by merging user-level (~/.npmrc) and project-level (.npmrc) configuration files. The CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) root cause is a credential-scoping defect in pnpm's auth-binding logic: when a project .npmrc sets registry= to a new URL but provides no corresponding auth token for that registry, pnpm incorrectly propagates the user's unscoped _authToken - which is intended only for the user's default registry - to the overridden registry endpoint. This violates the principle that credentials should be bound to their origin registry scope. The vulnerability surfaces during normal metadata fetch and install workflows, meaning routine pnpm operations trigger the credential leak without any atypical user action beyond running pnpm in the affected repository.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Attacker needs no privileges on the victim system (PR:N, AV:N), but developer must invoke pnpm in a malicious repository (UI:R); only the npm token is exposed, so C:H with no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
pnpm is a package manager. Prior to 10.34.0 and 11.4.0, pnpm can send user-level unscoped npm authentication credentials to a registry chosen by a repository-local .npmrc file. In the reproduced case, the user's npm config contains a default registry and an unscoped _authToken. The repository does not provide a token-bearing auth line. It only sets registry= to a different registry URL. During normal pnpm metadata/install workflows, pnpm binds the user-origin unscoped credential to the repository-selected registry and sends it as an Authorization header. This vulnerability is fixed in 10.34.0 and 11.4.0.
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
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
EUVD-2026-39495
GHSA-cjhr-43r9-cfmw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB