Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-21710 — Proof-of-concept exploit for CVE-2026-21710, a Node.js HTTP request handling flaw causing uncaught TypeError via __proto__ header, leading to denial of service. | Kitploit
Tools/GitHubGitHub/open-flaw/cve-2026-21710
Vulnerability AnalysisExploitationWeb Application Exploitation
GitHubopen-flaw/cve-2026-21710

CVE-2026-21710

Proof-of-concept exploit for CVE-2026-21710, a Node.js HTTP request handling flaw causing uncaught TypeError via __proto__ header, leading to denial of service.

View Repository
25 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-21710 — Node.js req.headersDistinct DoS

Summary

FieldValue
CVE IDCVE-2026-21710
Published2026-03-30
CVSS v3.17.5 HIGH (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
CWECWE-770 — Allocation of Resources Without Limits or Throttling
AffectedNode.js 20.x, 22.x, 24.x, 25.x
Fixed inMarch 2026 Security Releases

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.

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 — it cannot be handled without wrapping every req.headersDistinct access in a try/catch.

Root Cause

The headersDistinct getter accumulates header values into a plain object:

root@kitploit:~
const dest = {};
// ...
dest[name] = dest[name] || [];
dest[name].push(value);

When name === "__proto__":

  • dest["__proto__"] returns Object.prototype (truthy, not undefined)
  • The || [] initialisation is skipped
  • .push(value) is called on Object.prototype → TypeError: dest[name].push is not a function
  • The synchronous throw escapes the event-loop error boundary and crashes the process

Files

FileDescription
server.jsVulnerable HTTP server (accesses req.headersDistinct directly)
poc.jsProof-of-concept exploit

Usage

For authorised security research / responsible disclosure only.

Start the vulnerable server

root@kitploit:~
node server.js
# Listening on http://127.0.0.1:3000

Run the POC

root@kitploit:~
node poc.js

Expected output:

  1. Step 1 — normal request succeeds (HTTP 200).
  2. Step 2 — __proto__ header is sent; server crashes with an uncaught TypeError.
  3. Step 3 — follow-up request gets a connection error, confirming the crash.

References

  • NVD — CVE-2026-21710
  • Node.js March 2026 Security Releases
Download Tool