{"id":"CVE-2026-123862","kind":"vulnerability","aliases":["CVE-2026-123862"],"related":[],"title":"Node.js: a disconnecting client crashes the process through zlib params()","description":"An uncatchable exception in the Node.js zlib streaming API lets a peer crash a process by disconnecting while data is being compressed. zlib.params() queues a flush and completes its work in that write's callback; if the stream is destroyed first, as pipeline() does when the peer goes away, Writable still invokes the callback with an error, but the callback ignores its arguments and asserts that the native handle still exists. The handle is gone, so an ERR_INTERNAL_ASSERTION is thrown from inside stream internals and bypasses the stream's error event, the params() callback, and the pipeline() callback, terminating the process. An application is affected only if it calls deflate.params() while streaming to a peer, which is uncommon. This vulnerability affects Node.js 26.x, 24.x, and 22.x.","summary":"Calling deflate.params() on a zlib stream while it is being piped to a peer can throw an internal assertion if the peer disconnects first. The thrown error bypasses normal error handling and terminates the Node.js process, which gives a remote peer a denial of service.","severity":"low","cvss":2.9,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"Node.js","fixed":[],"affected":"","ecosystem":"runtime"}],"ecosystems":["runtime"],"tags":["node.js","runtime","self-hosted","servers","zlib"],"not_affected_if":["no-params-calls","no-zlib-streaming","other-node-versions"],"how_to_check":"- Run `node --version` and check whether it is a 22.x, 24.x or 26.x release.\n- Search the code for `.params(` calls on zlib deflate streams that are piped to network connections.","fix":"- Node.js 22.x, 24.x and 26.x are affected; the sources do not name a fixed version.","status":"open","published_at":"2026-11-11T19:17:32+00:00","first_seen_at":"2026-11-11T19:28:45+00:00","triaged_at":"2026-11-11T19:30:49+00:00","updated_at":"2026-11-11T19:30:49+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-11-11T19:30:49Z","model":"claude-haiku-5-5","output":{"fix":"- Node.js 22.x, 24.x and 26.x are affected; the sources do not name a fixed version.\n- unknown","reach":"network","title":"Node.js: a disconnecting client crashes the process through zlib params()","impact":"low","summary":"Calling deflate.params() on a zlib stream while it is being piped to a peer can throw an internal assertion if the peer disconnects first. The thrown error bypasses normal error handling and terminates the Node.js process, which gives a remote peer a denial of service.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["node.js","zlib","self-hosted","servers"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"Remote peer crashes the Node.js process, causing denial of service.","analyst_note":"","how_to_check":"- Run `node --version` and check whether it is a 22.x, 24.x or 26.x release.\n- Search the code for `.params(` calls on zlib deflate streams that are piped to network connections.\n- unknown","plain_action":"","product_name":"Node.js","needs_analyst":false,"not_affected_if":["no-params-calls","no-zlib-streaming","other-node-versions"],"who_is_affected":"Only applications that call deflate.params() while streaming compressed data to a peer over a network connection are exposed. The flaw is in Node.js 22.x, 24.x and 26.x, so servers running those versions with such code should look at it. Applications that never call params() on a zlib stream can skip it.","user_interaction":"no","product_ecosystem":"runtime","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.001166,"input_tokens":4716,"output_tokens":1389,"severity_before":"low"},"analyst_status":null,"analyst_note":null,"search":"'-123862':13A,16A '-2026':12A,15A '22':199C '24':196C '26':194C 'affect':176C,192C 'api':78C 'applic':174C 'argument':132C 'assert':43B,134C,149C 'away':118C 'bypass':52B,157C 'call':25B,180C 'callback':104C,123C,129C,165C,169C 'client':4A 'complet':97C 'compress':91C 'crash':5A,82C 'cve':11A,14A 'data':88C 'deflate.params':26B,181C 'denial':67B 'destroy':109C 'disconnect':3A,47B,86C 'err':147C 'error':51B,54B,126C,161C 'event':162C 'except':72C 'exist':140C 'first':48B,110C 'flush':95C 'give':62B 'goe':117C 'gone':144C 'handl':55B,138C,142C 'host':22B 'ignor':130C 'insid':153C 'intern':42B,148C,155C 'invok':121C 'let':79C 'nativ':137C 'node.js':1A,17A,18B,59B,75C,193C 'normal':53B 'param':10A,164C 'peer':38B,46B,65B,81C,116C,186C 'pipe':35B 'pipelin':112C,168C 'process':7A,60B,84C,172C 'queue':93C 'remot':64B 'runtim':19B 'self':21B 'self-host':20B 'server':23B 'servic':69B 'still':120C,139C 'stream':30B,77C,107C,154C,159C,183C 'termin':57B,170C 'throw':40B 'thrown':50B,151C 'uncatch':71C 'uncommon':189C 'vulner':191C 'work':99C 'writabl':119C 'write':102C 'x':195C,197C,200C 'zlib':9A,24B,29B,76C 'zlib.params':92C","nicknames":[],"mitigations":[],"who_affected":"Only applications that call deflate.params() while streaming compressed data to a peer over a network connection are exposed. The flaw is in Node.js 22.x, 24.x and 26.x, so servers running those versions with such code should look at it. Applications that never call params() on a zlib stream can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"pkeys":["nodejs"],"ptokens":["nodejs"],"labels":["low","nodejs","runtime","selfhosted","servers","zlib"],"campaign_type":null,"search_a":"'-123862':13A,16A '-2026':12A,15A 'client':4A 'crash':5A 'cve':11A,14A 'disconnect':3A 'node.js':1A,17A 'param':10A 'process':7A 'zlib':9A","search_b":"'assert':43B 'bypass':52B 'call':25B 'deflate.params':26B 'denial':67B 'disconnect':47B 'error':51B,54B 'first':48B 'give':62B 'handl':55B 'host':22B 'intern':42B 'node.js':18B,59B 'normal':53B 'peer':38B,46B,65B 'pipe':35B 'process':60B 'remot':64B 'runtim':19B 'self':21B 'self-host':20B 'server':23B 'servic':69B 'stream':30B 'termin':57B 'throw':40B 'thrown':50B 'zlib':24B,29B","search_c":"'22':199C '24':196C '26':194C 'affect':176C,192C 'api':78C 'applic':174C 'argument':132C 'assert':134C,149C 'away':118C 'bypass':157C 'call':180C 'callback':104C,123C,129C,165C,169C 'complet':97C 'compress':91C 'crash':82C 'data':88C 'deflate.params':181C 'destroy':109C 'disconnect':86C 'err':147C 'error':126C,161C 'event':162C 'except':72C 'exist':140C 'first':110C 'flush':95C 'goe':117C 'gone':144C 'handl':138C,142C 'ignor':130C 'insid':153C 'intern':148C,155C 'invok':121C 'let':79C 'nativ':137C 'node.js':75C,193C 'param':164C 'peer':81C,116C,186C 'pipelin':112C,168C 'process':84C,172C 'queue':93C 'still':120C,139C 'stream':77C,107C,154C,159C,183C 'termin':170C 'thrown':151C 'uncatch':71C 'uncommon':189C 'vulner':191C 'work':99C 'writabl':119C 'write':102C 'x':195C,197C,200C 'zlib':76C 'zlib.params':92C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-11T19:17:32+00:00","kev":null,"cvss_vector":"CVSS:3.0/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L","cvss_by":"ce714d77-add3-4f53-aff5-83d477b104bb","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-123862","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123862","severity":null,"published_at":"2026-11-11T19:17:32+00:00","modified_at":"2026-11-11T19:17:32+00:00","first_seen_at":"2026-11-11T19:28:45+00:00","fetched_at":"2026-11-11T19:28:45+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}