[CLSA-2026:1788873015] alt-nodejs14-nodejs: Fix of 2 CVEs
Type:
security
Severity:
Important
Release date:
2026-09-08 13:10:27 UTC
Description:
- CVE-2026-56846: http2: retain header memory in session accounting -- HandleHeadersFrame() un-charged the decoded header block from maxSessionMemory as soon as it handed it to JS, even though the JS objects can keep the block alive for the whole lifetime of the stream, so a peer that opens many streams with large header blocks and never lets them complete keeps unbounded header memory alive while the credit-based limit reads as near zero and never rejects a new stream. The amount is now moved into a new per-stream counter, Http2Stream::retained_headers_length_, and RemoveStream() drains both counters when the stream is erased (backport of nodejs/node@f14d78b9, the v22.x release-line commit shipped in v22.23.2, carrying the upstream regression test with two deviations. The header block is built as an object with a multi-valued cookie field because 14.21.3's Http2Session#request() rejects the flat array upstream passes; that one is required, or the test throws ERR_INVALID_ARG_TYPE before it ever reaches the fix. The server also raises maxHeaderListPairs to 4096, which is hardening: it puts the pair-count branch of AddHeader() structurally out of reach, leaving the session-memory branch as the only thing the test can be measuring. The wire shape still matches upstream's -- 120 cookie fields plus four pseudo-headers, 124 entries. The three doc/api/http2.md hunks are deliberately omitted, so the -docs sub-package keeps describing maxSessionMemory without the "header blocks retained by open streams" clause) - CVE-2026-56848: http2: defer rst stream while in scope -- SubmitRstStream() force-purged pending session data via SendPendingData() for every error code except NGHTTP2_CANCEL, so a RST_STREAM submitted for a refused stream from inside an nghttp2 receive callback re-entered nghttp2_session_mem_send() while nghttp2_session_mem_recv() was still on the stack, and the send path could free streams the active receive was still using (heap use-after-free, reachable by sending GOAWAY with last_stream_id 0 immediately followed by HEADERS for further streams). NGHTTP2_REFUSED_STREAM now takes the same deferred path, flushing the RST_STREAM and leaving the pending data for the enclosing Http2Scope (backport of nodejs/node@daa6d25e, the v22.x release-line commit shipped in v22.23.2, carrying the upstream regression test verbatim; the cosmetic re-indent of the pre-existing AddPendingRstStream block is not carried)
Updated packages:
  • alt-nodejs14-nodejs-14.21.3-34.el6.x86_64.rpm
    sha:86ca795dc183665f58e39511530545bc07b44ca9b8e5a3af9408ea6d873776f4
  • alt-nodejs14-nodejs-devel-14.21.3-34.el6.x86_64.rpm
    sha:2f36857eb1a9ceba9dae00f390f0b23e10a226bbbe3f56f1ec8f1be31a61a256
  • alt-nodejs14-nodejs-docs-14.21.3-34.el6.noarch.rpm
    sha:6b5f06cc7492d56cdfaad67e5f0a7658b5b1e970777b7a9dc0faad4b841c7484
  • alt-nodejs14-npm-6.14.18-14.21.3.34.el6.x86_64.rpm
    sha:b9c60123327bac8ed15bf5a554cf67f82ea79d7bb0d17b0f2e291af2ad7f541e
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.