Skip to content

Releases: nodejs/node

2022-01-10, Version 14.18.3 'Fermium' (LTS), @richardlau

10 Jan 23:29
v14.18.3
92df3d6

Choose a tag to compare

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 CVE-2021-44531 after publication.

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 CVE-2021-44532 after publication.

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 CVE-2021-44533 after publication.

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 CVE-2022-21824 after publication.

Thanks to Patrik Oldsberg (rugvip) for reporting this vulnerability.

Commits

2022-01-10, Version 12.22.9 'Erbium' (LTS), @richardlau

10 Jan 23:27
v12.22.9
4e44cbf

Choose a tag to compare

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 CVE-2021-44531 after publication.

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 CVE-2021-44532 after publication.

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 CVE-2021-44533 after publication.

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 CVE-2022-21824 after publication.

Thanks to Patrik Oldsberg (rugvip) for reporting this vulnerability.

Commits

2021-12-17, Version 17.3.0 (Current), @danielleadams

17 Dec 23:24
v17.3.0
e5873d7

Choose a tag to compare

Notable changes

OpenSSL-3.0.1

OpenSSL-3.0.1 contains a fix for CVE-2021-4044: Invalid handling of X509_verify_cert() internal errors in libssl (Moderate). This is a vulnerability in OpenSSL that may be exploited through Node.js. More information can be read here: https://www.openssl.org/news/secadv/20211214.txt.

Contributed by Richard Lau #41177.

Other Notable Changes

  • lib:
    • make AbortSignal cloneable/transferable (James M Snell) #41050
  • deps:
    • upgrade npm to 8.3.0 (npm team) #41127
  • doc:
    • add @bnb as a collaborator (Tierney Cyren) #41100
  • process:
    • add getActiveResourcesInfo() (Darshan Sen) #40813
  • timers:
    • add experimental scheduler api (James M Snell) #40909

Commits

Read more

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

16 Dec 23:48
v12.22.8
8b61500

Choose a tag to compare

Notable Changes

This release contains a c-ares update to fix a regression introduced in
Node.js 12.22.5 resolving CNAME records containing underscores
#39780.

Root certificates have been updated to those from Mozilla's Network
Security Services 3.71 #40281.

Commits

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

01 Dec 16:23
v16.13.1
12029ce

Choose a tag to compare

Notable Changes

  • [c14eb2325d] - deps: upgrade npm to 8.1.2 (npm team) #40643
  • [a901b6c53c] - deps: update c-ares to 1.18.1 (Richard Lau) #40660
    • This release contains a c-ares update to fix a regression introduced in Node.js v16.6.2 resolving CNAME records containing underscores (#39780).
  • [755c08573f] - doc: add VoltrexMaster to collaborators (voltrexmaster) #40566
  • [881dd7ba2a] - lib: fix regular expression to detect `/` and `\` (Francesco Trotta) #40325

Commits

Read more

2021-11-30, Version 17.2.0 (Current), @targos

30 Nov 17:51
v17.2.0
1aaa4eb

Choose a tag to compare

Notable Changes

  • [06916490af] - (SEMVER-MINOR) async_hooks: expose async_wrap providers (Rafael Gonzaga) #40760
  • [371ee64c92] - (SEMVER-MINOR) deps: update V8 to 9.6.180.14 (Michaël Zasso) #40488
  • [675c210b04] - (SEMVER-MINOR) lib: add reason to AbortSignal (James M Snell) #40807
  • [0de2850680] - (SEMVER-MINOR) src: add x509.fingerprint512 to crypto module (3nprob) #39809
  • [fa9b5c35d2] - stream: deprecate thenable support (Antoine du Hamel) #40860
  • [534409d4e7] - stream: fix finished regression when working with legacy Stream (Matteo Collina) #40858

Commits

Read more

2021-11-30, Version 14.18.2 'Fermium' (LTS), @richardlau

30 Nov 16:30
v14.18.2
c3dd76a

Choose a tag to compare

Notable changes

This release contains a c-ares update to fix a regression introduced in
Node.js 14.17.5 resolving CNAME records containing underscores
#39780.

Also included are commits to allow Node.js 14 to continue to build and
pass tests on our Jenkins CI, including adding Python 3.10 to the list
of allowable Python versions for building.

Commits

2021-11-09, Version 17.1.0 (Current), @targos

09 Nov 19:13
v17.1.0
2b1744b

Choose a tag to compare

Notable Changes

  • [89b34ecffb] - doc: add VoltrexMaster to collaborators (voltrexmaster) #40566
  • [95e4d29eb4] - (SEMVER-MINOR) esm: add support for JSON import assertion (Antoine du Hamel) #40250
  • [1ddbae2d76] - (SEMVER-MINOR) lib: add unsubscribe method to non-active DC channels (simon-id) #40433
  • [aa61551b49] - (SEMVER-MINOR) lib: add return value for DC channel.unsubscribe (simon-id) #40433
  • [fbeb895ca6] - (SEMVER-MINOR) v8: multi-tenant promise hook api (Stephen Belanger) #39283

Commits

Read more

2021-10-26, Version 16.13.0 'Gallium' (LTS), @richardlau

26 Oct 16:22
v16.13.0
40ecd56

Choose a tag to compare

Notable Changes

This release marks the transition of Node.js 16.x into Long Term Support (LTS)
with the codename 'Gallium'. The 16.x release line now moves into "Active LTS"
and will remain so until October 2022. After that time, it will move into
"Maintenance" until end of life in April 2024.

2021-10-20, Version 17.0.1 (Current), @targos

20 Oct 20:28
v17.0.1
d68dd62

Choose a tag to compare

Notable Changes

Fixed distribution for native addon builds

This release fixes an issue introduced in Node.js v17.0.0, where some V8 headers
were missing from the distributed tarball, making it impossible to build native
addons. These headers are now included. #40526

Fixed stream issues

  • Fixed a regression in stream.promises.pipeline, which was introduced in version
    16.10.0, is fixed. It is now possible again to pass an array of streams to the
    function. #40193
  • Fixed a bug in stream.Duplex.from, which didn't work properly when an async
    generator function was passed to it. #40499

Commits