CVE-2026-21714CVE-2026-21714 是 Node.js HTTP/2 服务器中的内存泄漏漏洞。当客户端在流 0 发送 WINDOW_UPDATE 帧导致流控窗口超过最大值 2^31-1 时,服务器虽发送 GOAWAY 帧,但未清理 Http2Session 对象。攻击者可利用此漏洞消耗服务器内存,导致拒绝服务。该漏洞影响 Node.js 20, 22, 24 及 25 版本。
该漏洞源于 Node.js HTTP/2 协议栈对流量控制窗口的处理逻辑缺陷。HTTP/2 协议利用滑动窗口机制管理数据流,其窗口大小上限为 2^31-1。在特定场景下,当攻击者恶意构造并在连接层(流 0)发送 WINDOW_UPDATE 帧,强制使累计窗口值超过此整数上限时,Node.js 服务端虽然会正确识别违规行为并发送 GOAWAY 帧以尝试终止连接,但内部的 Http2Session 对象未能被正确标记或释放。这导致垃圾回收机制无法回收该对象占用的内存资源。由于无需认证即可触发,攻击者可通过持续发送恶意包,在短时间内制造大量僵尸 Session 对象,从而耗尽服务器内存,引发拒绝服务(DoS)。