CVE-2026-123865: Node.js HTTP/2 memory and file-descriptor leak via protocol error during shutdown

CVE-2026-123865 · Severity: high · CVSS 7.5 · Published 2026-11-11

Node.js HTTP/2 servers fail to clean up connections when a protocol error occurs during session shutdown, allowing unauthenticated remote attackers to permanently leak server memory and file descriptors. An attacker can reliably trigger this by sending a GOAWAY frame followed by a protocol error, causing the connection to remain open indefinitely with no cost per connection, leading to resource exhaustion and potential denial of service.

Technologies: OpenJS Foundation Node.js. Vendors: OpenJS Foundation.

Quick answers

Is CVE-2026-123865 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-123865 being exploited in the wild.
How severe is CVE-2026-123865?
High severity, with a CVSS score of 7.5, published 11 November 2026.
Which products and versions are affected?
OpenJS Foundation Node.js 22.x, 24.x, 26.x.
Is there a fix for CVE-2026-123865?
Yes: fixed in <UNKNOWN>. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-123865 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-123865?
Check whether you run OpenJS Foundation Node.js at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: <UNKNOWN>

Technical details

An incomplete fix for CVE-2026-48937 missed the case where nghttp2 terminates a session internally while Node.js is already shutting down. When a protocol error (e.g. oversized frame header) occurs during shutdown, nghttp2 tears down the session but Node.js never detects it because the previous fix only watched for GOAWAY sent during normal operation. The socket remains in CLOSE_WAIT and all HTTP/2 state is held indefinitely, leaking memory and file descriptors with no further attacker cost. The attack is reliable against default HTTP/2 servers since it can be triggered remotely via GOAWAY(NO_ERROR) followed by a protocol violation.

Affected products

  • OpenJS Foundation Node.js 22.x, 24.x, 26.x

Timeline

  • 2026-11-11: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.