|
1 | 1 | --- |
2 | | -date: 2025-12-08T23:00:00.000Z |
| 2 | +date: 2026-01-13T00:00:00.000Z |
3 | 3 | category: vulnerability |
4 | 4 | title: Tuesday, January 13, 2026 Security Releases |
5 | 5 | slug: december-2025-security-releases |
6 | 6 | layout: blog-post |
7 | 7 | author: The Node.js Project |
8 | 8 | --- |
9 | 9 |
|
10 | | -## (Update 08-Jan-2026) Security Release postponed to January 13th |
| 10 | +## Security releases available |
11 | 11 |
|
12 | | -Our team has decided to postpone the release to Tuesday, January 13th, 2026. |
13 | | -This additional time will allow us to properly test all backports and re-run CITGM |
14 | | -to ensure the highest quality for our users. Additionally, releasing on Tuesday rather |
15 | | -than Friday helps ensure that security updates are available during regular business |
16 | | -hours across all time zones, particularly for our users in the Asia-Pacific region. |
| 12 | +Updates are now available for the 25.x, 24.x, 22.x, 20.x Node.js release lines |
| 13 | +to address: |
17 | 14 |
|
18 | | -We appreciate your patience and understanding as we work to deliver a secure and |
19 | | -reliable release. If you have any questions or need assistance, please feel free to |
20 | | -join us in the [OpenJS Foundation Slack](https://openjs-foundation.slack.com/). |
| 15 | +- 3 high severity issues. |
| 16 | +- 4 medium severity issues. |
| 17 | +- 1 low severity issue. |
| 18 | + |
| 19 | +This security release includes the following dependency updates to address public vulnerabilities: |
| 20 | + |
| 21 | +- c-ares (1.34.6) on 20.x, 22.x, 24.x, 25.x |
| 22 | +- undici (6.23.0, 7.18.0) on 20.x, 22.x, 24.x, 25.x |
| 23 | + |
| 24 | +## Timeout-based race conditions make Uint8Array/Buffer.alloc non-zerofilled (CVE-2025-55131) - (High) |
| 25 | + |
| 26 | +A flaw in Node.js's buffer allocation logic can expose uninitialized memory when allocations are interrupted, |
| 27 | +when using the `vm` module with the timeout option. Under specific timing conditions, buffers allocated |
| 28 | +with `Buffer.alloc` and other `TypedArray` instances like `Uint8Array` may contain leftover data from previous |
| 29 | +operations, allowing in-process secrets like tokens or passwords to leak or causing data corruption. |
| 30 | + |
| 31 | +While exploitation typically requires precise timing or in-process code execution, it can become remotely |
| 32 | +exploitable when untrusted input influences workload and timeouts, leading to potential confidentiality and |
| 33 | +integrity impact. |
| 34 | + |
| 35 | +Impact: |
| 36 | + |
| 37 | +- This vulnerability affects all users in active release lines: 20.x, 22.x, 24.x, 25.x |
| 38 | + |
| 39 | +Thank you, to Nikita Skovoroda for reporting and fixing this vulnerability. |
| 40 | + |
| 41 | +## Bypass File System Permissions using crafted symlinks (CVE-2025-55130) - (High) |
| 42 | + |
| 43 | +A flaw in Node.js’s Permissions model allows attackers to bypass `--allow-fs-read` and `--allow-fs-write` |
| 44 | +restrictions using crafted relative symlink paths. By chaining directories and symlinks, a script granted |
| 45 | +access only to the current directory can escape the allowed path and read sensitive files. This breaks the |
| 46 | +expected isolation guarantees and enables arbitrary file read/write, leading to potential system compromise. |
| 47 | + |
| 48 | +Impact: |
| 49 | + |
| 50 | +- This vulnerability affects users of the permission model on Node.js v20, v22, v24, and v25. |
| 51 | + |
| 52 | +Thank you, to natann for reporting this vulnerability and thank you RafaelGSS for fixing it. |
| 53 | + |
| 54 | +## Node.js HTTP/2 server crashes with unhandled error when receiving malformed HEADERS frame (CVE-2025-59465) - (High) |
| 55 | + |
| 56 | +A malformed `HTTP/2 HEADERS` frame with oversized, invalid `HPACK` data can cause Node.js to crash by |
| 57 | +triggering an unhandled `TLSSocket` error `ECONNRESET`. Instead of safely closing the connection, the |
| 58 | +process crashes, enabling a remote denial of service. This primarily affects applications that do not |
| 59 | +attach explicit error handlers to secure sockets, for example: |
| 60 | + |
| 61 | +```js |
| 62 | +server.on('secureConnection', socket => { |
| 63 | + socket.on('error', err => { |
| 64 | + console.log(err); |
| 65 | + }); |
| 66 | +}); |
| 67 | +``` |
| 68 | + |
| 69 | +Impact: |
| 70 | + |
| 71 | +- This vulnerability affects all users in active release lines: 20.x, 22.x, 24.x, 25.x |
| 72 | + |
| 73 | +Thank you, to dantt for reporting this vulnerability and thank you RafaelGSS for fixing it. |
| 74 | + |
| 75 | +## Uncatchable "Maximum call stack size exceeded" error on Node.js via async_hooks leads to process crashes bypassing error handlers (CVE-2025-59466) - (Medium) |
| 76 | + |
| 77 | +We have identified a bug in Node.js error handling where "Maximum call stack size exceeded" errors |
| 78 | +become uncatchable when `async_hooks.createHook()` is enabled. |
| 79 | +Instead of reaching `process.on('uncaughtException')`, the process terminates, making the crash unrecoverable. |
| 80 | +Applications that rely on `AsyncLocalStorage` (v22, v20) or `async_hooks.createHook()` (v24, v22, v20) become |
| 81 | +vulnerable to denial-of-service crashes triggered by deep recursion under specific conditions. |
| 82 | + |
| 83 | +Impact: |
| 84 | + |
| 85 | +- This vulnerability affects all users in active release lines: 20.x, 22.x, 24.x, 25.x |
| 86 | + |
| 87 | +Thank you, to Andrew MacPherson (AndrewMohawk) for identifying & aaron_vercel for reporting this vulnerability and thank you mcollina for fixing it. |
| 88 | + |
| 89 | +## Memory leak that enables remote Denial of Service against applications processing TLS client certificates (CVE-2025-59464) - (Medium) |
| 90 | + |
| 91 | +A memory leak in Node.js’s OpenSSL integration occurs when converting `X.509` certificate fields to UTF-8 |
| 92 | +without freeing the allocated buffer. When applications call `socket.getPeerCertificate(true)`, |
| 93 | +each certificate field leaks memory, allowing remote clients to trigger steady memory growth through repeated |
| 94 | +TLS connections. Over time this can lead to resource exhaustion and denial of service. |
| 95 | + |
| 96 | +Impact: |
| 97 | + |
| 98 | +- This vulnerability affects all users in active release lines: 20.x, 22.x, 24.x |
| 99 | + |
| 100 | +Thank you, to giant_anteater for reporting this vulnerability and thank you RafaelGSS for fixing it. |
| 101 | + |
| 102 | +## Node.js permission model bypass via unchecked Unix Domain Socket connections (UDS) (CVE-2026-21636) - (Medium) |
| 103 | + |
| 104 | +A flaw in Node.js's permission model allows Unix Domain Socket (UDS) connections to bypass network restrictions |
| 105 | +when `--permission` is enabled. Even without `--allow-net`, attacker-controlled inputs |
| 106 | +(such as URLs or socketPath options) can connect to arbitrary local sockets via net, tls, or undici/fetch. |
| 107 | +This breaks the intended security boundary of the permission model and enables access to privileged local services, |
| 108 | +potentially leading to privilege escalation, data exposure, or local code execution. |
| 109 | + |
| 110 | +In the moment of this vulnerability, network permissions (`--allow-net`) are still in the experimental phase. |
| 111 | + |
| 112 | +Impact: |
| 113 | + |
| 114 | +- The issue affects users of the Node.js permission model on version v25. |
| 115 | + |
| 116 | +Thank you, to mufeedvh for reporting this vulnerability and thank you RafaelGSS for fixing it. |
| 117 | + |
| 118 | +## TLS PSK/ALPN Callback Exceptions Bypass Error Handlers, Causing DoS and FD Leak (CVE-2026-21637) - (Medium) |
| 119 | + |
| 120 | +A flaw in Node.js TLS error handling allows remote attackers to crash or exhaust resources of a TLS server when |
| 121 | +`pskCallback` or `ALPNCallback` are in use. Synchronous exceptions thrown during these callbacks bypass standard |
| 122 | +TLS error handling paths (tlsClientError and error), causing either immediate process termination or silent file |
| 123 | +descriptor leaks that eventually lead to denial of service. Because these callbacks process attacker-controlled |
| 124 | +input during the TLS handshake, a remote client can repeatedly trigger the issue. |
| 125 | + |
| 126 | +Impact: |
| 127 | + |
| 128 | +- This vulnerability affects TLS servers using PSK or ALPN callbacks across Node.js versions where these callbacks |
| 129 | + throw without being safely wrapped. |
| 130 | + |
| 131 | +Thank you, to 0xmaxhax for reporting this vulnerability and thank you mcollina for fixing it. |
| 132 | + |
| 133 | +## fs.futimes() Bypasses Read-Only Permission Model (CVE-2025-55132) - (Low) |
| 134 | + |
| 135 | +A flaw in Node.js's permission model allows a file's access and modification timestamps to be changed |
| 136 | +via `futimes()` even when the process has only read permissions. |
21 | 137 |
|
22 | | -## (Update 07-Jan-2026) Security Release postponed to January 8th |
| 138 | +Unlike `utimes()`, `futimes()` does not apply the expected write-permission checks, which means file |
| 139 | +metadata can be modified in read-only directories. This behavior could be used to alter timestamps in |
| 140 | +ways that obscure activity, reducing the reliability of logs. |
23 | 141 |
|
24 | | -Our team decided to postpone the release to Thursday, January 8th, 2026, |
25 | | -due to complications in the Node.js testing CI. |
| 142 | +Impact: |
26 | 143 |
|
27 | | -## (Update 17-Dec-2025) Security Release target January 7th |
| 144 | +- This vulnerability affects users of the permission model on Node.js v20, v22, v24, and v25. |
28 | 145 |
|
29 | | -We have decided to delay the release further to Wednesday, January 7th, 2026. Many of the |
30 | | -downstream projects and users are on holiday break at the end of the year, and the security |
31 | | -release will disclose the vulnerabilities being fixed as soon as the patches are available. |
32 | | -We want to make sure that most users are no longer on holiday when they evaluate whether |
33 | | -they are affected and need to perform time-sensitive upgrades. |
| 146 | +Thank you, to oriotie for reporting this vulnerability and thank you RafaelGSS for fixing it. |
34 | 147 |
|
35 | | -## (Update 15-Dec-2025) Security Release target December 18th |
| 148 | +## Downloads and release details |
36 | 149 |
|
37 | | -The team is still working on a particularly challenging patch, for this reason |
38 | | -the release is being postponed to Thursday, December 18th or shortly after. |
| 150 | +- [Node.js v20.19.7](/blog/release/v20.19.7/) |
| 151 | +- [Node.js v22.21.2](/blog/release/v22.21.2/) |
| 152 | +- [Node.js v24.12.1](/blog/release/v24.12.1/) |
| 153 | +- [Node.js v25.2.2](/blog/release/v25.2.2/) |
39 | 154 |
|
40 | 155 | # Summary |
41 | 156 |
|
|
0 commit comments