Skip to content

Commit f99a2c2

Browse files
committed
2022-01-10, Version 16.13.2 'Gallium' (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#312
1 parent af82983 commit f99a2c2

File tree

4 files changed

+57
-3
lines changed

4 files changed

+57
-3
lines changed

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ release.
4040
<a href="doc/changelogs/CHANGELOG_V17.md#17.0.0">17.0.0</a><br/>
4141
</td>
4242
<td valign="top">
43-
<b><a href="doc/changelogs/CHANGELOG_V16.md#16.13.1">16.13.1</a></b><br/>
43+
<b><a href="doc/changelogs/CHANGELOG_V16.md#16.13.2">16.13.2</a></b><br/>
44+
<a href="doc/changelogs/CHANGELOG_V16.md#16.13.1">16.13.1</a><br/>
4445
<a href="doc/changelogs/CHANGELOG_V16.md#16.13.0">16.13.0</a><br/>
4546
<a href="doc/changelogs/CHANGELOG_V16.md#16.12.0">16.12.0</a><br/>
4647
<a href="doc/changelogs/CHANGELOG_V16.md#16.11.1">16.11.1</a><br/>

doc/api/crypto.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -2579,7 +2579,7 @@ The SHA-512 fingerprint of this certificate.
25792579
<!-- YAML
25802580
added: v15.6.0
25812581
changes:
2582-
- version: REPLACEME
2582+
- version: v16.13.2
25832583
pr-url: https://github.com/nodejs-private/node-private/pull/300
25842584
description: Parts of this string may be encoded as JSON string literals
25852585
in response to CVE-2021-44532.
@@ -2676,7 +2676,7 @@ The complete subject of this certificate.
26762676
<!-- YAML
26772677
added: v15.6.0
26782678
changes:
2679-
- version: REPLACEME
2679+
- version: v16.13.2
26802680
pr-url: https://github.com/nodejs-private/node-private/pull/300
26812681
description: Parts of this string may be encoded as JSON string literals
26822682
in response to CVE-2021-44532.

doc/api/tls.md

+1
Original file line numberDiff line numberDiff line change
@@ -1462,6 +1462,7 @@ decrease overall server throughput.
14621462
added: v0.8.4
14631463
changes:
14641464
- version:
1465+
- v16.13.2
14651466
- v14.18.3
14661467
- v12.22.9
14671468
pr-url: https://github.com/nodejs-private/node-private/pull/300

doc/changelogs/CHANGELOG_V16.md

+52
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
</tr>
1010
<tr>
1111
<td valign="top">
12+
<a href="#16.13.2">16.13.2</a><br/>
1213
<a href="#16.13.1">16.13.1</a><br/>
1314
<a href="#16.13.0">16.13.0</a><br/>
1415
</td>
@@ -55,6 +56,57 @@
5556
* [io.js](CHANGELOG_IOJS.md)
5657
* [Archive](CHANGELOG_ARCHIVE.md)
5758

59+
<a id="16.13.2"></a>
60+
61+
## 2022-01-10, Version 16.13.2 'Gallium' (LTS), @danielleadams
62+
63+
This is a security release.
64+
65+
### Notable changes
66+
67+
#### Improper handling of URI Subject Alternative Names (Medium)(CVE-2021-44531)
68+
69+
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.
70+
71+
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.
72+
73+
More details will be available at [CVE-2021-44531](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44531) after publication.
74+
75+
#### Certificate Verification Bypass via String Injection (Medium)(CVE-2021-44532)
76+
77+
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.
78+
79+
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.
80+
81+
More details will be available at [CVE-2021-44532](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44532) after publication.
82+
83+
#### Incorrect handling of certificate subject and issuer fields (Medium)(CVE-2021-44533)
84+
85+
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.
86+
87+
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.
88+
89+
More details will be available at [CVE-2021-44533](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44533) after publication.
90+
91+
#### Prototype pollution via `console.table` properties (Low)(CVE-2022-21824)
92+
93+
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.
94+
95+
Versions of Node.js with the fix for this use a null protoype for the object these properties are being assigned to.
96+
97+
More details will be available at [CVE-2022-21824](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-21824) after publication.
98+
99+
Thanks to Patrik Oldsberg (rugvip) for reporting this vulnerability.
100+
101+
### Commits
102+
103+
* \[[`8dd4ca4537`](https://github.com/nodejs/node/commit/8dd4ca4537)] - **console**: fix prototype pollution via console.table (Tobias Nießen) [nodejs-private/node-private#307](https://github.com/nodejs-private/node-private/pull/307)
104+
* \[[`e52882da4c`](https://github.com/nodejs/node/commit/e52882da4c)] - **crypto,tls**: implement safe x509 GeneralName format (Tobias Nießen) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
105+
* \[[`9a0a189b0b`](https://github.com/nodejs/node/commit/9a0a189b0b)] - **src**: add cve reverts and associated tests (Michael Dawson) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
106+
* \[[`4a262d42bc`](https://github.com/nodejs/node/commit/4a262d42bc)] - **src**: remove unused x509 functions (Tobias Nießen) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
107+
* \[[`965536fe3d`](https://github.com/nodejs/node/commit/965536fe3d)] - **tls**: fix handling of x509 subject and issuer (Tobias Nießen) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
108+
* \[[`a2cbfa95ff`](https://github.com/nodejs/node/commit/a2cbfa95ff)] - **tls**: drop support for URI alternative names (Tobias Nießen) [nodejs-private/node-private#300](https://github.com/nodejs-private/node-private/pull/300)
109+
58110
<a id="16.13.1"></a>
59111

60112
## 2021-12-01, Version 16.13.1 'Gallium' (LTS), @BethGriggs

0 commit comments

Comments
 (0)