Skip to content

Commit 4e44cbf

Browse files
committed
2022-01-10, Version 12.22.9 'Erbium' (LTS)
This is a security release. Notable changes: Improper handling of URI Subject Alternative Names (Medium)(CVE-2021-44531) - 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 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 with the fix for this disable the URI SAN type when checking a certificate against a hostname. This behavior can be reverted through the `--security-revert` command-line option. - More details will be available at https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44531 Certificate Verification Bypass via String Injection (Medium)(CVE-2021-44532) - Node.js 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. - More details will be available at https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44532 Incorrect handling of certificate subject and issuer fields (Medium)(CVE-2021-44533) - Node.js 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 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. - More details will be available at https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44533 Prototype pollution via `console.table` properties (Low)(CVE-2022-21824) - Due to the formatting logic of the `console.table()` function it was not safe to allow user controlled input to be passed to the `properties` parameter while simultaneously passing a plain object with at least one property as the first parameter, which could be `__proto__`. The prototype pollution has very limited control, in that it only allows an empty string to be assigned numerical keys of the object prototype. - Versions of Node.js with the fix for this use a null protoype for the object these properties are being assigned to. - More details will be available at https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-21824 PR-URL: nodejs-private/node-private#309
1 parent a5c7843 commit 4e44cbf

File tree

4 files changed

+57
-3
lines changed

4 files changed

+57
-3
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ release.
2828
</tr>
2929
<tr>
3030
<td valign="top">
31-
<b><a href="doc/changelogs/CHANGELOG_V12.md#12.22.8">12.22.8</a></b><br/>
31+
<b><a href="doc/changelogs/CHANGELOG_V12.md#12.22.9">12.22.9</a></b><br/>
32+
<a href="doc/changelogs/CHANGELOG_V12.md#12.22.8">12.22.8</a><br/>
3233
<a href="doc/changelogs/CHANGELOG_V12.md#12.22.7">12.22.7</a><br/>
3334
<a href="doc/changelogs/CHANGELOG_V12.md#12.22.6">12.22.6</a><br/>
3435
<a href="doc/changelogs/CHANGELOG_V12.md#12.22.5">12.22.5</a><br/>

doc/api/tls.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1324,7 +1324,7 @@ decrease overall server throughput.
13241324
<!-- YAML
13251325
added: v0.8.4
13261326
changes:
1327-
- version: REPLACEME
1327+
- version: v12.22.9
13281328
pr-url: https://github.com/nodejs-private/node-private/pull/300
13291329
description: Support for `uniformResourceIdentifier` subject alternative
13301330
names has been disabled in response to CVE-2021-44531.

doc/changelogs/CHANGELOG_V12.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
</tr>
1212
<tr>
1313
<td valign="top">
14+
<a href="#12.22.9">12.22.9</a><br/>
1415
<a href="#12.22.8">12.22.8</a><br/>
1516
<a href="#12.22.7">12.22.7</a><br/>
1617
<a href="#12.22.6">12.22.6</a><br/>
@@ -78,6 +79,58 @@
7879
* [io.js](CHANGELOG_IOJS.md)
7980
* [Archive](CHANGELOG_ARCHIVE.md)
8081

82+
<a id="12.22.9"></a>
83+
84+
## 2022-01-10, Version 12.22.9 'Erbium' (LTS), @richardlau
85+
86+
This is a security release.
87+
88+
### Notable changes
89+
90+
#### Improper handling of URI Subject Alternative Names (Medium)(CVE-2021-44531)
91+
92+
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 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.
93+
94+
Versions of Node.js with the fix for this disable the URI SAN type when checking a certificate against a hostname. This behavior can be reverted through the `--security-revert` command-line option.
95+
96+
More details will be available at [CVE-2021-44531](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44531) after publication.
97+
98+
#### Certificate Verification Bypass via String Injection (Medium)(CVE-2021-44532)
99+
100+
Node.js 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.
101+
102+
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.
103+
104+
More details will be available at [CVE-2021-44532](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44532) after publication.
105+
106+
#### Incorrect handling of certificate subject and issuer fields (Medium)(CVE-2021-44533)
107+
108+
Node.js 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.
109+
110+
Affected versions of Node.js 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.
111+
112+
More details will be available at [CVE-2021-44533](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44533) after publication.
113+
114+
#### Prototype pollution via `console.table` properties (Low)(CVE-2022-21824)
115+
116+
Due to the formatting logic of the `console.table()` function it was not safe to allow user controlled input to be passed to the `properties` parameter while simultaneously passing a plain object with at least one property as the first parameter, which could be `__proto__`. The prototype pollution has very limited control, in that it only allows an empty string to be assigned numerical keys of the object prototype.
117+
118+
Versions of Node.js with the fix for this use a null protoype for the object these properties are being assigned to.
119+
120+
More details will be available at [CVE-2022-21824](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-21824) after publication.
121+
122+
Thanks to Patrik Oldsberg (rugvip) for reporting this vulnerability.
123+
124+
### Commits
125+
126+
* \[[`be69403528`](https://github.com/nodejs/node/commit/be69403528)] - **console**: fix prototype pollution via console.table (Tobias Nießen) [nodejs-private/node-private#307](https://github.com/nodejs-private/node-private/pull/307)
127+
* \[[`19873abfb2`](https://github.com/nodejs/node/commit/19873abfb2)] - **crypto,tls**: implement safe x509 GeneralName format (Tobias Nießen and Akshay Kumar) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
128+
* \[[`ff9ac7d757`](https://github.com/nodejs/node/commit/ff9ac7d757)] - **doc**: fix date for v12.22.8 (Richard Lau) [#41213](https://github.com/nodejs/node/pull/41213)
129+
* \[[`a5c7843cab`](https://github.com/nodejs/node/commit/a5c7843cab)] - **src**: add cve reverts and associated tests (Michael Dawson and Akshay Kumar) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
130+
* \[[`d4e5d1b9ca`](https://github.com/nodejs/node/commit/d4e5d1b9ca)] - **src**: remove unused x509 functions (Tobias Nießen and Akshay Kumar) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
131+
* \[[`8c2db2c86b`](https://github.com/nodejs/node/commit/8c2db2c86b)] - **tls**: fix handling of x509 subject and issuer (Tobias Nießen and Akshay Kumar) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
132+
* \[[`e0fe6a635e`](https://github.com/nodejs/node/commit/e0fe6a635e)] - **tls**: drop support for URI alternative names (Tobias Nießen and Akshay Kumar) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
133+
81134
<a id="12.22.8"></a>
82135

83136
## 2021-12-16, Version 12.22.8 'Erbium' (LTS), @richardlau

src/node_version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#define NODE_VERSION_IS_LTS 1
3030
#define NODE_VERSION_LTS_CODENAME "Erbium"
3131

32-
#define NODE_VERSION_IS_RELEASE 0
32+
#define NODE_VERSION_IS_RELEASE 1
3333

3434
#ifndef NODE_STRINGIFY
3535
#define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)

0 commit comments

Comments
 (0)