CVE-2021-22921
Incorrect Permission Assignment for Critical Resource in Node
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
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
- High
Exploit likelihood
What each source reports
NVD Score used
7.8
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
- Record
CVE-2021-22921- 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-732
- Updated
- 2026-11-02
CVE List No score
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
- Record
CVE-2021-22921- Weakness
- CWE-732
- Updated
- 2026-11-02
EUVDEUVD-2021-10050 No score
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
- Record
EUVD-2021-10050- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-g3w9-g82h-cmp4
7.8
Incorrect Permission Assignment for Critical Resource in Node
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
- Record
GHSA-g3w9-g82h-cmp4- 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 - Weakness
- CWE-732
- Updated
- 2026-11-02
OSV
7.8
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
- Record
CVE-2021-22921- 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
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
OSVBIT-node-2021-22921 No score
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
- Record
BIT-node-2021-22921- Updated
- 2026-11-02
OSVBIT-node-min-2021-22921 No score
Node.js before 16.4.1, 14.17.2, and 12.22.2 is vulnerable to local privilege escalation attacks under certain conditions on Windows platforms. More specifically, improper configuration of permissions in the installation directory allows an attacker to perform two different escalation attacks: PATH and DLL hijacking.
- Record
BIT-node-min-2021-22921- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
nodeBitnami |
12.0.0 up to 12.22.2, 14.0.0 up to 14.17.2, 16.0.0 up to 16.4.1 | 12.22.214.17.216.4.1 |
node-minBitnami |
12.0.0 up to 12.22.2, 14.0.0 up to 14.17.2, 16.0.0 up to 16.4.1 | 12.22.214.17.216.4.1 |
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 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2021-22921 is a high vulnerability (CVSS 7.8) in Nodejs Node, published July 12, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 7.41%, the 94th percentile. Fixed in node 12.22.2.
References
nodejs.org/en/blog/vulnerability/july-2021-security-releases
hackerone.com/reports/1211160
security.netapp.com/advisory/ntap-20210805-0003
cert-portal.siemens.com/productcert/pdf/ssa-389290.pdf
nvd.nist.gov/vuln/detail/CVE-2021-22921
github.com/advisories/GHSA-g3w9-g82h-cmp4
Show 12 moreShow less
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-39134
nvd.nist.gov/vuln/detail/CVE-2021-39135
nvd.nist.gov/vuln/detail/CVE-2021-22959
nvd.nist.gov/vuln/detail/CVE-2021-22960
Left out here: the rest of 1 source description. The JSON record has them.