
Node.js était vulnérable aux attaques DoS à distance par inondation de hachage, car la graine de la table de hachage était constante pour une version donnée de Node.js. Cela résultait de la compilation avec les snapshots V8 activés par défaut, ce qui entraînait le remplacement de la graine initialement aléatoire au démarrage. Merci à Jann Horn de Google Project Zero pour avoir signalé cette vulnérabilité.
Vous pouvez en savoir plus sur la catégorie générale des vulnérabilités par inondation de hachage ici.
Les snapshots ont été désactivés par défaut dans ces mises à jour. Le code qui repose fortement sur vm.runInNewContext verra très probablement une régression de performance jusqu'à ce qu'une meilleure solution soit implémentée.
Il s'agit d'une vulnérabilité de gravité élevée qui s'applique à toutes les lignes de version actives (4.x, 6.x, 8.x) ainsi qu'à la ligne 7.x.
Le code applicatif qui permet au champ auth de l'objet d'options utilisé avec http.get() d'être défini sur un nombre peut entraîner la création/l'utilisation d'un tampon non initialisé comme chaîne d'authentification. Par exemple :
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'analyse du champ auth a été mise à jour dans la version 4.x afin qu'une TypeError soit levée si le champ auth est un nombre lorsque http.get() est appelé.
Il s'agit d'un défaut de gravité faible qui s'applique uniquement à la ligne de version 4.x.