ニュース

「Node.js」の2019年8月セキュリティ更新が公開 ~HTTP/2実装のDoS脆弱性を修正

「Node.js 12」、「Node.js 10」、「Node.js 8」のすべてのバージョンに影響

公式サイトのリリース

 サーバーサイドJavaScript環境「Node.js」の最新版が、8月16日に公開された。リリースが遅れていた「Node.js 8.x」のLinux ARMv6ビルドを含め、サポートされているすべての「Node.js」バージョンでアップデートが利用可能となっている。

 今回修正が発表された脆弱性は、CVE番号ベースで8件。いずれもCPUやメモリが大量に消費されるサービス拒否(DoS)につながる可能性のある欠陥で、HTTP/2の実装で広範に確認されているものだ。「Node.js 12(Current)」、「Node.js 10(LTS "Dubnium")」、「Node.js 8(LTS "Carbon")」のすべてのバージョンに影響する。

  • Data Dribble(CVE-2019-9511):複数のストリームを通じて大きなサイズのデータをリクエストし、ウィンドウサイズやストリームの優先順位を操作して、データが1バイト単位で処理されるように仕向ける
  • Ping Flood(CVE-2019-9512):HTTP/2のpingフレームを連続的に送信し、応答フレームの送信を強いる
  • Resource Loop(CVE-2019-9513):複数のリクエストストリームを作成し、連続的にストリームの優先順位の変更を行うことでDoS状態を引き起こす
  • Reset Flood(CVE-2019-9514):いくつものストリームをオープンし、各ストリーム毎に無効なリクエストを送信して、RST_STREAMフレームを返すように仕向ける
  • Settings Flood(CVE-2019-9515):大量のSETTINGSフレームを送信し、RFCに規定された応答を強いる
  • 0-Length Headers Leak(CVE-2019-9516):長さ0のヘッダー名およびヘッダー値を含むHEADERSフレームを大量に送信し、DoS状態を引き起こす
  • Internal Data Buffering(CVE-2019-9517):HTTP/2ストリームをオープンしてそのウインドウサイズを無制限に設定する一方で、TCPレベルではウインドウサイズを制限し、応答データを返せない状態にする
  • Empty Frame Flooding(CVE-2019-9518):中身が空でEND_STREAMフラグをつけていない状態のフレームを大量に送信することでDoS状態を引き起こす