CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-55700

CVE-2026-55700: Path Traversal and Arbitrary File Write in pnpm stage download

Alon Barad
Alon Barad
Software Engineer

Jun 27, 2026·4 min read·66 visits

Executive Summary (TL;DR)

Unsanitized 'name' and 'version' fields in downloaded package manifests allow arbitrary filesystem writes during 'pnpm stage download' operations.

A path traversal vulnerability in pnpm stage download allows malicious registries or compromised package manifests to overwrite arbitrary files on the victim's filesystem via unvalidated package name and version fields.

Vulnerability Overview

The pnpm stage download command fetches and stages tarballs from a designated package registry during staging operations. This process involves downloading a package tarball, extracting its embedded package.json manifest, and determining a local staging path to write the artifact. The attack surface is exposed to any network registry or upstream repository configured by the user.\n\nAn attacker who controls a registry or compromises an upstream package can supply a malicious manifest. By embedding directory traversal sequences in metadata fields, the attacker can hijack the target write location. This allows arbitrary file write or overwrite operations under the privileges of the active user executing the command.

Root Cause Analysis

The root cause of this vulnerability lies in the unvalidated trust placed in the version and name properties of the package manifest. During staging, pnpm extracts these fields to construct a local cache or staging filename. The application relies on normalizePackageName() to replace slashes and remove symbols, but it performs no validation on the version string.\n\nBecause the version field is untrusted input, an attacker hosting a malicious registry or publishing a compromised manifest can define a version containing traversal sequences. When path.resolve() dynamically resolves the absolute path using this unsanitized string, the resulting destination path escapes the designated download directory. This allows writing the tarball payload to an arbitrary location on the filesystem.

Code Analysis

The vulnerable logic resolves the output directory and file write path using the package name and version fields directly:\n\ntypescript\nconst downloadDir = opts.dir ?? process.cwd()\nconst outputPath = path.resolve(downloadDir, filename)\nawait fs.writeFile(outputPath, tarballData)\n\n\nmermaid\ngraph LR\n Registry[\"Malicious Registry\"] -->|\"package.json name/version\"| PNPM[\"pnpm stage download\"]\n PNPM -->|\"Unsanitized path.resolve\"| PathConcat[\"outputPath: /sandbox/../../etc/cron.d/job\"]\n PathConcat -->|\"fs.writeFile\"| OS[\"File Written Outside Sandbox\"]\n\n\nTo patch this vulnerability in commit 65443f4bdf1f0db9c8c7dc58fee25252607e9234, the maintainers introduced strict validation checks on the derived filename. The fix utilizes standard validation libraries to enforce format rules on both the package name and version before deriving the filename. Package names are validated using validate-npm-package-name, and semantic versions are validated using the semver validator, which blocks path traversal characters like / or .. from passing. Additionally, the path resolution step now enforces that the parent directory of the final absolute output path strictly matches the intended download directory.

Exploitation

An attacker exploiting this vulnerability must control the package registry or intercept the package response to inject a crafted manifest. When the victim executes pnpm stage download, the client issues a request to the configured registry.\n\nThe registry responds with a package payload containing a crafted package.json. In this manifest, the version field is set to a relative traversal path, such as 1.0.0/../../../../etc/cron.d/malicious_job.\n\nUpon receiving this response, pnpm builds the destination path using the malicious string and writes the tarball. The tarball's binary content is written directly to the target system path, enabling potential local privilege escalation (LPE) or persistent execution when the system triggers the written file.

Impact Assessment

The integrity impact is rated as High because an attacker can overwrite arbitrary files accessible to the execution context. Depending on whether pnpm is run by a standard user or an administrative CI/CD service, the impact ranges from local source code modification to full system compromise.\n\nThe availability impact is Low because overwriting critical system configuration or executable files can cause system services to fail. The vulnerability holds a CVSS v3.1 score of 7.1, reflecting that network-level positioning is sufficient to initiate the attack, provided user interaction (running the command) is achieved.\n\nCurrently, there is no active exploitation reported in the wild, placing the EPSS score at a low baseline. However, the presence of public regression tests acts as a functional Proof-of-Concept, making rapid exploitation feasible if target conditions are met.

Remediation

Users must update pnpm immediately to version 11.5.3 or higher. This release contains the complete structural and semantic verification mechanisms to block directory traversal payloads in both the package name and version fields.\n\nIf immediate patching is not possible, restrict network communication to trusted registries and verify that package registries employ robust metadata sanitization before distributing packages to downstream clients.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.1/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L
EPSS Probability
0.26%
Top 83% most exploited

Affected Systems

pnpm

Affected Versions Detail

Product
Affected Versions
Fixed Version
pnpm
pnpm
< 11.5.311.5.3
AttributeDetail
CWE IDCWE-22
Attack VectorNetwork
CVSS7.1
EPSS0.00258
ImpactHigh Integrity, Low Availability
Exploit Statuspoc
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1204.002User Execution: Malicious File
Execution
T1083File and Directory Discovery
Discovery
T1005Data from Local System
Collection
CWE-22
Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

The software uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the software does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.

References & Sources

  • [1]GitHub Pull Request #12303
  • [2]GitHub Security Advisory GHSA-v23m-ccfg-pq9h
  • [3]CVE-2026-55700 Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•GHSA-QPXH-FF8M-C62V
7.5

GHSA-QPXH-FF8M-C62V: Gas Draining and Resource Exhaustion in ZenHive mpp Library

A critical gas draining vulnerability exists in the ZenHive mpp (Multi-Payment Protocol) library prior to version v0.6.0. By omitting validation of EIP-2930 access lists in custom 0x76 transaction envelopes, the library allows malicious clients to pad transaction payloads with dummy addresses, draining the gas sponsor's hot wallet.

Amit Schendel
Amit Schendel
1 views•8 min read
•about 2 hours ago•GHSA-VJ8P-HP9X-GH47
8.8

GHSA-vj8p-hp9x-gh47: Zero-Cost Fee-Payer Wallet Gas Draining in mpp Elixir Library

A high-severity vulnerability exists in the Elixir library `mpp` (Multi-Party Payments) prior to version `0.6.0`. When acting as a sponsored transaction fee payer, the server co-signs and broadcasts user-provided transactions without verifying if the user-specified gas limit is sufficient. An attacker can submit transactions designed to run out of gas and revert. The transaction reversion ensures the attacker pays zero fees, while the sponsor's fee-payer wallet is fully billed for the wasted gas, resulting in a low-cost, high-impact Denial of Service (DoS) vector.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 4 hours ago•CVE-2026-57443
7.5

CVE-2026-57443: Unauthenticated Operations API Information Disclosure in SCBE-AETHERMOORE

An unauthenticated remote information disclosure vulnerability exists in the SCBE-AETHERMOORE geometric AI governance framework. The API endpoint `/api/ops/check-email` allows unauthenticated network actors to trigger administrative subprocesses and retrieve sensitive operator email digests from Gmail or ProtonMail mailboxes due to missing authentication controls and overly permissive CORS configurations.

Alon Barad
Alon Barad
4 views•6 min read
•about 5 hours ago•GHSA-29H2-JR22-FRMH
7.1

GHSA-29H2-JR22-FRMH: Improper Access Control and Handle Substitution in OpenZeppelin Confidential Contracts

A critical access control vulnerability exists in the OpenZeppelin Confidential Contracts library for Fully Homomorphic Encryption (FHE) on EVM networks. Due to missing Access Control List (ACL) verification on encrypted FHE handles returned by untrusted external contracts, malicious actors can perform handle substitution attacks. This allows attackers to harvest unauthorized private FHE handles and leak their underlying plaintext values through logical side-channels in subsequent contract operations.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 6 hours ago•CVE-2026-86439
8.8

CVE-2026-86439: Path Traversal Vulnerability in knowns MCP Document and Memory Storage

A critical path traversal vulnerability (CWE-22) exists in knowns prior to version 0.30.0. The software fails to restrict file path arguments passed to Model Context Protocol (MCP) tools, permitting low-privilege users to escape the designated base storage directories and manipulate arbitrary markdown files on the host filesystem.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 7 hours ago•CVE-2026-61825
8.7

CVE-2026-61825: Stored Cross-Site Scripting (XSS) via data-html-content Sanitizer Bypass in code16/sharp

CVE-2026-61825 is a high-severity, stored Cross-Site Scripting (XSS) vulnerability identified in code16/sharp, a Laravel-based administrative framework. The flaw resides within the administrative backend's rich-text and markdown editor field formatter. By bypassing HTML sanitization via crafted elements containing the data-html-content attribute or iframe srcdoc execution parameters, lower-privileged users can inject and execute arbitrary JavaScript code.

Amit Schendel
Amit Schendel
7 views•5 min read