Node.jsは、ハッシュテーブルのシードが特定のリリースバージョンで一定であったため、ハッシュフラッディングによるリモートDoS攻撃を受けやすい状態でした。これは、V8スナップショットがデフォルトで有効な状態でビルドされた結果、起動時に初期のランダム化されたシードが上書きされてしまったためです。この脆弱性を報告してくれたGoogle Project ZeroのJann Horn氏に感謝します。
ハッシュフラッディング脆弱性の一般的なカテゴリについてはこちらで読むことができます。
これらの更新ではスナップショットはデフォルトで無効化されています。vm.runInNewContextに大きく依存するコードは、より良い解決策が実装されるまでパフォーマンスの低下が見られる可能性が高いです。
これは深刻度の高い脆弱性であり、すべてのアクティブなリリースライン(4.x、6.x、8.x)および7.xラインに適用されます。
http.get()で使用されるオプションオブジェクトのauthフィールドに数値が設定されることを許可するアプリケーションコードは、初期化されていないバッファが作成・使用され、認証文字列として扱われる原因となります。例えば:
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));
authフィールドの解析は4.xリリースで更新され、http.get()が呼び出されたときにauthフィールドが数値である場合、TypeErrorがスローされるようになりました。
これは深刻度の低い欠陥であり、4.xリリースラインにのみ適用されます。