
CVE-2026-21710 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Node.js HTTP अनुरोध हैंडलिंग में एक दोष है जो `__proto__` हेडर के माध्यम से अनकॉट TypeError उत्पन्न करता है, जिससे सेवा से इनकार (denial of service) होता है।
| फ़ील्ड | मान |
|---|
| CVE ID | CVE-2026-21710 |
| प्रकाशित | 2026-03-30 |
| CVSS v3.1 | 7.5 HIGH (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) |
| CWE | CWE-770 — बिना सीमा या थ्रॉटलिंग के संसाधनों का आवंटन |
| प्रभावित | Node.js 20.x, 22.x, 24.x, 25.x |
| समाधान | मार्च 2026 सुरक्षा रिलीज़ |
Node.js HTTP अनुरोध प्रबंधन में एक दोष के कारण, जब किसी अनुरोध में __proto__ नामक हेडर प्राप्त होता है और एप्लिकेशन req.headersDistinct तक पहुँचता है, तो एक अनकैच्ड TypeError उत्पन्न होता है।
dest["__proto__"] undefined के बजाय Object.prototype को हल करता है, जिससे .push() को एक गैर-ऐरे पर कॉल किया जाता है। यह अपवाद प्रॉपर्टी गेटर के अंदर सिंक्रोनस रूप से फेंका जाता है और इसे error इवेंट लिसनर द्वारा इंटरसेप्ट नहीं किया जा सकता — इसे हर req.headersDistinct एक्सेस को try/catch में लपेटे बिना संभाला नहीं जा सकता।
headersDistinct गेटर हेडर मानों को एक सादे ऑब्जेक्ट में संचित करता है:
const dest = {};
// ...
dest[name] = dest[name] || [];
dest[name].push(value);
जब name === "__proto__":
dest["__proto__"] Object.prototype लौटाता है (सत्य, undefined नहीं)|| [] आरंभीकरण छोड़ दिया जाता है.push(value) को Object.prototype पर कॉल किया जाता है → TypeError: dest[name].push is not a function| फ़ाइल | विवरण |
|---|---|
server.js | असुरक्षित HTTP सर्वर (सीधे req.headersDistinct तक पहुँचता है) |
poc.js | प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट |
केवल अधिकृत सुरक्षा अनुसंधान / जिम्मेदार प्रकटीकरण के लिए।
node server.js
# Listening on http://127.0.0.1:3000
node poc.js
अपेक्षित आउटपुट:
__proto__ हेडर भेजा जाता है; सर्वर अनकैच्ड TypeError के साथ क्रैश हो जाता है।