Firefoxのパスワード・マネージャの脆弱性その後

昨年の11月に、日経BPのITpro編集勝村記者(現在は日経パソコン)から表題の件で取材を受けた。
Firefoxの脆弱性は危険,“ワンクリック”でパスワードを盗まれる恐れあり | 日経 xTECH(クロステック)

 「Firefoxユーザーがクロスサイト・スクリプティングXSS脆弱性のあるWebサイトでパスワードを記憶させている場合には,細工が施されたリンクをクリックするだけでそのパスワードを盗まれる恐れがある」――。京セラコミュニケーションシステムのセキュリティ事業部副事業部長である徳丸浩氏は11月24日,ITproの取材に対して,11月22日に公表されたFirefox脆弱性は,考えられているよりも深刻であるとして注意を呼びかけた。

Firefoxの最新バージョン(2.0.0.3)では、この問題を「緩和する」改善が見られたが、根本的には対策されていない。Mozilla Foundationでも根本解決には至っていないことを認識しているフシがあるので、この問題を公開し、広く注意を喚起したい。

まず、デンマークSecuniaから報告された元々の問題は、以下のようなものであった。
Firefoxにセキュリティ・ホール,記憶させたパスワードを盗まれる恐れ | 日経 xTECH(クロステック)

デンマークSecuniaは現地時間11月22日,WebブラウザFirefox」にセキュリティ・ホールが見つかったことを明らかにした。Firefoxに記憶させたユーザー名とパスワードを第三者に盗まれる危険性があるという。

 今回のセキュリティ・ホールは,Firefoxのパスワード・マネージャに存在する。パスワード・マネージャは,記憶したユーザー名/パスワードを適用するWebページ(フォーム)のURLを適切にチェックしない。ドメイン名が同じであれば,異なるWebページに対しても記憶したユーザー名/パスワードを適用しようとするという。

 このため細工が施されたWebページにアクセスすると,同じドメインの別ページで使用しているユーザー名/パスワードを知らないうちに盗まれる恐れがある。

この脆弱性(Firefox脆弱性)に加えて、サイトにXSS脆弱性がある場合に、ワンクリックでパスワードを盗まれる危険があった。具体的には、XSS脆弱性を利用して、元サイト上にログインフォームを作成し、JavaScriptでそのフォームをサブミットすればよい。これは比較的簡単なJavaScriptハックである。

 これに対して、Firefox 2.0.0.3では、フォームのアクションURLを調べて、飛び先が元ドメインになっている場合に限り、ID/パスワードを保管するような対策をとった。
 しかしながら、サイトにXSS脆弱性があるという前提では、この対策では十分ではない。JavaScriptを利用して、動的にアクションURLを書き換えることが出来るからである。これを実証するスクリプトを書いてみたので、紹介する。

Firefoxパスワード・マネージャ脆弱性実証メニュー

これを見れば分かることだが、Mozilla Foundationのとった対策は十分とはいえない。さしあたり、Firefoxの利用者側で注意するしかないだろう。具体的には、ツール(T)|オプション(O)から、セキュリティタブを選択し、「サイトのパスワードを記憶する」のチェックをオフにすることである。