Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCompromise registry or mirror
-
DeliveryOverwrite pinned package tarball + metadata
-
ExploitVictim runs non-frozen pnpm install
-
Executionpnpm detects mismatch then resolution-repairs
-
PersistInstalls malicious content, rewrites lockfile
-
ImpactCode executes in build/dev environment
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Requires three concrete conditions: (1) the install is run in NON-FROZEN mode - i.e., plain |
| Impact | Signals are mixed and should be read together rather than off the headline CVSS 8.1. The NVD vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N) scores network reach and no victim privileges, but it understates a critical precondition the description makes explicit: the attacker must already control what the registry serves (a compromised/hijacked registry, malicious mirror, or MITM of an HTTP registry) AND the victim must run a non-frozen |
| Exploit ScenarioDerived | An attacker who has compromised an internal mirror, a self-hosted registry, or an HTTP registry path replaces the tarball and metadata for an already-pinned dependency (e.g., example-package@1.0.0) with malicious content carrying a new hash. A developer or CI job runs a normal |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv3 – Jun 29, 2026
Lockfile integrity bypass in the pnpm package manager (versions below 10.34.0, and 11.0.0 through 11.4.0) lets a malicious or compromised registry override a package version's previously recorded hash. On a plain pnpm install in non-frozen mode, pnpm detects the tarball-vs-lockfile integrity mismatch, warns, then silently performs a 'resolution repair' that accepts the registry's new integrity, rewrites pnpm-lock.yaml, and installs the substituted content while exiting 0. Publicly available exploit code exists (a full reproduction scenario is published in the GitHub advisory), but there is no public exploit identified as used in active attacks; EPSS is low at 0.11%.
Earlier versions of this analysis (2)
Lockfile integrity enforcement bypass in the pnpm JavaScript package manager (versions before 10.34.0 and before 11.4.0) lets a registry that serves altered metadata and tarball content for an already-locked package name/version slip past pnpm's integrity check. In default non-frozen pnpm install mode, the initially reported integrity mismatch triggers an automatic 'resolution repair' that accepts the new integrity, rewrites pnpm-lock.yaml, and installs the substituted content while exiting successfully - so the lockfile pin is advisory rather than a hard stop. Publicly available exploit/proof-of-concept context exists (SSVC 'poc'); this is not in CISA KEV and EPSS is very low at 0.11%.
Integrity check bypass in pnpm's non-frozen install mode allows silently substituted registry content to be accepted and installed without hard failure. When pnpm detects that a downloaded tarball's hash does not match the integrity value recorded in pnpm-lock.yaml, it performs an automatic 'resolution repair' rather than aborting - updating the lockfile with the registry's new hash and completing installation. Affecting all pnpm versions prior to 10.34.0 and 11.4.0, this undermines supply chain integrity guarantees for any developer or CI pipeline running plain pnpm install, and no confirmed active exploitation is identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade to pnpm 10.34.0 (for the 10.x/older line) or pnpm 11.4.0 (for the 11.x line), per advisory GHSA-54hh-g5mx-jqcp (https://github.com/pnpm/pnpm/security/advisories/GHSA-54hh-g5mx-jqcp). As an immediate compensating control that does not require upgrading, run installs with pnpm install --frozen-lockfile everywhere a committed lockfile exists (set CI to fail rather than repair), which makes a hash mismatch a hard stop; the trade-off is that legitimate lockfile drift must now be resolved deliberately with an explicit pnpm install/update rather than silently. Additionally, require HTTPS registries and pin/verify your registry or mirror to remove the MITM/altered-content path, and restrict who can publish/overwrite package versions on internal registries (disable version overwrite/republish). Frozen-lockfile is the default in CI for many setups already, so enforcing it closes the practical exposure pending the upgrade.
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-lock.yaml records a Subresource-Integrity-style hash (sha512) for every resolved package as a Trust-On-First-Use anchor: subsequent installs are supposed to fail closed if the fetched tarball does not match. The root cause is CWE-345 (Insufficient Verification of Data Authenticity): the integrity check is treated as advisory rather than authoritative when the install is not run with --frozen-lockfile. When a hash mismatch occurs, pnpm's 'resolution repair' path conflates two distinct situations - a legitimately stale lockfile that needs regeneration, versus a registry serving altered content for an already-pinned (name, version) pair - and resolves both by trusting the live registry. The affected component is the pnpm CLI itself (cpe:2.3:a:pnpm:pnpm), not a transitive library, so any project using pnpm without frozen installs inherits the weak default.
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
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
AC:H because the attacker must first control registry content for an already-pinned version; UI:R as a victim must run a non-frozen install; C:H/I:H from installing attacker-chosen code, A:N as availability is not the impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
5DescriptionNVD
pnpm is a package manager. Prior to 10.34.0 and 11.4.0, pnpm install in non-frozen mode can accept new remote package content after detecting that the downloaded tarball does not match the integrity recorded in pnpm-lock.yaml. When a package is already locked with an integrity value, and the registry later serves different metadata and tarball content for the same package name and version, pnpm initially reports an integrity mismatch. However, plain pnpm install then performs a resolution repair, accepts the registry's new integrity, updates the lockfile, installs the new content, and exits successfully. This means the lockfile integrity check does not act as a hard stop by default. This vulnerability is fixed in 10.34.0 and 11.4.0.
Executive ViewAI
pnpm package manager versions below 10.34.0 and 11.0.0-11.4.0 contain a lockfile integrity bypass enabling threat actors with registry access to inject malicious code into production builds while evading security checks. This exposes organizations to supply chain compromise affecting all software built with vulnerable pnpm versions, with potential impact to customer trust and regulatory compliance.
Apply vendor patch.
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-39489
GHSA-54hh-g5mx-jqcp
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB