Skip to content
NewA calmer, faster ZeroHour

CVE-2026-123865

Memory and FD leak in Node.js HTTP/2 shutdown

CVSS 3.0
7.5 high
EPSS
—
Published
·
Modified
Analyze CVE-2026-123865 with Vani AIImpact, affected versions, exploitation status, mitigations and detection

An unauthenticated HTTP/2 client can permanently leak Node.js server memory and file descriptors. Sending GOAWAY(NO_ERROR) starts session shutdown; a protocol error such as an oversized frame header then makes nghttp2 tear the session down internally while Node.js never notices. The socket stays in CLOSE_WAIT and HTTP/2 state is held indefinitely. Node.js 26.x, 24.x, and 22.x HTTP/2 servers are affected. This is an incomplete fix of CVE-2026-48937.

What to do: Apply the Node.js security update for CVE-2026-123865. Fixed versions are not listed here.

ProductAffected
Node.js26.x, 24.x, and 22.x
Estimated exposure
No basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description · NVD

An unauthenticated HTTP/2 client can permanently leak Node.js server memory and file descriptors. If a peer triggers a protocol error, for example an oversized frame header, while the session is already shutting down, nghttp2 tears the session down internally but Node.js never notices, leaving a dangling session: the socket stays in CLOSE_WAIT and all of Node.js's HTTP/2 state for that connection is held in memory indefinitely, with no further cost to the attacker. The attacker can start the shutdown remotely by sending GOAWAY(NO_ERROR), so it is reliable against default HTTP/2 servers. It is an incomplete-fix case of CVE-2026-48937: that fix detected nghttp2 internal terminations by watching for GOAWAY sent while not shutting down, but missed terminations that arrive while the session is already shutting down. This vulnerability affects Node.js 26.x, 24.x, and 22.x.

Weakness
CWE-400
Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

In the news

1 story