Node.js CVE-2026-123864: HTTPS flaw leaks TLS keys, patch to 22.23.5, 24.22.3 or 26.13.1
Cross-connection memory disclosure in the HTTPS parser, plus HTTP/2 teardown flaws in the same release

Node.js CVE-2026-123864: HTTPS flaw leaks TLS keys, patch to 22.23.5, 24.22.3 or 26.13.1

Node.js has patched a memory disclosure bug in its HTTPS stack that lets an unauthenticated client read another connection's memory, including TLS private keys. The fix shipped on 11 November 2026 in CVE-2026-123864, alongside a set of HTTP/2 teardown flaws in the same release.

What happened

TLSWrap::DoWrite() calls ClearOut() directly when a JavaScript caller asks it to write zero bytes. If that write happens inside the HTTP parser's on_body callback, ClearOut() decrypts the next TLS record while the parser is still mid-body, re-enters llhttp_execute(), and triggers a use-after-free and an out-of-bounds heap read. The server then copies that freed or unrelated heap memory into the response body for the request.

The CVE record scores it CVSS 3.1 8.1 (AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:H). Reaching it takes a handler that calls res.flushHeaders() before the request body ends and later ends the response with a non-empty chunk, and reading the leaked memory takes any ordinary route that echoes or stores a request body. Cleartext node:http is not affected.

The same release fixes HTTP/2 teardown issues, including CVE-2026-123863, where an unauthenticated client can abort the whole process on a default HTTP/2 server whose handler responds before the request body has ended.

Who is affected

  • Node.js 22.x before 22.23.5, 24.x before 24.22.3 and 26.x before 26.13.1, across one or both issues.
  • Express, Fastify and NestJS services that stream a response before the request body completes.
  • APIs that echo or store uploaded bodies: webhooks, file ingest endpoints, upload handlers.
  • End-of-life release lines, which the project states are always affected when a security release lands.

What to do now

Move to Node.js 22.23.5, 24.22.3 or 26.13.1, and rebuild the container image rather than swapping the runtime on a single host.

  • Find the runtime version in every container image, CI base image and serverless layer, not only on long-lived servers.
  • Rotate the TLS private keys of any Node HTTPS service that has been internet-facing, because a heap leak of key material cannot be ruled out from logs alone.
  • Watch response bodies for unexpected key material or fragments of other requests, and alert on process exits with the HTTP/2 assertion failure.
  • Put a dated migration plan on the end-of-life lines instead of patching them indefinitely.

What this means for South African businesses

Node.js is the default runtime for the small custom portals and client-facing apps that local agencies and MSPs build, and those apps are usually the least inventoried software on the estate. The realistic exposure for an SME is not a nation-state attack, it is a cheap API endpoint built three years ago with no owner and no dependency process. Rotating a TLS key sounds drastic until you consider what a leaked private key does to a client portal that relies on it for trust.

Source: Node.js 11 November 2026 security releases.

Also on the blog

Next step: If this is on your network or a client's, ask Matthews Enterprises to check exposure.

Apache HTTP Server CVE-2026-119618: CVSS 9.8 mod_http2 RCE, fixed in 2.4.71
Unauthenticated heap corruption in mod_http2 assign_headers(), only where HTTP/2 is enabled