
CVE-2026-21717 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, एक Node.js V8 स्ट्रिंग हैशिंग कोलिज़न भेद्यता जो क्राफ्टेड JSON पेलोड के माध्यम से सेवा से इनकार (denial of service) का कारण बनती है।
Node.js V8 स्ट्रिंग हैशिंग पूर्वानुमानित टकराव भेद्यता जो सेवा से इनकार का कारण बनती है
V8 के स्ट्रिंग हैशिंग तंत्र में एक गंभीर भेद्यता हमलावरों को Node.js अनुप्रयोगों में गंभीर प्रदर्शन गिरावट का कारण बनने की अनुमति देती है। पूर्णांक-जैसी स्ट्रिंग्स को उनके संख्यात्मक मान पर हैश किया जाता है, जिससे हैश टकराव तुच्छ रूप से पूर्वानुमानित हो जाते हैं। V8 के आंतरिक स्ट्रिंग तालिका में कई टकराव पैदा करने वाले दुर्भावनापूर्ण इनपुट तैयार करके, एक हमलावर प्रदर्शन को काफी हद तक खराब कर सकता है या सेवा से इनकार का कारण बन सकता है।
यह भेद्यता V8 की स्ट्रिंग आंतरिकीकरण प्रक्रिया से उत्पन्न होती है। जब JSON पार्सिंग होती है, तो छोटी स्ट्रिंग्स स्वचालित रूप से एक हैश तालिका में आंतरिकीकृत हो जाती हैं। पूर्णांक-जैसी स्ट्रिंग्स पूर्वानुमानित रूप से टकराती हैं क्योंकि वे अपने संख्यात्मक मानों पर हैश होती हैं, जिससे हमलावर द्विघात प्रोबिंग श्रृंखलाओं को मजबूर कर सकते हैं जो प्रदर्शन को गंभीर रूप से खराब करती हैं।
सबसे सामान्य ट्रिगर कोई भी एंडपॉइंट है जो हमलावर-नियंत्रित इनपुट पर JSON.parse() को कॉल करता है, क्योंकि JSON पार्सिंग स्वचालित रूप से छोटी स्ट्रिंग्स को प्रभावित हैश तालिका में आंतरिकीकृत करती है।
इस रिपॉजिटरी में भेद्यता प्रदर्शित करने वाला एक प्रमाण-अवधारणा शामिल है:
# CVE-2026-21717 से प्रभावित Node.js संस्करण का उपयोग करें
nvm use
npm install
node poc.js
PoC निम्नलिखित के साथ एक पेलोड बनाता है:
JSON.parse() ऑपरेशन के लिए ~44+ सेकंड का CPU समयJSON.parse() को कॉल करता है// पेलोड आकार सीमित करें
app.use(express.json({ limit: '100kb' }));
// पार्सिंग के लिए टाइमआउट जोड़ें
const parseWithTimeout = (str, timeout = 1000) => {
return Promise.race([
Promise.resolve(JSON.parse(str)),
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Parse timeout')), timeout)
)
]);
};
यह रिपॉजिटरी केवल शैक्षिक और शोध उद्देश्यों के लिए है। इस कोड का उपयोग दुर्भावनापूर्ण उद्देश्यों के लिए या उन प्रणालियों के विरुद्ध न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है।