|
| 1 | +--- |
| 2 | +date: '2026-11-11T16:44:58.310Z' |
| 3 | +category: release |
| 4 | +title: Node.js 22.23.5 (LTS) |
| 5 | +layout: blog-post |
| 6 | +author: Antoine du Hamel |
| 7 | +--- |
| 8 | + |
| 9 | +## 2026-11-11, Version 22.23.5 'Jod' (LTS), @aduh95 |
| 10 | + |
| 11 | +This is a security release. |
| 12 | + |
| 13 | +### Notable Changes |
| 14 | + |
| 15 | +- (CVE-2026-123863) http2: release headers when a stream is removed (Matteo Collina) – High |
| 16 | +- (CVE-2026-123864) tls,http: prevent nested parser execution from empty writes (Matteo Collina) – High |
| 17 | +- (CVE-2026-123865) http2: detect streams abandoned by nghttp2 (Matteo Collina) – High |
| 18 | +- (CVE-2026-123866) http2: retain buffers until socket writes finish (Matteo Collina) – High |
| 19 | +- (CVE-2026-123872) tls: disable resumption for mTLS with no session id context (Tim Perry) – High |
| 20 | +- (CVE-2026-123872) tls: don't allow renegotiation or HRR to change SNI (Tim Perry) – High |
| 21 | +- (CVE-2026-123872) tls: don't allow TLS resumption to change SNI (Tim Perry) – High |
| 22 | +- (CVE-2026-123874) http2: retain streams during pending writes (Matteo Collina) – High |
| 23 | +- (CVE-2026-123828) http2: avoid overflowing ALTSVC buffers (Matteo Collina) – Medium |
| 24 | +- (CVE-2026-123867) tls: apply the CA of SNI contexts without a certificate (Matteo Collina) – Medium |
| 25 | +- (CVE-2026-123868) http2: charge inbound DATA retained by streams to maxSessionMemory (Matteo Collina) – Medium |
| 26 | +- (CVE-2026-123871) http: redact proxy credentials in invalid proxy URL errors (Matteo Collina) – Medium |
| 27 | +- (CVE-2026-123875) http2: guard against null write request on cancelled stream (Matteo Collina) – Medium |
| 28 | +- (CVE-2026-123877) https: isolate Agent TLS policy keys (Matteo Collina) – Medium |
| 29 | +- (CVE-2026-123829) permission: do not leak denied descendants in recursive fs.watch (RafaelGSS) – Low |
| 30 | +- (CVE-2026-123862) zlib: handle params callback after destroy (Matteo Collina) – Low |
| 31 | +- (CVE-2026-123873) permission: check heap snapshot destination (RafaelGSS) – Low |
| 32 | +- deps: update llhttp to 9.4.4 (Antoine du Hamel) |
| 33 | +- deps: update sqlite to 3.54.1 (Node.js GitHub Bot) |
| 34 | + |
| 35 | +### Commits |
| 36 | + |
| 37 | +- \[[`554fff40f0`](https://github.com/nodejs/node/commit/554fff40f0)] - **deps**: update llhttp to 9.4.4 (Antoine du Hamel) [nodejs-private/node-private#1038](https://github.com/nodejs-private/node-private/pull/1038) |
| 38 | +- \[[`6577cbf231`](https://github.com/nodejs/node/commit/6577cbf231)] - **deps**: update sqlite to 3.54.1 (Node.js GitHub Bot) [#66816](https://github.com/nodejs/node/pull/66816) |
| 39 | +- \[[`61d93c6086`](https://github.com/nodejs/node/commit/61d93c6086)] - **deps**: update sqlite to 3.54.0 (Node.js GitHub Bot) [#66663](https://github.com/nodejs/node/pull/66663) |
| 40 | +- \[[`cd18f6bdff`](https://github.com/nodejs/node/commit/cd18f6bdff)] - **http**: redact proxy credentials in invalid proxy URL errors (Matteo Collina) [nodejs-private/node-private#1001](https://github.com/nodejs-private/node-private/pull/1001) |
| 41 | +- \[[`6cd7e80d68`](https://github.com/nodejs/node/commit/6cd7e80d68)] - **http2**: retain buffers until socket writes finish (Matteo Collina) [nodejs-private/node-private#1017](https://github.com/nodejs-private/node-private/pull/1017) |
| 42 | +- \[[`9bce421783`](https://github.com/nodejs/node/commit/9bce421783)] - **http2**: release headers when a stream is removed (Matteo Collina) [nodejs-private/node-private#1026](https://github.com/nodejs-private/node-private/pull/1026) |
| 43 | +- \[[`30fd852c0d`](https://github.com/nodejs/node/commit/30fd852c0d)] - **http2**: detect streams abandoned by nghttp2 (Matteo Collina) [#66641](https://github.com/nodejs/node/pull/66641) |
| 44 | +- \[[`21fb5d0348`](https://github.com/nodejs/node/commit/21fb5d0348)] - **http2**: guard against null write request on cancelled stream (Matteo Collina) [#67252](https://github.com/nodejs/node/pull/67252) |
| 45 | +- \[[`af6fbb6564`](https://github.com/nodejs/node/commit/af6fbb6564)] - **https**: isolate Agent TLS policy keys (Matteo Collina) [nodejs-private/node-private#1036](https://github.com/nodejs-private/node-private/pull/1036) |
| 46 | +- \[[`5c9eed3b1e`](https://github.com/nodejs/node/commit/5c9eed3b1e)] - **permission**: do not leak denied descendants in recursive fs.watch (RafaelGSS) [nodejs-private/node-private#967](https://github.com/nodejs-private/node-private/pull/967) |
| 47 | +- \[[`5e497aec89`](https://github.com/nodejs/node/commit/5e497aec89)] - **src**: fix the fs permission tree node on wildcard nodes (James M Snell) [nodejs-private/node-private#986](https://github.com/nodejs-private/node-private/pull/986) |
| 48 | +- \[[`06af164d09`](https://github.com/nodejs/node/commit/06af164d09)] - **tls**: disable resumption for mTLS with no session id context (Tim Perry) [nodejs-private/node-private#1030](https://github.com/nodejs-private/node-private/pull/1030) |
| 49 | +- \[[`209c7e4d83`](https://github.com/nodejs/node/commit/209c7e4d83)] - **tls**: don't allow renegotiation or HRR to change SNI (Tim Perry) [nodejs-private/node-private#1030](https://github.com/nodejs-private/node-private/pull/1030) |
| 50 | +- \[[`05e452f075`](https://github.com/nodejs/node/commit/05e452f075)] - **tls**: don't allow TLS resumption to change SNI (Tim Perry) [nodejs-private/node-private#1030](https://github.com/nodejs-private/node-private/pull/1030) |
| 51 | +- \[[`67da864a89`](https://github.com/nodejs/node/commit/67da864a89)] - **tls**: apply the CA of SNI contexts without a certificate (Matteo Collina) [nodejs-private/node-private#1020](https://github.com/nodejs-private/node-private/pull/1020) |
| 52 | +- \[[`c841c6c7f1`](https://github.com/nodejs/node/commit/c841c6c7f1)] - **tls,http**: prevent nested parser execution from empty writes (Matteo Collina) [nodejs-private/node-private#1021](https://github.com/nodejs-private/node-private/pull/1021) |
| 53 | +- \[[`ea159e84dd`](https://github.com/nodejs/node/commit/ea159e84dd)] - **zlib**: handle params callback after destroy (Matteo Collina) [nodejs-private/node-private#1037](https://github.com/nodejs-private/node-private/pull/1037) |
| 54 | + |
| 55 | +Windows 32-bit Installer: https://nodejs.org/dist/v22.23.5/node-v22.23.5-x86.msi \ |
| 56 | +Windows 64-bit Installer: https://nodejs.org/dist/v22.23.5/node-v22.23.5-x64.msi \ |
| 57 | +Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.23.5/node-v22.23.5-arm64.msi \ |
| 58 | +Windows 32-bit Binary: https://nodejs.org/dist/v22.23.5/win-x86/node.exe \ |
| 59 | +Windows 64-bit Binary: https://nodejs.org/dist/v22.23.5/win-x64/node.exe \ |
| 60 | +Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.23.5/win-arm64/node.exe \ |
| 61 | +macOS 64-bit Installer: https://nodejs.org/dist/v22.23.5/node-v22.23.5.pkg \ |
| 62 | +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-darwin-arm64.tar.gz \ |
| 63 | +macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-darwin-x64.tar.gz \ |
| 64 | +Linux 64-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-linux-x64.tar.xz \ |
| 65 | +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-linux-ppc64le.tar.xz \ |
| 66 | +Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-linux-s390x.tar.xz \ |
| 67 | +AIX 64-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-aix-ppc64.tar.gz \ |
| 68 | +ARMv7 32-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-linux-armv7l.tar.xz \ |
| 69 | +ARMv8 64-bit Binary: https://nodejs.org/dist/v22.23.5/node-v22.23.5-linux-arm64.tar.xz \ |
| 70 | +Source Code: https://nodejs.org/dist/v22.23.5/node-v22.23.5.tar.gz \ |
| 71 | +Other release files: https://nodejs.org/dist/v22.23.5/ \ |
| 72 | +Documentation: https://nodejs.org/docs/v22.23.5/api/ |
| 73 | + |
| 74 | +### SHASUMS |
| 75 | + |
| 76 | +``` |
| 77 | +-----BEGIN PGP SIGNED MESSAGE----- |
| 78 | +Hash: SHA256 |
| 79 | +
|
| 80 | +f0dda0bae79678ab6eb3ca02179f4fe534463ce6f68ab942d2b49b057e478433 node-v22.23.5-aix-ppc64.tar.gz |
| 81 | +e01778455a929fa3b88ba102cca9527a9b39ca1c9fad1426c216e5e6d81b1a5a node-v22.23.5-arm64.msi |
| 82 | +e7131995759b61a0170b646010d2ad35a5d37b4cb0d471f3e8317eac6f742f3d node-v22.23.5-darwin-arm64.tar.gz |
| 83 | +d0c68c321161bb2c6483efea9a343010dea8e5e7f60d73c6a7eba140016d662f node-v22.23.5-darwin-arm64.tar.xz |
| 84 | +c53383238206b9ae4db23c5d8a63645e2e753bec8ab51a49cc81939aa64e9422 node-v22.23.5-darwin-x64.tar.gz |
| 85 | +d68bf234a07781141dfca61ae4461c24560f70bd53223d76a41529eb02e8554e node-v22.23.5-darwin-x64.tar.xz |
| 86 | +be890e343a72acd49e3b0491aefdc55400ed8a8fa29272d2d1ad19823e80035f node-v22.23.5-headers.tar.gz |
| 87 | +ca152fdc8599c56eb2d1c44c58f5abf6dc97a69cddf94edcface9f727f608e1d node-v22.23.5-headers.tar.xz |
| 88 | +8bd3dc69eee8f3f226315a80d7d1d4faccf217a4c8fae500168ac2e38f3bdba3 node-v22.23.5-linux-arm64.tar.gz |
| 89 | +2babb9eb5264860d540849f4b064a6fbdebcdc323657d9d382ce23d313fd5e09 node-v22.23.5-linux-arm64.tar.xz |
| 90 | +02cd221808721481ba3edd8b51624a391b45357543b8144e6ff7aac35e1500ac node-v22.23.5-linux-armv7l.tar.gz |
| 91 | +1c3e15d38e4cafbbf74377ac070cd9d7e0418c673e1f6332f38f1d4762a699f9 node-v22.23.5-linux-armv7l.tar.xz |
| 92 | +de46a027eeb3942d589da63f2c5734e73d5c53aac8245e75088a1ac13bda2e04 node-v22.23.5-linux-ppc64le.tar.gz |
| 93 | +578bc696ade54f85439f6fdd5bd7695c2dea40d307565f573b9ea6ad7b1e5615 node-v22.23.5-linux-ppc64le.tar.xz |
| 94 | +50f8e113bf6638bb9d5ae6620883fd90b98e8e1f7af10ef87cca9dc979cdb39b node-v22.23.5-linux-s390x.tar.gz |
| 95 | +210232af4b947a70880b985207cb307a8fb310b62c1925bdd971b0eaab96bde0 node-v22.23.5-linux-s390x.tar.xz |
| 96 | +83b8ba916eb22e89ba8274426a40f7aa0011c6e4c5ff77a5b03793f781a90786 node-v22.23.5-linux-x64-musl.tar.gz |
| 97 | +aef6690916d4b4210b55618ea0beeb927d67184257879b1ebec6e309285f3c08 node-v22.23.5-linux-x64-musl.tar.xz |
| 98 | +c54118104acc524633b5abe106bbf44a53126ec8b4e5fa105cb92b5d7de8a1a1 node-v22.23.5-linux-x64.tar.gz |
| 99 | +cdeb8670a0c81f51b4dc4ac61919f9b1ad917b304bf8221eb939570663d240f8 node-v22.23.5-linux-x64.tar.xz |
| 100 | +89fadefd7798158d8990ca9ed7dbb58f8ca7593adb92fe3da8a445db99415533 node-v22.23.5.pkg |
| 101 | +5ae198a2ec0513ea8b7ef28f71094c9a7931a44e4db17b1734d76fe958e0ff36 node-v22.23.5.tar.gz |
| 102 | +6cce7c58bf058700c643944903d60a325e8c9ceede1f5c2c088b435f2ada091a node-v22.23.5.tar.xz |
| 103 | +f863a9fc7bd478d00aac4020cf9a75d81dba59ae078cc30c39bb0792a497cd96 node-v22.23.5-win-arm64.7z |
| 104 | +c1856817f611738c77534efbff8a5a17990593eab24046bc8d2c23a77a160d13 node-v22.23.5-win-arm64.zip |
| 105 | +aac7072c663c5efa2147aa7d51022d56efb1aa75c7dd0a3e7582501c692a045a node-v22.23.5-win-x64.7z |
| 106 | +4a191082e9706866830379d577d2cc8a50c776fcd9436a8d061b063ed0d9a0e3 node-v22.23.5-win-x64.zip |
| 107 | +423dd2a38fbf7df6142242e7a10ee845389efe114577c47f359a28066deea2b5 node-v22.23.5-win-x86.7z |
| 108 | +9c01245683c87e3f81eedfbad82c1665611749627cd1b0b5a42921db9361b4a6 node-v22.23.5-win-x86.zip |
| 109 | +963a110509eca7e0d6cc009095ccb4117e26d59287876a056b79293ae3fef238 node-v22.23.5-x64.msi |
| 110 | +0118588f943cd620c66a688edca3d33231feeae2d0ae391cff0ef00e44d522e2 node-v22.23.5-x86.msi |
| 111 | +c2eaa48231229b966bfef21554df203221862a9fc94ec2a6908aad5eaa6c0ba0 win-arm64/node.exe |
| 112 | +5378f5bad777b4929d1cd4f58974e0ef03815ce5c159863f1875c4b434460c27 win-arm64/node.lib |
| 113 | +974f58f3978b9302a5f842979694c27ab3a544cc3e52bd9ab8e9ba0429be5aef win-arm64/node_pdb.7z |
| 114 | +cbff923c9d6397394e119fb05437f28b31efdb90afcb519a655f987430a983f7 win-arm64/node_pdb.zip |
| 115 | +247e9693d316da9857e44990e5e11709f596f18112251b8026ec6eed80bdf38a win-x64/node.exe |
| 116 | +c243185f2347870cadb637c909bf123fc703dc65dbfa769b17ec45a4b661d782 win-x64/node.lib |
| 117 | +03dabf86832838fbcb92816c11ee5fd59864c79573931177654b27dc7c4092ff win-x64/node_pdb.7z |
| 118 | +82dd773a53ce2aaacaf41014ee81caa82e5bc2ed2b8e72f4764201c662b52995 win-x64/node_pdb.zip |
| 119 | +a6f12cfaa84f16d1cfb36ccca361e155acee9e8a4e47fdc3a684cda361ad245a win-x86/node.exe |
| 120 | +eff47cc18fe2d3e40886cd49f04a85134681657d8b0f2afc55f363743cf6ddd7 win-x86/node.lib |
| 121 | +21a4e0bea77234963c96e14e01d147be604b320ee692c6927aff61f59418e59c win-x86/node_pdb.7z |
| 122 | +0e417cff977767812ff81c98f420a514f83193e7ca799bcb1cff99a659a0b983 win-x86/node_pdb.zip |
| 123 | +
|
| 124 | +-----BEGIN PGP SIGNATURE----- |
| 125 | +
|
| 126 | +iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCavSZnAAKCRAgsaOQsWjT |
| 127 | +Vj01APwPC7+mOBYsepjXXr42B+d4UiWxpfUlX9PplsLbvTLojAD/TxXm1ctPiszb |
| 128 | +QS5t+HXqDJrH0/fKcE/e8ZY43hHZyAk= |
| 129 | +=W25e |
| 130 | +-----END PGP SIGNATURE----- |
| 131 | +``` |
0 commit comments