Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Network-delivered dependency, no attacker privileges, but a victim must approve a build (UI:R); successful lifecycle execution yields total host compromise so C/I/A all High.
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
7DescriptionNVD
pnpm is a package manager. Prior to 10.34.2 and 11.5.3, the generic peer-suffix normalizer also stripped parenthesized text from git, URL, tarball, file, and other opaque locators. Approval for one source string could therefore authorize a different attacker-controlled source whose locator normalized to the same value. This vulnerability is fixed in 10.34.2 and 11.5.3.
AnalysisAI
Build-script approval bypass in the pnpm package manager (versions before 10.34.2, and 11.0.0 through 11.5.2) lets an attacker-controlled dependency source run lifecycle scripts that a user only approved for a different, legitimate source. The generic peer-suffix normalizer stripped parenthesized text from opaque locators (git, URL, tarball, file), so two distinct sources could normalize to the same allowBuilds key - meaning approval of foo@https://host/pkg.tgz also authorized foo@https://host/pkg.tgz(evil). Publicly available exploit code exists (SSVC: poc) and technical impact is total, though EPSS is low at 0.11% and it is not in CISA KEV.
Technical ContextAI
pnpm gates execution of dependency lifecycle (build) scripts behind an explicit allowBuilds approval policy keyed on a dependency's resolved identity. For registry packages, that identity legitimately normalizes peer-dependency suffixes (the parenthesized tail) so a package approved without its peer suffix still matches. The defect is a CWE-346 Origin Validation Error: the same generic normalizer was applied to opaque, non-registry locators (git, URL, tarball, file, directory), incorrectly stripping parenthesized content from sources whose identity must be byte-exact. CPE cpe:2.3:a:pnpm:pnpm confirms the affected component is pnpm itself. The advisory documents three collision forms - the parenthesized-suffix strip, a Rust-only final-@ misclassification (foo@https://host/pkg@1.0.0(good) vs (evil)), and a semver-looking source-only tail (https://host/pkg@1.0.0 collapsing (evil)) - all rooted in treating opaque identities like registry identities.
RemediationAI
Vendor-released patch: upgrade to pnpm 10.34.2 (for the 10.x line) or 11.5.3 (for the 11.x line), which reject all three normalization-collision forms and enforce byte-exact matching for opaque locators while preserving legitimate registry peer-suffix normalization. The fix is implemented in commit bf1b731ee6c0ea98709e671ff0f46bf654480ab8 and described in advisory https://github.com/pnpm/pnpm/security/advisories/GHSA-5wx6-mg75-v57r. If you cannot upgrade immediately, the most effective compensating control is to disable automatic lifecycle-script execution entirely (for example pin onlyBuiltDependencies to an empty/explicit allowlist or run installs with scripts disabled), accepting the trade-off that packages genuinely needing native builds will not compile until run manually; additionally, prefer registry-pinned dependencies over git/URL/tarball/file locators and audit any opaque sources in your lockfile, since those are the only locator types this bug affects.
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
Same weakness CWE-346 – Origin Validation Error
View allSame technique Information Disclosure
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39481
GHSA-5wx6-mg75-v57r