マイクロソフト
セキュリティ レスポンス マネージャ
小野寺 匠

 今回は,ウイルス・スパイウエアなどの不正なソフトウエア(マルウエア)のOSへの侵入を防ぐ方法の一つとしてInternet Explorer 7(以下,Internet ExplorerはIE)の保護モード(Protection Mode)について取り上げる。

ログインしたユーザー権限で動作した従来のIE

 IE6以前のIEは,ログオンしているユーザー権限と同じレベルで動作する。IE7もWindows Vista以外の環境で稼働する場合は同じで,一般ユーザー(制限ユーザーやパワー・ユーザー)でログオンしていれば,IEも一般ユーザー権限で動作し,管理者ユーザー(Administrators)でログオンするとIEも管理者権限で動作する。それ自体は,悪意を持つ人間(攻撃者)がいなければ特に問題視する必要はない。ただ,悪意を持つ人間によって詐欺的な方法でActive Xコントロールをインストールされたり,ぜい弱性を悪用された場合,IEが動作する権限によってはコンピュータそのものやユーザーが大きな危険にさらされる。

 権限ごとに,IE経由でアクセスできる範囲をまとめたものが図1である。図から分かるように,一般ユーザー権限であれば,コンピュータを完全に乗っ取るのは困難であり,被害の範囲は利用者の保有するデータやプライバシーにとどまる。しかし管理者権限で稼働している場合,コンピュータ全体を完全に乗っ取られ,攻撃者にはあらゆる行為が可能になる。このため,マルウエアをそもそも侵入させない,また侵入された場合には限定されたエリアに封じ込める技術が求められていた。


図1 通常Internet Explorerがアクセスできる範囲
[画像のクリックで拡大表示]

権限を分離したVista+IE7

 従来の環境では,その方法として管理作業時以外には,コンピュータの所有者でも可能な限り制限された(最小限の権限の)ユーザーを使うことが推奨されている。しかし現実には,コンピュータやセキュリティに対する専門知識を持たないユーザーに最小権限での利用を周知徹底することは難しい。いちいち権限を切り替えるのではユーザーの利便性も悪くなる。なにより,最小の権限を持つユーザーを選んだとしても,一般ユーザーの権限の範囲でマルウエアが侵入する可能性は引き続き存在する。

 そこでWindows VistaのIE7には,ログオンしているユーザーに関係なく,IE7の動作権限をユーザーよりも更に低い権限で動作させる「保護モード」が搭載された。この機能はVistaのUser Account Control(UAC)機能の応用であるため,Windows XP以前の環境では利用できない。

 具体的には整合性レベル(IL:Integrity Level)と呼ばれる仕組みを使って権限管理を行う。Windows Vistaには5段階の整合性レベルがある。権限が低い方から,「Untrusted」「Low」「Medium」「High」「System」で,IEではこのうち,「High」「Medium」「Low」の3種類を使う(図2)。通常の状態ではIE7の整合性レベルはLowである。


図2 Windows Vistaに設けられている整合性レベル
[画像のクリックで拡大表示]

 整合性レベルは,Ken Bibaによって開発されたBIBAセキュリティ・モデルを基にClark-Wilsonなどを組み合わせて実装されており,低い整合性レベルのプロセスから高い整合性レベルのプロセスやフォルダ(オブジェクト)にはアクセスできない。キモは,アクセス権を管理する中核部分に組み込まれている強制整合性管理(MIC:Mandatory Integrity Control)。MICは既存のアクセス権に優先して適用される。

 ログイン・ユーザーが管理者権限を持っていたとしても,設定された整合性レベルを無視することはできない。このため,整合性レベルがLowに設定されているIE7では,通常のユーザーが利用するエリア(整合性レベル:Medium)にはアクセスできない。言い換えれば,IE7を経由したマルウエアの侵入を阻止できる。ただ,単純に整合性レベルをLowに設定しただけでは,ファイルをダウンロードしても,デスクトップやマイドキュメントなどの整合性レベルがMediumのエリアには保存すらできなくなる。そこで,一部の許可された操作を実行するときだけ,自動的に整合性レベルを昇格させるようになっている(図3)。


図3 ファイル保存などの際には整合性レベルを昇格させる
[画像のクリックで拡大表示]

 この整合性の昇格は,IExplorer.exeとは別プロセスのIE Admin Broker(IEinstal.exe)とIE User Broker(IEUser.exe)によって行われる。IE Admin Brokerは整合性レベルがHigh,IE User BrokerはMediumである。例えばActiveXのインストールなど高い権限を要するものは,UACによる権限使用確認が行われた後,IE Admin Brokerにより処理される。ダウンロード・ファイルの保存など,整合性レベルMediumが必要となるユーザー領域へのアクセスは,IE User Brokerによって処理される。そのほかのWebコンテンツのキャッシュなどは,整合性レベルがLowに設定されているフォルダTemporally Internet Files(TIF)に保存される。

 特別に許可されたAdd-OnやActiveX以外の情報についても,キャッシュ同様にTIFに保存される。ただ,Add-OnやActiveXはTIFに情報を保存するように作られておらず,通常はユーザーレジストリ(HKCU)に保存している。このため,IEには互換性レイヤーと呼ばれる機能が追加され,従来のHKCUへのアクセスをTIFへのアクセスにリダイレクトしている。Add-OnやActiveXから見ると,今までのHKCUに情報があるように見えているが,実際にはTIF上に情報の実態が存在する(図4)。これにより,Add-OnやActiveXの動作が整合性レベルLowの中で完結するため,安全性を確保できる。


図4 許可されたActiveXへは互換性レイヤーを介してアクセス
[画像のクリックで拡大表示]

 もう一つ,整合性レベルはIEと他のプロセスの不用意な情報のやり取り(プロセス間通信)も防止している。オブジェクトへのアクセスの管理はMICが担っているが,プロセス間通信についてはユーザー・インタフェース特権分離(UIPI)により制御されている。これにより,IEを経由して,ほかのプロセスから情報を読み取られることを防げる。ただ,ほかのプロセスと通信できない場合,ドラッグ・アンド・ドロップや切り取り/コピーなどの操作にも支障が出る。このためファイル・アクセスの場合と同様に,Brokerを用いて整合性レベルの昇格を行っている(図5)。ちなみに,プロセス間通信に関しては,整合性レベルHighに設定されているプロセスにアクセスする方法は提供していない。


図5 プロセス間通信は「UIPI」が制御する
[画像のクリックで拡大表示]

 Brokerを通じて整合性レベルを超えた操作は可能ではある。ただ,整合性レベルがLowに設定されていないアプリケーションにドラッグ・アンド・ドロップなどの操作を行う場合は,ユーザーの承認が必要になる(図6)。


図6 整合性レベルが高いアプリケーションにデータをドラッグ・アンド・ドロップする際には警告が出る
[画像のクリックで拡大表示]

 また,ツールバーなどのAdd-On機能がIEに追加された場合も,保護モードによってIEの起動時に警告ダイアログが表示される。入れたつもりのないAdd-Onがいつの間にか導入された場合,ユーザーが気付きやすい(図7)。


図7 Add-Onが加わると起動時に警告ダイアログを表示する
[画像のクリックで拡大表示]

 保護モードの機能の多くは,IEがぜい弱性や導入したAdd-Onによって不正利用されることを制限するものである。それでも,ユーザーが承認し受け入れたものについては保護し切ることはできない。何を保護し,何を保護しないのかを正しく認識して利用することが重要である。インターネットからのActiveX,Add-Onや実行可能ファイルは,常にマルウエアである可能性があることを認識し,本当に信頼できる提供元からのみ入手するように努めたい。デジタル署名が施されておらずファイルの提供元(発行元)が確認できないファイルは利用を避けるべき。利用する場合には,そのリスクを十分に覚悟する必要がある。