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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
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
2DescriptionCVE.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.
AnalysisAI
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.
Technical ContextAI
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.
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.
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
Same weakness CWE-200 – Information Exposure
View allSame technique Information Disclosure
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39495
GHSA-cjhr-43r9-cfmw