GitHub Advisoryadvisory · npm
GHSA-7vhp-vf5g-r2fw pnpm Has Lockfile Integrity Bypass that Allows Remote Dynamic Dependencies
HIGH
Official page ↗
- Aliases
- CVE-2025-69263
- Ecosystem
- npm
- Packages
- pnpm
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-494
- Reviewed
- 2026-01-07
Affected packages
• npm pnpm: < 10.26.0 → fixed in 10.26.0
Description
Summary
HTTP tarball dependencies (and git-hosted tarballs) are stored in the lockfile without integrity hashes. This allows the remote server to serve different content on each install, even when a lockfile is committed.
Details
When a package depends on an HTTP tarball URL, pnpm's tarball resolver returns only the URL without computing an integrity hash:
`resolving/tarball-resolver/src/index.ts`:
```javascript
return {
resolution: {
tarball: resolvedUrl,
// No integrity field
},
resolvedVia: 'url',
}
```
The resulting lockfile entry has no integrity to verify:
```yaml
remote-dynamic-dependency@http://example.com/pkg.tgz:
resolution: {tarball: http://example.com/pkg.tgz}
version: 1.0.0
```
Since there is no integrity hash, pnpm cannot detect when the server returns different content.
This affects:
• HTTP/HTTPS tarball URLs (`"pkg": "https://example.com/pkg.tgz"`)
• Git shorthand dependencies (`"pkg": "github:user/repo"`)
• Git URLs (`"pkg": "git+https://github.com/user/repo"`)
npm registry packages are not affected as they include integrity hashes from the registry metadata.
PoC
See attached pnpm-bypass-integrity-poc.zip
The POC includes:
• A server that returns different tarball content on each request
• A `malicious-package` that depends on the HTTP tarball
• A `victim` project that depends on `malicious-package`
To run:
```bash
cd pnpm-bypass-integrity-poc
./run-poc.sh
```
The output shows that each install (with `pnpm store prune` between them) downloads different code despite having a committed lockfile.
Impact
An attacker who publishes a package with an HTTP tarball dependency can serve different code to different users or CI/CD environments. This enables:
• Targeted attacks based on request metadata (IP, headers, timing)
• Evasion of security audits (serve benign code during review, malicious code later)
• Supply chain attacks where the malicious payload changes over time
The attack requires the victim to install a package that has an HTTP/git tarball in its dependency tree. The victim's lockfile provides no protection.
Related
Alias · CVE (1)
- CVE-2025-69263 pnpm is a package manager. vulnerability
Weakness · CWE (1)
- CWE-494 Download of Code Without Integrity Check weakness