Mozilla Foundation セキュリティアドバイザリ 2007-27
- タイトル
- エスケープされていない URI が外部プログラムに渡される
- 重要度
- 最高
- 公開日
- 2007/07/30
- 報告者
- Jesper Johansson
- 影響を受ける製品
- Firefox
- Thunderbird
- SeaMonkey
- 修正済みのバージョン
- Firefox 2.0.0.6
- Thunderbird 2.0.0.6
- Thunderbird 1.5.0.13
- SeaMonkey 1.1.4
概要
Mozilla 製品が、外部プログラムで処理を行うために渡す URI に含まれる空白やダブルクオートをパーセントエンコードしておらず、受け取った側のプログラムがひとつの URI を複数の引数であるかのように誤って解釈してしまう可能性のあることが、Jesper Johansson 氏によって指摘されました。リスクは、受け手となる特定のプログラムによってサポートされている引数によりますが、少なくとも Firefox/Thunderbird 2.0.0.4 およびそれ以前のバージョンは、任意のコード実行に利用されるおそれがありました (MFSA 2007-23 参照)。大半のプログラムは危険な引数をサポートしていませんが、何らかの予期せぬ動作につながる可能性は考えられます。
外部ハンドラに渡される URI に関する同様の問題が、Billy Rios、Nate McFeters の各氏によって報告されました。IE7 がインストールされた Windows XP 上で Firefox を使用している場合、一部の一般的なプロトコル (mailto: など) の URI に %00 という文字が含まれていると、そのスキーマに対して登録されたプロトコルハンドラが起動せず、代わりに URI の末尾にあるファイル拡張子に基づいたファイル処理プログラムが起動してしまいます。これを Jesper Johansson 氏によって報告された問題と組み合わせると、既知の場所にインストールされたあらゆるプログラムを実行したり、特定の引数が渡るようにすることでシステムの脆弱性を攻撃することも可能となります。また、Secunia による詳しい調査の結果、正しい 2 桁の 16 進数が後に続かない % 文字も、影響を受けるプロトコルについて問題を引き起こすことが分かりました。Firefox/Thunderbird 2.0.0.6 にはこの応用型の元の実証を防ぐ修正が含まれていますが、登録されているプロトコルハンドラの代わりに拡張子を元にしたファイルタイプハンドラが起動してしまう問題は残っています。ただし、単一の予期せぬ URI を引数にして一般的なハンドラを攻撃する方法はまだ見つかっていないようです。この処理は Windows シェル API のプロパティであるため、この応用型は、こうした URI を Windows シェルに渡している、インターネットへの接続機能を持った他のアプリケーションにも影響するものと思われます。
回避策
Firefox は、初期設定では外部プロトコルハンドラを起動する前にダイアログを表示します。信頼できないサイト上でそうしたダイアログが表示された場合、特にリクエストされた URL に空白やダブルクオート (") 文字が含まれていた場合は、必ずキャンセルしてください。ただし Firefox では、メール関連のプロトコルは例外で、初期設定ではダイアログが表示されません。Thunderbird 2.0.0.5 またはそれ以降のバージョンが規定のメールクライアントに設定されている場合は影響を受けませんが、他のクライアントや Thunderbird の古いバージョンが規定のハンドラになっている場合には、メール関連 URI についてもダイアログを表示させることができます (同様に、Thunderbird では http: や ftp: といったブラウザ関連プロトコルについてはダイアログが表示されませんが、規定のブラウザが起動します)。以下の手順で、Firefox でメール関連のリンクをクリックした際、外部プログラムが起動する前にダイアログを表示できます。
- ロケーションバーに about:config と入力します。
- 「フィルタ」に warn-external と入力します。
- mailto、news、nntp、snews という文字が含まれた各行をダブルクリックし、設定値を true に変更します。
参考資料
Jesper 氏のブログ
https://bugzilla.mozilla.org/show_bug.cgi?id=389106
CVE-2007-3845
Secunia のアドバイザリ: SA26201
US-CERT のアドバイザリノート: VU#783400 および VU##403150
https://bugzilla.mozilla.org/show_bug.cgi?id=389580