
CVE-2017-11499 का दस्तावेज़ीकरण: Node.js में एक हैश फ्लडिंग रिमोट DoS कमजोरी जो स्थिर HashTable बीजों के कारण होती है, जिसमें हमले के वेक्टर का विश्लेषण और V8 स्नैपशॉट्स को अक्षम करके शमन शामिल है।
Node.js हैश फ्लडिंग रिमोट DoS हमलों के लिए संवेदनशील था क्योंकि हैशटेबल बीज Node.js के किसी दिए गए रिलीज़ संस्करण में स्थिर था। यह डिफ़ॉल्ट रूप से V8 स्नैपशॉट सक्षम के साथ बनाने का परिणाम था जिसके कारण प्रारंभिक रैंडमाइज़्ड बीज स्टार्टअप पर अधिलेखित हो जाता था। इस कमज़ोरी की रिपोर्ट करने के लिए Google Project Zero के Jann Horn का धन्यवाद।
आप हैश फ्लडिंग कमज़ोरियों की सामान्य श्रेणी के बारे में यहाँ पढ़ सकते हैं।
इन अपडेट्स में स्नैपशॉट को डिफ़ॉल्ट रूप से अक्षम कर दिया गया है। vm.runInNewContext पर अत्यधिक निर्भर कोड में तब तक प्रदर्शन में गिरावट देखने को मिल सकती है जब तक कोई बेहतर समाधान लागू नहीं किया जाता।
यह एक उच्च गंभीरता वाली कमज़ोरी है और यह सभी सक्रिय रिलीज़ लाइनों (4.x, 6.x, 8.x) के साथ-साथ 7.x लाइन पर भी लागू होती है।
एप्लिकेशन कोड जो http.get() के साथ उपयोग किए जाने वाले विकल्प ऑब्जेक्ट के auth फ़ील्ड को एक संख्या पर सेट करने की अनुमति देता है, इसके परिणामस्वरूप एक अप्रारंभीकृत बफ़र प्रमाणीकरण स्ट्रिंग के रूप में बनाया/उपयोग किया जा सकता है। उदाहरण के लिए:
const opts = require('url').parse('http://127.0.0.1:8180');
opts.auth = 1e3; // A number here triggers the bug
require('http').get(opts, res => res.pipe(process.stdout));
auth फ़ील्ड के पार्सिंग को 4.x रिलीज़ में अपडेट किया गया है ताकि http.get() को कॉल करने पर यदि auth फ़ील्ड एक संख्या है तो TypeError फेंका जाए।
यह एक निम्न गंभीरता वाला दोष है और केवल 4.x रिलीज़ लाइन पर लागू होता है।