
Node.js era suscettibile ad attacchi DoS remoti tramite hash flooding poiché il seed della tabella hash era costante in una data versione pubblicata di Node.js. Ciò era dovuto alla compilazione con gli snapshot V8 abilitati per impostazione predefinita, che causava la sovrascrittura del seed inizialmente randomizzato all'avvio. Ringraziamenti a Jann Horn di Google Project Zero per aver segnalato questa vulnerabilità.
Puoi leggere informazioni sulla categoria generale delle vulnerabilità di hash flooding qui.
Gli snapshot sono stati disabilitati per impostazione predefinita in questi aggiornamenti. Il codice che fa molto affidamento su vm.runInNewContext molto probabilmente vedrà una regressione delle prestazioni finché non verrà implementata una soluzione migliore.
Questa è una vulnerabilità ad alta gravità e si applica a tutte le linee di rilascio attive (4.x, 6.x, 8.x) e anche alla linea 7.x.
Il codice applicativo che consente al campo auth dell'oggetto opzioni usato con http.get() di essere impostato a un numero può portare alla creazione/utilizzo di un buffer non inizializzato come stringa di autenticazione. Ad esempio:
const opts = require('url').parse('http://127.0.0.1:8180');
opts.auth = 1e3; // A number here triggers the bug
require('http').get(opts, res => res.pipe(process.stdout));
L'analisi del campo auth è stata aggiornata nella release 4.x in modo che venga generato un TypeError se il campo auth è un numero quando viene chiamato http.get().
Questo è un difetto a bassa gravità e si applica solo alla linea di rilascio 4.x.