Skip to main content

pnpm CVE-2026-55487

| EUVDEUVD-2026-39481 HIGH
Origin Validation Error (CWE-346)
2026-06-25 GitHub_M GHSA-5wx6-mg75-v57r
8.8
CVSS 3.1 · NVD
Share

Severity by source

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

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

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

Lifecycle Timeline

7
Source Code Evidence Fetched
Jun 29, 2026 - 21:33 vuln.today
Analysis Updated
Jun 29, 2026 - 21:33 vuln.today
v3 (cvss_changed)
Analysis Updated
Jun 29, 2026 - 21:32 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jun 29, 2026 - 21:22 vuln.today
cvss_changed
CVSS changed
Jun 29, 2026 - 21:22 NVD
7.5 (HIGH) 8.8 (HIGH)
Patch available
Jun 25, 2026 - 19:17 EUVD
Analysis Generated
Jun 25, 2026 - 18:15 vuln.today

DescriptionNVD

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.

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-50014 HIGH POC
7.3 Jun 25

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

Vendor StatusVendor

Share

CVE-2026-55487 vulnerability details – vuln.today

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