ZeroHour

CVE-2026-21710

mass

Uncaught TypeError DoS in Node.js HTTP Servers via __proto__ Request Header

CVSS 3.1
7.5 high
EPSS
25%p98
Published
()
Modified
AI analysis

CVE-2026-21710 is a denial-of-service flaw (CWE-843 type confusion, also tagged CWE-770) in the HTTP request handling of Node.js release lines 20.x, 22.x, 24.x, and 25.x, triggered when a client sends a request with a header literally named `__proto__` and the application reads `req.headersDistinct`. Because the header collides with JavaScript's prototype mechanism, `dest["__proto__"]` resolves to Object.prototype instead of undefined, causing the code to call `.push()` on a non-array and throw a synchronous TypeError. The exception is thrown inside a property getter and is not routed through the request's `error` event, so an attacker's single crafted request crashes request handling and yields availability impact (CVSS 7.5, availability-only) unless every `req.headersDistinct` access is wrapped in try/catch. All applications running HTTP servers on affected Node.js versions are exposed, including Node.js as shipped in Red Hat Enterprise Linux and RHEL Extended Update Support (EUS), although only code paths that actually read `req.headersDistinct` can be crashed by this trigger. No public proof-of-concept or confirmed exploitation exists yet, but the EPSS score of 25% within 30 days (98th percentile) indicates elevated near-term exploitation risk.

What to do: Upgrade Node.js to the latest patched release published for your current release line (20.x, 22.x, 24.x, or 25.x) once fixes ship, and apply the corresponding updated nodejs packages from Red Hat advisories for RHEL and RHEL EUS systems. As interim mitigation, wrap every `req.headersDistinct` access in try/catch or reject/strip requests containing a `__proto__` header at a reverse proxy. Prioritize remediation given the high EPSS (25% probability of exploitation within 30 days).

Affected
nodejs Node.jsAll HTTP servers on 20.x, 22.x, 24.x, and 25.x
redhat Red Hat Enterprise Linux (Node.js packages)
redhat Red Hat Enterprise Linux EUS (Node.js packages)
Estimated exposure
mass≈ millions of Node.js HTTP server installations worldwide; the crash-triggerable subset (apps that read req.headersDistinct) is a smaller fraction of that — Node.js is among the most widely deployed server-side runtimes, with public internet-wide scans showing millions of exposed Node.js HTTP servers across the 20.x–25.x release lines, though the flaw is only triggerable in applications whose…

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

Description

A flaw in Node.js HTTP request handling causes an uncaught `TypeError` when a request is received with a header named `__proto__` and the application accesses `req.headersDistinct`. When this occurs, `dest["__proto__"]` resolves to `Object.prototype` rather than `undefined`, causing `.push()` to be called on a non-array. This exception is thrown synchronously inside a property getter and cannot be intercepted by `error` event listeners, meaning it cannot be handled without wrapping every `req.headersDistinct` access in a `try/catch`. * This vulnerability affects all Node.js HTTP servers on **20.x, 22.x, 24.x, and v25.x**

Vendors
nodejsredhat
Products
node.js, enterprise linux, enterprise linux eus
Weakness
CWE-770, CWE-843
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

In the news