WebSocketにセキュリティの懸念。Firefox 4とOperaで機能を無効化へ
もともとHTML5の仕様の一部として検討され、現在は独立した仕様となったWebSocket。Webブラウザで柔軟な通信が行える機能として注目されていましたが、Firefox 4では、当面WebSocketのサポートを見送ることが発表されました。Operaでも同様に、デフォルトでWebSocketをオフにすることが発表されました。
原因はWebSocketプロトコルにセキュリティ上の問題が発生したため、とのこと。
WebSocketにはどのようなセキュリティ上の問題が発見され、影響はどういったところに及ぶのでしょうか? Mozilla Japanの浅井智也氏に解説をお願いしたところ、次のような文章を送っていただきました。
以下からは浅井氏による解説です。
なぜFirefox 4はWebSocketをサポートしないのか?
現在仕様策定途中のWebSocketプロトコルには重大なセキュリティ上の問題があることが実証されました。Mozillaはセキュリティやプライバシーを常に最優先でブラウザを開発しているので、この問題が解決された安全かつ安定したプロトコル仕様が策定されるまで FirefoxはWebSocketをデフォルトで無効化することになりました。
詳しくはMozilla Hacksブログの次の記事を参照してください。
以下、誤解されやすい点をいくつか明確にしておきたいと思います。
今回発表された論文では、一部のネットワーク環境下において、Firewall背後のサーバにブラウザを介して不正アクセスされてしまうことと、任意ドメインのファイルがキャッシュ汚染されてしまうことの2種類の攻撃が可能である事が指摘されています。
特に後者については影響範囲の広い例として Google Analytics のスクリプトが紹介されていますが、特定サイトのファイルだけが対象となる問題ではありません。
しかもこの問題はWebSocketプロトコルに限ったものではなく、FlashやJavaのSocket通信も同様の攻撃に利用されることに注意してください。FlashやJavaの埋め込み広告を用いた実験では、2.2%~3.6%のユーザ環境で不正アクセスが、0.12%~0.15%の環境でキャッシュ汚染が可能であることが確認されました。
特に後者についてはプロキシのキャッシュが汚染される問題であり、ユーザ側でブラウザの機能やプラグインを無効化していても、同じネットワークの他のユーザを介してキャッシュ汚染されてしまうと回避できません。
本件はルータやプロキシの実装あるいは運用側の問題として捉える事もできますが、プロトコル側で潜在的問題は回避すべきですし、現実のインターネットをすべて置き換えることは不可能であり、既存のインターネットとの互換性を維持したまま漸進的な進化が必要であることこそHTML5が示してきた事ではないでしょうか。
ここで問題の詳細は解説しませんが、公開済みの情報から今回の実験を再現あるいは実際に悪用することは比較的容易と考えられます。ほかのブラウザやプラグイン開発者にも、ユーザの安全を最優先に考えた速やかな対応に期待したいところです。
解決に向けた動きも
浅井氏の解説はここまでです。さて、これでWebSocketはおしまいなのかというと、そうではなく、現在解決に向けた動きがあると前述のMozillaのブログでも書かれています。いつ解決するかはいまのところ不明ですが、ふたたびWebSocketの機能が有効になるのを待つことにしましょう。