Firefox 4 では Websocket を無効化します

原文: http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/

最近の調査により Websocket に使われるプロトコルに脆弱性が発見されました。Adam Barth は WebSocket プロトコルに対して、攻撃者がブラウザとインターネット間にあるキャッシュを汚染して、重大な攻撃が可能である事を実証しました

これはブラウザに限らず、インターネットと WebSocket の重大な脅威です。プロトコルの脆弱性は Java や Flash のものにも見られます。これは Web においては、例えば Google Analytics のように広く使われている JavaScript ファイルのキャッシュを不正なファイルに置き換え可能であるということです。簡単に検出できない不正なファイルが多数出てこないようにするには、プロトコルを修正する必要があります。

Firefox 4 および Opera ではこのセキュリティ問題が修正されるまで WebSocket をサポートしません

Firefox 4 の Beta 8 以降から WebSocket のサポートを無効化すると決定したのは、プロトコルレベルのセキュリティ問題によるものです。Beta 7 では Chrome や Safari 同様に -76 バージョンのプロトコルをサポートしています。Beta 8 からはサポートされません。Opera の Anne van Kesteren も WebSocket のサポートを中止する旨アナウンスしました。他のブラウザ開発者もこれに追従するに違いないと確信しています。

開発者にとってこれは何を意味するのか?

今のところ、WebSocket を使ったシステムは Firefox 最終版では動作しません。安全かつ安定したバージョンのプロトコルができれば、Firefox のリリース版でサポートします。マイナーバージョンアップでのサポートもあり得ます。開発を助けるためコードは残されますが、開発者が Firefox の隠し設定を有効化した場合のみ動作します (Opera も同様です)。

オブジェクト検出を適切にしていれば何も問題はありません。WebSocket がサポートされていない環境では window.WebSocket プロパティは存在しません。

解決へ向けて

Mozilla は WebSocket の可能性を高く評価しており、IETP において新しい WebSocket プロトコルの策定に積極的に取り組んでいます。

今もなお、ブラウザがユーザのためにできる事の境界線を押し広げ続けています。それが HTML5 時代の流れです。

新しい技術の境界線を押し広げるときには問題はつきものです。いまの時代の素晴らしいところは、持ち上がった問題を迅速に、私たちのユーザが被害に遭う前に修正できるということです。全世界のシステムを更新し最新のブラウザを提供するのは殆ど不可能であり、だからこそベータ版や Nightly ビルドでテストや修正していくことが大切なのです。

訳者補足

こちらの記事などをご覧になって誤解されがちまたは分からないという声が多い点についていくつか簡単に箇条書きで補足しておきます。

  • Firefox や Opera の実装上の問題ではなく、プロトコルの問題です
  • Chrome や Safari などの実装においても当然同様の問題があります
  • WebSocket だけでなく Flash や Java の Socket 通信機能も同様の問題があります
  • Flash や Java についてこの問題があることは比較的古くから知られていたようです(がずっとそのまま)
  • 論文ではキャッシュ汚染対象として Google Analytics に言及されていますが影響範囲の広い一例です