
كان Node.js عرضة لهجمات حجب الخدمة (DoS) عن بُعد عبر hash flooding، وذلك لأن بذرة Hashtable كانت ثابتة عبر إصدار معيّن من Node.js. نتج ذلك عن البناء مع تفعيل لقطات V8 (V8 snapshots) افتراضيًا، مما أدى إلى استبدال البذرة العشوائية الأولية عند بدء التشغيل. الشكر موصول لـ Jann Horn من Google Project Zero على الإبلاغ عن هذه الثغرة.
يمكنك القراءة عن الفئة العامة من ثغرات hash flooding هنا.
تم تعطيل اللقطات (snapshots) افتراضيًا في هذه التحديثات. من المرجح أن يشهد الكود الذي يعتمد بشكل كبير على vm.runInNewContext تراجعًا في الأداء إلى حين تنفيذ حل أفضل.
هذه ثغرة عالية الخطورة وتنطبق على جميع خطوط الإصدار النشطة (4.x، 6.x، 8.x) بالإضافة إلى خط 7.x.
يمكن أن يؤدي الكود البرمجي للتطبيق الذي يسمح بتعيين حقل auth في كائن الخيارات المستخدم مع http.get() إلى رقم، إلى إنشاء/استخدام مخزن غير مهيأ كسلسلة المصادقة. على سبيل المثال:
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 بحيث يتم طرح TypeError إذا كان حقل auth رقمًا عند استدعاء http.get().
هذا عيب منخفض الخطورة وينطبق فقط على خط الإصدار 4.x.