Track vulnerabilities like this one. Sign up free to get alerted when software you use is affected.
7.8

CVE-2021-39135: npm's `arborist` Library Allows Arbitrary File System Writes

CVE-2021-39135 · published 5 years ago
Summary

The `arborist` library in npm's command line interface could allow an attacker to write files to any location on the computer if they replace the `node_modules` folder with a symbolic link. This could happen if an attacker tricks the user into running `npm install --ignore-scripts` on a malicious Git repository. However, this issue is fixed in npm version 7.20.7 and above, so users should update their npm to the latest version.

What to do
  • Update npmcli arborist to version 2.8.2.
  • Update npmjs arborist to version 2.8.2 or later.
  • Update siemens sinec_infrastructure_network_services to version 1.0.1.1 or later.
Affected software
Ecosystem VendorProductAffected versions
npm npmcli arborist < 2.8.2
Fix: upgrade to 2.8.2
– npmjs arborist < 2.8.2
cpe:2.3:a:npmjs:arborist:*:*:*:*:*:node.js:*:*
– oracle graalvm 20.3.3
21.2.0
cpe:2.3:a:oracle:graalvm:20.3.3:*:*:*:enterprise:*:*:*
– siemens sinec_infrastructure_network_services < 1.0.1.1
cpe:2.3:a:siemens:sinec_infrastructure_network_services:*:*:*:*:*:*:*:*
Original advisory text
`@npmcli/arborist`, the library that calculates dependency trees and manages the node_modules folder hierarchy for the npm command line interface, aims to guarantee that package dependency contract...
`@npmcli/arborist`, the library that calculates dependency trees and manages the node_modules folder hierarchy for the npm command line interface, aims to guarantee that package dependency contracts will be met, and the extraction of package contents will always be performed into the expected folder. This is accomplished by extracting package contents into a project's `node_modules` folder. If the `node_modules` folder of the root project or any of its dependencies is somehow replaced with a symbolic link, it could allow Arborist to write package dependencies to any arbitrary location on the file system. Note that symbolic links contained within package artifact contents are filtered out, so another means of creating a `node_modules` symbolic link would have to be employed. 1. A `preinstall` script could replace `node_modules` with a symlink. (This is prevented by using `--ignore-scripts`.) 2. An attacker could supply the target with a git repository, instructing them to run `npm install --ignore-scripts` in the root. This may be successful, because `npm install --ignore-scripts` is typically not capable of making changes outside of the project directory, so it may be deemed safe. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above. For more information including workarounds please see the referenced GHSA-gmw6-94gg-2rc2.
Fix within
Internet-facing 14 days
Internal At next upgrade
  • Not known to be exploited
  • Needs hands-on effort to exploit (estimated)
  • Gives an attacker full control (estimated)
Severity
7.8 High
Exploitation
<1% chance of attack within 30 days
Type
CWE-59Link Following
CWE-61UNIX Symbolic Link (Symlink) Following
Timeline
Published31 Aug 2021
Updated4 Nov 2026
First seen6 Mar 2026
Sources
Track software like this
Free during beta