
Dokumentation von CVE-2017-11499: eine Hash-Flooding-Remote-DoS-Schwachstelle in Node.js, verursacht durch konstante HashTable-Seeds, mit Analyse des Angriffsvektors und Abhilfe durch Deaktivierung von V8-Snapshots.
Node.js war anfällig für Hash-Flooding Remote-DoS-Angriffe, da der HashTable-Seed über eine bestimmte veröffentlichte Version von Node.js hinweg konstant war. Dies war eine Folge des standardmäßig aktivierten Bauens mit V8-Snapshots, was dazu führte, dass der anfänglich randomisierte Seed beim Start überschrieben wurde. Wir danken Jann Horn von Google Project Zero für die Meldung dieser Sicherheitslücke.
Sie können mehr über die allgemeine Kategorie von Hash-Flooding-Sicherheitslücken hier lesen.
Snapshots wurden in diesen Updates standardmäßig deaktiviert. Code, der stark auf vm.runInNewContext angewiesen ist, wird höchstwahrscheinlich eine Leistungseinbuße verzeichnen, bis eine bessere Lösung implementiert wird.
Dies ist eine Schwachstelle mit hohem Schweregrad und betrifft alle aktiven Release-Linien (4.x, 6.x, 8.x) sowie die 7.x-Linie.
Anwendungscode, der es ermöglicht, dass das auth-Feld des Optionsobjekts, das mit http.get() verwendet wird, auf eine Zahl gesetzt wird, kann dazu führen, dass ein nicht initialisierter Puffer als Authentifizierungsstring erstellt/verwendet wird. Zum Beispiel:
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));
Die Analyse des auth-Feldes wurde im 4.x Release aktualisiert, sodass ein TypeError ausgelöst wird, wenn das auth-Feld eine Zahl ist, wenn http.get() aufgerufen wird.
Dies ist ein Defekt mit niedrigem Schweregrad und betrifft nur die 4.x-Release-Linie.