Firefox 3 Security Features」より
June 20,2008 posted by Joren McReynolds,Security Researcher

 オープンソースWebブラウザの最新版「Firefox 3」が米国時間の6月17日に公開された。公開後24時間のダウンロード件数は過去最高を記録した(関連記事:■Mozillaが最新版Webブラウザ「Firefox 3」を公開,ダウンロード件数は順調に増加/■「Firefox 3のダウンロード数は,1週間で2000万件超」,MozillaのCEO)。ここでは,Firefox 3に搭載された興味深いセキュリティ機能と,その具体的な動作をいくつか紹介する。

エフェクティブ・トップ・レベル・ドメイン(eTLD)

 エフェクティブ・トップ・レベル・ドメイン(eTLD)は,広範なドメインを対象とするクッキー(Cookie)の動作を制限することで,クッキーの有効範囲を一つのドメインに限定する。クッキーはdomain属性を持っており,この属性を使ってユーザーの利用状況やアクセス権を定義する。例えばドメイン「xyz.example.com」が「domain=.example.com」属性を持つクッキーを発行した場合,このクッキーは「example.com」と,そのサブドメインで有効となる。ただし,RFCの規定では「domain=.com」のような広いドメイン属性のクッキーを発行してすべての「.com」ドメインを対象にしないよう,乱用を規制している。ここで問題が生じるのは「.co.uk」のようなドメインを持つ国々。「.co.uk」上のあらゆるWebサイトで使用可能なクッキーを設定できてしまうからだ。米マイクロソフトのWebブラウザ「Internet Explorer(IE)」は,セカンド・レベル・ドメインが3文字以上となるようクッキーを制限(つまり「.co.uk」は設定不可)し,既知の類似ドメインをブラックリスト化することで,この問題の解決を試みている。ただし「.com.fr」「.edu.ge」などの認知度が低いドメインは無防備なままだ。米Mozilla Foundationのバグ管理システム「bugzilla」では,攻撃の具体例を次のように解説している。

(1)「.com.fr」ドメインに安全なWebサイト(http://good.com.fr)があると仮定する
(2)「.com.fr」ドメインに不正なWebサイト(http://evil.com.fr)があると仮定する
(3)ユーザーが「http://evil.com.fr」を開くと,「domain=.com.fr」属性を持つクッキーが設定される
(4)「good.com.fr」を含むあらゆる「.com.fr」ドメインで(3)のクッキーが使用される

 攻撃者は上記のクッキーを用いて不正な認証を行う可能性がある。Firefox 3はこうしたTLDのリストを作成することで,どのクッキーを制限するか容易に判定できる。例えば「.com.br」が有効なTLDとしてリストに掲載されている場合,「domain=.com.br」を持つすべてのクッキーを制限する。

マルウエアとフィッシングからの保護

 Firefox 3は個人情報を不正取得したり,パソコンなどのシステムに被害を与えたりする可能性のあるWebサイトを開こうとすると,警告を表示する。以下に例を示そう。


[画像のクリックで拡大表示]

 Firefox 3は,悪意のあるWebページやフィッシング・サイトのリストを参照する際に,米グーグルのAPI「Safe Browsing API」を使う。ブラウザがこのAPIにPOST要求を出すと,APIはURLのハッシュ値を返す。これらのURLは,マルウエア/フィッシング/ホワイトリスト・ドメインのいずれかに分類されている。ユーザーがWebサイトを開こうとすると,Firefox 3は同URLのハッシュ値を計算し,上記リストと比較してアクセスの許可/拒否を判断する。APIから返されたハッシュには,リストの更新間隔も指定されており,Firefoxが次にいつ更新を要求したらよいか分かるようになっている。

 この保護機能は,アクセスするURLがSafe Browsing APIのブラックリストに掲載されている場合のみ有効となる。我々がテストしたところ,一部のフィッシング・サイトのURLは実際にブロックされたものの,複数のフィッシング・ページがこの網をすり抜けた。


[画像のクリックで拡大表示]

 Safe Browsing APIに関する詳細は,グーグルのWebサイトを参照してほしい。

グローバル・オブジェクト再宣言の阻止

 Firefox 3は,グローバル・オブジェクトの再宣言を阻止する機能を備えた唯一のブラウザである。これはFirefox 3だけがJavaScript v1.8に対応していて,JavaScript v1.8が「Array」のようなグローバル・オブジェクトの再宣言を阻止するからだ。例を挙げると,次のようなJavaScriptを実行しようとするとエラーが発生する。

function Array(){
alert("redeclared"); //error
}

 この阻止機能が実装されたのは,「データ漏えい」というセキュリティ上の問題に対処するためだ。攻撃者はJavaScript Object Notation(JSON)要求内のデータ,例えばArrayタイプのオブジェクトのデータにアクセスを試みる可能性がある。JSONの保護については,John Resig氏のブログを参照してほしい。

クロスサイトXMLHttpRequest(XHR)オブジェクトの制限

 以前の投稿記事(翻訳済み記事:IE 8のセキュリティ機能とそれによって生じる懸念)で,XMLHttpRequestオブジェクトを用いたクロスサイト・リクエストはSame Origin Policy(SOP)違反であり,セキュリティ上の問題を生じさせる恐れがあると書いた。ただし,クロスサイト・リクエストの機能は製品開発の面で多くの可能性も引き出している。この投稿記事を書いた時点では,FirefoxとIEの両方にクロスサイトXHRオブジェクト機能が搭載されていた。ただし,Firefox 3の最終版からは取り除かれた。現在はMozillaの開発者向けWebページ「Mozilla Dev Center」に記載されている通り,Firefoxの拡張機能でのみ利用可能で,標準のスクリプト環境では使用不可となっている。



Copyrights (C) 2008 Websense, Inc. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,ウェブセンスの許可を得て,米国のセキュリティ・ラボの研究員が執筆するブログWebsense Security Labs Blogの記事を抜粋して日本語化したものです。オリジナルの記事は,Firefox 3 Security Featuresでお読みいただけます。