CVE-2021-39134
UNIX Symbolic Link (Symlink) Following in @npmcli/arborist
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
8.2
UNIX Symbolic Link (Symlink) Following in @npmcli/arborist
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
- Record
CVE-2021-39134- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N - Weakness
- CWE-61
- Updated
- 2026-11-02
EUVDEUVD-2021-1513
8.2
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
- Record
EUVD-2021-1513- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-2h3h-q99f-3fhc
8.2
@npmcli/arborist vulnerable to UNIX Symbolic Link (Symlink) Following
Impact
Arbitrary File Creation, Arbitrary File Overwrite, Arbitrary Code Execution
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies.
When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem.
For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed.
Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected.
Patches
2.8.2 (included in npm v7.20.7 and above)
Fix and Caveats
There are two parts to the fix:
- Immediately prior to extraction, if the target folder is not a directory, it is moved aside. (If the installation fails, filesystem entries moved aside in this manner are moved back as part of the rollback process.)
- The
childrenmap that represents child nodes in the tree is replaced with a case-insensitive map object, such thatnode.children.get('foo')andnode.children.get('FOO')will return the same object, enabling Arborist to detect and handle this class of tree collision.
This second item imposes a caveat on case sensitive filesystems where two packages with names which differ only in case may already exist at the same level in the tree, causing unpredictable behavior in this rare edge case. Note that in such cases, the package-lock.json already creates a situation which is hazardous to use on case-sensitive filesystems, and will likely lead to other problems.
If affected by this caveat, please run npm update to rebuild your tree and generate a new package-lock.json file.
- Record
GHSA-2h3h-q99f-3fhc- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N - Weakness
- CWE-59, CWE-61, CWE-178
- Updated
- 2026-11-02
NVD
8.2
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
- Record
CVE-2021-39134- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N - CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - CVSS 2.0
- 4.4 Medium
AV:L/AC:M/Au:N/C:P/I:P/A:P - Weakness
- CWE-61, CWE-178
- Updated
- 2026-11-02
OSVALPINE-CVE-2021-39134
7.8
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
- Record
ALPINE-CVE-2021-39134- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVBELL-CVE-2021-39134
7.8
CVE-2021-39134 does not affect BellSoft software
- Record
BELL-CVE-2021-39134- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 14 moreShow less
OSV
7.8
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
- Record
CVE-2021-39134- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2021-39134
7.8
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
- Record
DEBIAN-CVE-2021-39134- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-2h3h-q99f-3fhc
8.2
@npmcli/arborist vulnerable to UNIX Symbolic Link (Symlink) Following
Impact
Arbitrary File Creation, Arbitrary File Overwrite, Arbitrary Code Execution
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies.
When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem.
For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed.
Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected.
Patches
2.8.2 (included in npm v7.20.7 and above)
Fix and Caveats
There are two parts to the fix:
- Immediately prior to extraction, if the target folder is not a directory, it is moved aside. (If the installation fails, filesystem entries moved aside in this manner are moved back as part of the rollback process.)
- The
childrenmap that represents child nodes in the tree is replaced with a case-insensitive map object, such thatnode.children.get('foo')andnode.children.get('FOO')will return the same object, enabling Arborist to detect and handle this class of tree collision.
This second item imposes a caveat on case sensitive filesystems where two packages with names which differ only in case may already exist at the same level in the tree, causing unpredictable behavior in this rare edge case. Note that in such cases, the package-lock.json already creates a situation which is hazardous to use on case-sensitive filesystems, and will likely lead to other problems.
If affected by this caveat, please run npm update to rebuild your tree and generate a new package-lock.json file.
- Record
GHSA-2h3h-q99f-3fhc- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N - Weakness
- CWE-178, CWE-59, CWE-61
- Updated
- 2026-11-02
OSVOESA-2022-1620
8.2
nodejs security update
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
Security Fix(es):
An issue was discovered in ajv.validate() in Ajv (aka Another JSON Schema Validator) 6.12.2. A carefully crafted JSON schema could be provided that allows execution of other code by prototype pollution. (While untrusted schemas are recommended against, the worst case of an untrusted schema should be a denial of service, not execution of code.)(CVE-2020-15366)
The X509_V_FLAG_X509_STRICT flag enables additional security checks of the certificates present in a certificate chain. It is not set by default. Starting from OpenSSL version 1.1.1h a check to disallow certificates in the chain that have explicitly encoded elliptic curve parameters was added as an additional strict check. An error in the implementation of this check meant that the result of a previous check to confirm that certificates in the chain are valid CA certificates was overwritten. This effectively bypasses the check that non-CA certificates must not be able to issue other certificates. If a "purpose" has been configured then there is a subsequent opportunity for checks that the certificate is a valid CA. All of the named "purpose" values implemented in libcrypto perform this check. Therefore, where a purpose is set the certificate chain will still be rejected even when the strict flag has been used. A purpose is set by default in libssl client and server certificate verification routines, but it can be overridden or removed by an application. In order to be affected, an application must explicitly set the X509_V_FLAG_X509_STRICT verification flag and either not set a purpose for the certificate verification or, in the case of TLS client or server applications, override the default purpose. OpenSSL versions 1.1.1h and newer are affected by this issue. Users of these versions should upgrade to OpenSSL 1.1.1k. OpenSSL 1.0.2 is not impacted by this issue. Fixed in OpenSSL 1.1.1k (Affected 1.1.1h-1.1.1j).(CVE-2021-3450)
Node.js < 12.22.9, < 14.18.3, < 16.13.2, and < 17.3.1 converts SANs (Subject Alternative Names) to a string format. It uses this string to check peer certificates against hostnames when validating connections. The string format was subject to an injection vulnerability when name constraints were used within a certificate chain, allowing the bypass of these name constraints.Versions of Node.js with the fix for this escape SANs containing the problematic characters in order to prevent the injection. This behavior can be reverted through the --security-revert command-line option.(CVE-2021-44532)
Node.js < 12.22.9, < 14.18.3, < 16.13.2, and < 17.3.1 did not handle multi-value Relative Distinguished Names correctly. Attackers could craft certificate subjects containing a single-value Relative Distinguished Name that would be interpreted as a multi-value Relative Distinguished Name, for example, in order to inject a Common Name that would allow bypassing the certificate subject verification.Affected versions of Node.js that do not accept multi-value Relative Distinguished Names and are thus not vulnerable to such attacks themselves. However, third-party code that uses node's ambiguous presentation of certificate subjects may be vulnerable.(CVE-2021-44533)
Accepting arbitrary Subject Alternative Name (SAN) types, unless a PKI is specifically defined to use a particular SAN type, can result in bypassing name-constrained intermediates. Node.js < 12.22.9, < 14.18.3, < 16.13.2, and < 17.3.1 was accepting URI SAN types, which PKIs are often not defined to use. Additionally, when a protocol allows URI SANs, Node.js did not match the URI correctly.Versions of Node.js…
- Record
OESA-2022-1620- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2021-39134
8.2
@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, in part, accomplished by resolving dependency specifiers defined in package.json manifests for dependencies with a specific name, and nesting folders to resolve conflicting dependencies. When multiple dependencies differ only in the case of their name, Arborist's internal data structure saw them as separate items that could coexist within the same level in the node_modules hierarchy. However, on case-insensitive file systems (such as macOS and Windows), this is not the case. Combined with a symlink dependency such as file:/some/path, this allowed an attacker to create a situation in which arbitrary contents could be written to any location on the filesystem. For example, a package pwn-a could define a dependency in their package.json file such as "foo": "file:/some/path". Another package, pwn-b could define a dependency such as FOO: "file:foo.tgz". On case-insensitive file systems, if pwn-a was installed, and then pwn-b was installed afterwards, the contents of foo.tgz would be written to /some/path, and any existing contents of /some/path would be removed. Anyone using npm v7.20.6 or earlier on a case-insensitive filesystem is potentially affected. This is patched in @npmcli/arborist 2.8.2 which is included in npm v7.20.7 and above.
- Record
UBUNTU-CVE-2021-39134- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N - CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVMGASA-2021-0463 No score
Updated nodejs packages fix security vulnerability
Multiple security fixes for nodejs. See references for details
- Record
MGASA-2021-0463- Updated
- 2026-11-02
OSVopenSUSE-SU-2021:1552-1 No score
Security update for nodejs14
This update for nodejs14 fixes the following issues:
nodejs14 was updated to 14.18.1:
-
deps: update llhttp to 2.1.4
- HTTP Request Smuggling due to spaced in headers (bsc#1191601, CVE-2021-22959)
- HTTP Request Smuggling when parsing the body (bsc#1191602, CVE-2021-22960)
Changes in 14.18.0:
-
buffer:
- introduce Blob
- add base64url encoding option
-
child_process:
- allow options.cwd receive a URL
- add timeout to spawn and fork
- allow promisified exec to be cancel
- add 'overlapped' stdio flag
-
dns: add 'tries' option to Resolve options
-
fs:
- allow empty string for temp directory prefix
- allow no-params fsPromises fileHandle read
- add support for async iterators to fsPromises.writeFile
-
http2: add support for sensitive headers
-
process: add 'worker' event
-
tls: allow reading data into a static buffer
-
worker: add setEnvironmentData/getEnvironmentData
Changes in 14.17.6
- deps: upgrade npm to 6.14.15 which fixes a number of security issues (bsc#1190057, CVE-2021-37701, bsc#1190056, CVE-2021-37712, bsc#1190055, CVE-2021-37713, bsc#1190054, CVE-2021-39134, bsc#1190053, CVE-2021-39135)
This update was imported from the SUSE:SLE-15-SP2:Update update project.
- Record
openSUSE-SU-2021:1552-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2021:1574-1 No score
Security update for nodejs12
This update for nodejs12 fixes the following issues:
- CVE-2021-22959: Fixed HTTP Request Smuggling due to spaced in headers (bsc#1191601).
- CVE-2021-22960: Fixed HTTP Request Smuggling when parsing the body (bsc#1191602).
- CVE-2021-37701: Fixed arbitrary file creation and overwrite in nodejs-tar (bsc#1190057).
- CVE-2021-37712: Fixed arbitrary file creation and overwrite in nodejs-tar (bsc#1190056).
- CVE-2021-37713: Fixed arbitrary code execution and file creation and overwrite in nodejs-tar (bsc#1190055).
- CVE-2021-39134: Fixed symling following vulnerability in nodejs-arborist (bsc#1190054).
- CVE-2021-39135: Fixed symling following vulnerability in nodejs-arborist (bsc#1190053).
This update was imported from the SUSE:SLE-15-SP2:Update update project.
- Record
openSUSE-SU-2021:1574-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2021:3940-1 No score
Security update for nodejs12
This update for nodejs12 fixes the following issues:
- CVE-2021-22959: Fixed HTTP Request Smuggling due to spaced in headers (bsc#1191601).
- CVE-2021-22960: Fixed HTTP Request Smuggling when parsing the body (bsc#1191602).
- CVE-2021-37701: Fixed arbitrary file creation and overwrite in nodejs-tar (bsc#1190057).
- CVE-2021-37712: Fixed arbitrary file creation and overwrite in nodejs-tar (bsc#1190056).
- CVE-2021-37713: Fixed arbitrary code execution and file creation and overwrite in nodejs-tar (bsc#1190055).
- CVE-2021-39134: Fixed symling following vulnerability in nodejs-arborist (bsc#1190054).
- CVE-2021-39135: Fixed symling following vulnerability in nodejs-arborist (bsc#1190053).
- Record
openSUSE-SU-2021:3940-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2021:3964-1 No score
Security update for nodejs14
This update for nodejs14 fixes the following issues:
nodejs14 was updated to 14.18.1:
-
deps: update llhttp to 2.1.4
- HTTP Request Smuggling due to spaced in headers (bsc#1191601, CVE-2021-22959)
- HTTP Request Smuggling when parsing the body (bsc#1191602, CVE-2021-22960)
Changes in 14.18.0:
-
buffer:
- introduce Blob
- add base64url encoding option
-
child_process:
- allow options.cwd receive a URL
- add timeout to spawn and fork
- allow promisified exec to be cancel
- add 'overlapped' stdio flag
-
dns: add 'tries' option to Resolve options
-
fs:
- allow empty string for temp directory prefix
- allow no-params fsPromises fileHandle read
- add support for async iterators to fsPromises.writeFile
-
http2: add support for sensitive headers
-
process: add 'worker' event
-
tls: allow reading data into a static buffer
-
worker: add setEnvironmentData/getEnvironmentData
Changes in 14.17.6
- deps: upgrade npm to 6.14.15 which fixes a number of security issues (bsc#1190057, CVE-2021-37701, bsc#1190056, CVE-2021-37712, bsc#1190055, CVE-2021-37713, bsc#1190054, CVE-2021-39134, bsc#1190053, CVE-2021-39135)
- Record
openSUSE-SU-2021:3964-1- Updated
- 2026-11-02
OSVSUSE-SU-2021:3886-1 No score
Security update for nodejs14
This update for nodejs14 fixes the following issues:
nodejs14 was updated to 14.18.1:
- deps: update llhttp to 2.1.4
Security fixes:
- HTTP Request Smuggling due to spaced in headers (bsc#1191601, CVE-2021-22959)
- HTTP Request Smuggling when parsing the body (bsc#1191602, CVE-2021-22960)
Changes in 14.18.0:
-
buffer:
- introduce Blob
- add base64url encoding option
-
child_process:
- allow options.cwd receive a URL
- add timeout to spawn and fork
- allow promisified exec to be cancel
- add 'overlapped' stdio flag
-
dns: add 'tries' option to Resolve options
-
fs:
- allow empty string for temp directory prefix
- allow no-params fsPromises fileHandle read
- add support for async iterators to fsPromises.writeFile
-
http2: add support for sensitive headers
-
process: add 'worker' event
-
tls: allow reading data into a static buffer
-
worker: add setEnvironmentData/getEnvironmentData
Changes in 14.17.6:
- deps: upgrade npm to 6.14.15 which fixes a number of security issues (bsc#1190057, CVE-2021-37701, bsc#1190056, CVE-2021-37712, bsc#1190055, CVE-2021-37713, bsc#1190054, CVE-2021-39134, bsc#1190053, CVE-2021-39135)
- Record
SUSE-SU-2021:3886-1- Updated
- 2026-11-02
OSVSUSE-SU-2021:3940-1 No score
Security update for nodejs12
This update for nodejs12 fixes the following issues:
- CVE-2021-22959: Fixed HTTP Request Smuggling due to spaced in headers (bsc#1191601).
- CVE-2021-22960: Fixed HTTP Request Smuggling when parsing the body (bsc#1191602).
- CVE-2021-37701: Fixed arbitrary file creation and overwrite in nodejs-tar (bsc#1190057).
- CVE-2021-37712: Fixed arbitrary file creation and overwrite in nodejs-tar (bsc#1190056).
- CVE-2021-37713: Fixed arbitrary code execution and file creation and overwrite in nodejs-tar (bsc#1190055).
- CVE-2021-39134: Fixed symling following vulnerability in nodejs-arborist (bsc#1190054).
- CVE-2021-39135: Fixed symling following vulnerability in nodejs-arborist (bsc#1190053).
- Record
SUSE-SU-2021:3940-1- Updated
- 2026-11-02
OSVSUSE-SU-2021:3964-1 No score
Security update for nodejs14
This update for nodejs14 fixes the following issues:
nodejs14 was updated to 14.18.1:
-
deps: update llhttp to 2.1.4
- HTTP Request Smuggling due to spaced in headers (bsc#1191601, CVE-2021-22959)
- HTTP Request Smuggling when parsing the body (bsc#1191602, CVE-2021-22960)
Changes in 14.18.0:
-
buffer:
- introduce Blob
- add base64url encoding option
-
child_process:
- allow options.cwd receive a URL
- add timeout to spawn and fork
- allow promisified exec to be cancel
- add 'overlapped' stdio flag
-
dns: add 'tries' option to Resolve options
-
fs:
- allow empty string for temp directory prefix
- allow no-params fsPromises fileHandle read
- add support for async iterators to fsPromises.writeFile
-
http2: add support for sensitive headers
-
process: add 'worker' event
-
tls: allow reading data into a static buffer
-
worker: add setEnvironmentData/getEnvironmentData
Changes in 14.17.6
- deps: upgrade npm to 6.14.15 which fixes a number of security issues (bsc#1190057, CVE-2021-37701, bsc#1190056, CVE-2021-37712, bsc#1190055, CVE-2021-37713, bsc#1190054, CVE-2021-39134, bsc#1190053, CVE-2021-39135)
- Record
SUSE-SU-2021:3964-1- Updated
- 2026-11-02
OSVSUSE-SU-2022:0101-1 No score
Security update for nodejs12
This update for nodejs12 fixes the following issues:
- CVE-2021-44531: Fixed improper handling of URI Subject Alternative Names (bsc#1194511).
- CVE-2021-44532: Fixed certificate Verification Bypass via String Injection (bsc#1194512).
- CVE-2021-44533: Fixed incorrect handling of certificate subject and issuer fields (bsc#1194513).
- CVE-2022-21824: Fixed prototype pollution via console.table properties (bsc#1194514).
- CVE-2021-22959: Fixed HTTP Request Smuggling due to spaced in headers(bsc#1191601).
- CVE-2021-22960: Fixed HTTP Request Smuggling when parsing the body (bsc#1191602).
- CVE-2021-37701: Fixed arbitrary file creation and overwrite vulnerability in nodejs-tar (bsc#1190057).
- CVE-2021-37712: Fixed arbitrary file creation and overwrite vulnerability in nodejs-tar (bsc#1190056).
- CVE-2021-37713: Fixed arbitrary file creation/overwrite and arbitrary code execution vulnerability in nodejs-tar (bsc#1190055).
- CVE-2021-39134: Fixed symlink following vulnerability in nodejs-arborist (bsc#1190054).
- CVE-2021-39135: Fixed symlink following vulnerability in nodejs-arborist (bsc#1190053).
- Record
SUSE-SU-2022:0101-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
@npmcli/arboristnpm |
before 2.8.2 | 2.8.2 |
nodejsAlpine:v3.11 |
before 12.22.6-r0 | 12.22.6-r0 |
nodejsAlpine:v3.12 |
before 12.22.6-r0 | 12.22.6-r0 |
nodejsAlpine:v3.13 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.14 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.15 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.16 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.17 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.18 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.19 |
before 14.17.6-r0 | 14.17.6-r0 |
Show 26 moreShow less
| Package | Affected | Fixed |
|---|---|---|
nodejsAlpine:v3.20 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.21 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.22 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.23 |
before 14.17.6-r0 | 14.17.6-r0 |
nodejsAlpine:v3.24 |
before 14.17.6-r0 | 14.17.6-r0 |
npmDebian:12 |
before 7.24.0+ds-2 | 7.24.0+ds-2 |
npmDebian:13 |
before 7.24.0+ds-2 | 7.24.0+ds-2 |
npmDebian:14 |
before 7.24.0+ds-2 | 7.24.0+ds-2 |
nodejsMageia:8 From an advisory covering 9 CVEs |
before 14.17.6-1.mga8 | 14.17.6-1.mga8 |
nodejsopenEuler:20.03-LTS-SP1 From an advisory covering 12 CVEs |
before 12.22.11-1.oe1 | 12.22.11-1.oe1 |
nodejsopenEuler:20.03-LTS-SP2 From an advisory covering 12 CVEs |
before 12.22.11-1.oe1 | 12.22.11-1.oe1 |
nodejsopenEuler:20.03-LTS-SP3 From an advisory covering 12 CVEs |
before 12.22.11-1.oe1 | 12.22.11-1.oe1 |
nodejs14SUSE:Linux Enterprise Module for Web and Scripting 12 From an advisory covering 7 CVEs |
before 14.18.1-6.18.2 | 14.18.1-6.18.2 |
nodejs12SUSE:Linux Enterprise Module for Web and Scripting 15 SP2 From an advisory covering 7 CVEs |
before 12.22.7-4.22.1 | 12.22.7-4.22.1 |
nodejs12SUSE:Linux Enterprise Module for Web and Scripting 15 SP3 From an advisory covering 7 CVEs |
before 12.22.7-4.22.1 | 12.22.7-4.22.1 |
nodejs14SUSE:Linux Enterprise Module for Web and Scripting 15 SP2 From an advisory covering 7 CVEs |
before 14.18.1-15.21.2 | 14.18.1-15.21.2 |
nodejs14SUSE:Linux Enterprise Module for Web and Scripting 15 SP3 From an advisory covering 7 CVEs |
before 14.18.1-15.21.2 | 14.18.1-15.21.2 |
nodejs12SUSE:Linux Enterprise Module for Web and Scripting 12 From an advisory covering 11 CVEs |
before 12.22.9-1.38.1 | 12.22.9-1.38.1 |
npmUbuntu:14.04:LTS |
All versions, plus listed versions 1.2.18~dfsg-31.3.10~dfsg-1 |
None known |
npmUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.4.21+ds-23.5.2-0ubuntu43.5.2-0ubuntu4.1.16.04.1~esm1 |
None known |
npmUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 3.5.2-0ubuntu43.5.2-0ubuntu4.1.18.04.1~esm1 |
None known |
npmUbuntu:20.04:LTS |
All versions, plus listed versions 5.8.0+ds6-46.14.4+ds-1ubuntu2 |
None known |
nodejs14openSUSE:Leap 15.2 From an advisory covering 7 CVEs |
before 14.18.1-lp152.17.1 | 14.18.1-lp152.17.1 |
nodejs12openSUSE:Leap 15.2 From an advisory covering 7 CVEs |
before 12.22.7-lp152.3.21.1 | 12.22.7-lp152.3.21.1 |
nodejs12openSUSE:Leap 15.3 From an advisory covering 7 CVEs |
before 12.22.7-4.22.1 | 12.22.7-4.22.1 |
nodejs14openSUSE:Leap 15.3 From an advisory covering 7 CVEs |
before 14.18.1-15.21.2 | 14.18.1-15.21.2 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2021-39134 is a high vulnerability (CVSS 8.2) in Npm Arborist, published August 31, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.59%, the 48th percentile. Fixed in @npmcli/arborist 2.8.2.
References
github.com/npm/arborist/security/advisories/GHSA-2h3h-q99f-3fhc
npmjs.com/package/%40npmcli/arborist
oracle.com/security-alerts/cpuoct2021.html
cert-portal.siemens.com/productcert/pdf/ssa-389290.pdf
npmjs.com/package/@npmcli/arborist
nvd.nist.gov/vuln/detail/CVE-2021-39134
Show 55 moreShow less
github.com/advisories/GHSA-2h3h-q99f-3fhc
security.alpinelinux.org/vuln/CVE-2021-39134
docs.bell-sw.com/security/cves/CVE-2021-39134
security-tracker.debian.org/tracker/CVE-2021-39134
github.com/npm/arborist
advisories.mageia.org/MGASA-2021-0463.html
bugs.mageia.org/show_bug.cgi?id=29365
nodejs.org/en/blog/vulnerability/aug-2021-security-releases
nodejs.org/en/blog/release/v14.17.5
nodejs.org/en/blog/vulnerability/aug-2021-security-releases2
nodejs.org/en/blog/release/v14.17.6
openeuler.org/en/security/safety-bulletin/detail.html?id=openEuler-SA-2022-1620
nvd.nist.gov/vuln/detail/CVE-2020-15366
nvd.nist.gov/vuln/detail/CVE-2021-3450
nvd.nist.gov/vuln/detail/CVE-2021-44532
nvd.nist.gov/vuln/detail/CVE-2021-44533
nvd.nist.gov/vuln/detail/CVE-2021-44531
nvd.nist.gov/vuln/detail/CVE-2022-21824
nvd.nist.gov/vuln/detail/CVE-2021-27290
nvd.nist.gov/vuln/detail/CVE-2021-22921
nvd.nist.gov/vuln/detail/CVE-2021-39135
nvd.nist.gov/vuln/detail/CVE-2021-22959
nvd.nist.gov/vuln/detail/CVE-2021-22960
suse.com/support/update/announcement/2021/suse-su-20213886-1
bugzilla.suse.com/1190053
bugzilla.suse.com/1190054
bugzilla.suse.com/1190055
bugzilla.suse.com/1190056
bugzilla.suse.com/1190057
bugzilla.suse.com/1191601
bugzilla.suse.com/1191602
suse.com/security/cve/CVE-2021-22959
suse.com/security/cve/CVE-2021-22960
suse.com/security/cve/CVE-2021-37701
suse.com/security/cve/CVE-2021-37712
suse.com/security/cve/CVE-2021-37713
suse.com/security/cve/CVE-2021-39134
suse.com/security/cve/CVE-2021-39135
suse.com/support/update/announcement/2021/suse-su-20213940-1
suse.com/support/update/announcement/2021/suse-su-20213964-1
suse.com/support/update/announcement/2022/suse-su-20220101-1
bugzilla.suse.com/1194511
bugzilla.suse.com/1194512
bugzilla.suse.com/1194513
bugzilla.suse.com/1194514
suse.com/security/cve/CVE-2021-44531
suse.com/security/cve/CVE-2021-44532
suse.com/security/cve/CVE-2021-44533
suse.com/security/cve/CVE-2022-21824
ubuntu.com/security/CVE-2021-39134
cve.org/CVERecord?id=CVE-2021-39134
lists.opensuse.org/archives/list/[email protected]/thread/INKZHV64GX7LRVL3YYOERQLU3B3U47QD
lists.opensuse.org/archives/list/[email protected]/thread/OZ6MU5ASKOGKZBGVKFFXVB64PMZRVEPX
lists.opensuse.org/archives/list/[email protected]/thread/LB7JXCGGW7EKOPAS4IDMUQPYHXS3ZUZA
lists.opensuse.org/archives/list/[email protected]/thread/EB6I33SJCMQ2K7LAKKPS54HRXSB7FQXG
Left out here: the rest of 1 source description. The JSON record has them.