
Proof-of-concept-Exploit für CVE-2026-21710, einen Node.js-Fehler in der HTTP-Anfrageverarbeitung, der einen unbehandelten TypeError über den __proto__-Header verursacht und zu einem Denial of Service führt.
| Feld | Wert |
|---|
| CVE-ID | CVE-2026-21710 |
| Veröffentlicht | 2026-03-30 |
| CVSS v3.1 | 7.5 HOCH (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) |
| CWE | CWE-770 — Zuweisung von Ressourcen ohne Begrenzung oder Drosselung |
| Betroffen | Node.js 20.x, 22.x, 24.x, 25.x |
| Behoben in | Sicherheits-Releases März 2026 |
Ein Fehler in der HTTP-Anfrageverarbeitung von Node.js verursacht einen unbehandelten TypeError, wenn eine Anfrage mit einem Header namens __proto__ empfangen wird und die Anwendung auf req.headersDistinct zugreift.
dest["__proto__"] löst sich zu Object.prototype auf statt zu undefined, wodurch .push() auf einem Nicht-Array aufgerufen wird. Diese Ausnahme wird synchron innerhalb eines Property-Getters ausgelöst und kann nicht durch error-Event-Listener abgefangen werden — sie kann nur behandelt werden, indem jeder Zugriff auf req.headersDistinct in einen try/catch-Block eingebettet wird.
Der headersDistinct-Getter sammelt Header-Werte in einem einfachen Objekt:
const dest = {};
// ...
dest[name] = dest[name] || [];
dest[name].push(value);
Wenn name === "__proto__":
dest["__proto__"] gibt Object.prototype zurück (wahr, nicht undefined)|| [] wird übersprungen.push(value) wird auf Object.prototype aufgerufen → TypeError: dest[name].push is not a function| Datei | Beschreibung |
|---|---|
server.js | Verwundbarer HTTP-Server (greift direkt auf req.headersDistinct zu) |
poc.js | Proof-of-Concept-Exploit |
Nur für autorisierte Sicherheitsforschung / verantwortungsvolle Offenlegung.
node server.js
# Lauscht auf http://127.0.0.1:3000
node poc.js
Erwartete Ausgabe:
__proto__-Header wird gesendet; der Server stürzt mit einem unbehandelten TypeError ab.