緊急のセキュリティパッチについて
初めに、このような処理は我々にとって理想的な方法ではありません。もっと戦略的に更新し、時間を使って更新する方がより良い方法である事は明らかでしょう。今は USA の夕方で、 7/4 の週末です。
バグの詳細と潜在的なエクスプロイトが public なフォーラムでその脆弱性を突くための方法が公開されてしまいました。そのため、我々はNode.jsを使っている企業やユーザーに現実的に発生する DoS 攻撃を和らげて、それらから守るためのツールを与えたほうが、ただ座って起きないように祈るよりも良いだろうと判断し、緊急パッチを公開することにしました。 タイミングはありえないほどダメでした。特に USA では週末に重なっていて、7/4 (独立記念日)の中で大きな開発を行うのは人々にとっては悪夢に近いです。しかしこの情報を公開することを決定しました。
Kris Reeves と Trevor Norris は V8 のバグを UTF 文字列のデコードを検証している最中にピンポイントで発見しました。これは Node のバッファをUTF文字列に変換する時に、プロセスをクラッシュさせる可能性があります。セキュリティ上の懸念としてはアプリケーションの外から Node のプロセスに対して大量のデータを送った時に発生します。この仕組みはユーザーがこっそり特殊に作成した入力データを送りつけることでアプリケーションをクラッシュさせることができるという事を意味します。ほとんどのネットワークやファイル操作が影響を受けます。多くのユーザーランドで使われているバッファからUTF8文字列への変換も同様にこれに影響を受けます。 HTTP(S) ヘッダーのパースは脆弱性ではありません。なぜなら Node ではこのデータを UTF8 に変換しないからです。これは不幸中の幸いです。 HTTP(S) が脅威にさらされる危険性を少しだけ制限できたからです。しかし HTTP(S) がヘッダーのパース以外にもたくさんのことをやっているというのは明らかです。様々なTLSの終端やフォワードプロキシと一緒に使用した場合にもしかしたら脆弱性は軽減されるかもしれませんが、我々はそれを提示するのに十分な情報をまだ持っていません。
最初はもう少し早くパッチを提供する予定でしたが、不幸なことに、初期のパッチはまだ十分ではありませんでした。追加のテストと V8, io.js と Node.jsの検証プロセスを経る必要がありました。 少し遅れましたが、このページのトップにビルドを追加することができました。 Fedor Indutny が修正パッチを作成し、 Ben Noordhuis, Trevor Norris, Julien Gilli, Rod Vagg, Michael Dawson そして Jeremiah Sankpiel がこのパッチをビルドするのに多くの労力を尽くし、成功させました。