図1:Windows Vistaではシステム権限で動作するサービスの数が減少する
図1:Windows Vistaではシステム権限で動作するサービスの数が減少する
[画像のクリックで拡大表示]

 Windows Vistaには,システムを保護する各種機能が搭載される。米Microsoftが6月11日~16日に米国ボストンで開催した「TechEd 2006」でのセッション「Windows Vista System Integrity Technologies」の内容をもとに,その概要を紹介しよう。

 Integrityとは,「完全性」や「整合性」を意味する単語である。Windows Vistaには,クラッカなどによってシステム・ファイルが改ざんされることを防ぐために,(1)稼働中にシステム・ファイルが書き換えられることを防ぐ「Code Integrity」,(2)停止時にシステム・ファイルが書き換えられることを防ぐ「BitLocker」,(3)システム・サービスが乗っ取られることを防ぐ「Windows Service Hardening(Hardeningは硬化剤といった意味)」,(4)ユーザーがうっかり起動してしまった悪意のあるプログラムからシステムを保護する「Mandatory Integrity Control」,(5)Internet Explorerのセキュリティを強化する「Internet Explorerプロテクト・モード」---という5つの機能/技術が搭載される。

システムが改ざんされた場合,システムは「起動不能」に

 (1)の「Code Integrity」は,システム・ファイルを書き換えてルートキットを埋め込んだり,同一マシンの別ディレクトリにもう1つWindowsをインストールして元のOSのシステム情報を書き換えたり,危険なカーネル・ドライバをインストールしたりするような攻撃を防御するための技術の総称である。3つの技術がここでは採用されている。

 1つは,ロードされるシステム・ファイルのハッシュ情報を常にチェックすることで,コードの改ざんを検出する機能だ。これは,ファイル・システムの挙動を検査する「フィルタ・ドライバ」として実装される。

 もう1つは,システム・ファイルの電子署名(電子証明書)をチェックする技術だ。その仕組みは,Windows Vistaのx64版(64ビット版)とx32版(32ビット版)で多少異なる。まずx64版の場合,電子署名の無いカーネル・コード(カーネル・モードで動作するプログラム)は一切ロードされない。また,サード・パーティ製のドライバにも,「WHQL認証」を受けたことを示す電子署名またはMicrosoftによる電子署名が必要となる。またユーザー・コード(ユーザー・モードで動作するプログラム)であっても,Windowsの暗号化技術などを利用するものには,電子署名が必要になる。

 x32版では,電子署名がないカーネル・コードであってもロードされる。そもそも,Windowsにバンドルされたドライバにしか電子署名が付かない。また,ドライバ等の電子署名の有無をチェックする仕組みも搭載されない。唯一,Windowsの暗号化技術などを利用するユーザー・コードには,電子署名が必要になる。

 3つ目の技術は,カーネルやドライバに変更が加えられていないかどうかを,システムのブート時に検証するもの。OSが起動していないときにシステム・ファイルが書き換えられると,システムが起動不可能になる。システムを起動するには,システムを再インストールするか,システム復元ツールなどを使って復旧する必要がある。

システム・ボリュームを他のOSから不可視に

 現行のWindowsにおいて,システムが起動していない状態でシステム・ファイルを書き換えるのはかなり容易だ。Windowsを同一システムにもう1つインストールすれば,追加インストールしたWindowsからシステム・ファイルを書き換えられるからだ。

 このようなシステム・ファイルの書き換えを防ぐ技術が(2)の「BitLocker」である。BitLockerは,「TPM 1.2」規格のセキュリティ・チップによって,Windowsパーティションを暗号化する技術である。暗号化キーはセキュリティ・チップに保存される。キーを持たない攻撃者がデータを複合化するには「現在の計算機技術で200億年かかる」という。

 BitLockerを使用するためには,TPMセキュリティ・チップやTPMに対応したBIOSのほか,Windowsパーティションとは別の,ブート用の一時的なデータなどを記憶する「アクティブ・パーティション」(1.5Gバイト以上のディスク容量)が必要になる。なお,保護対象はWindowsパーティションだけなので,ユーザー・データなども保護したければ,別途,従来からある暗号化ファイル・システム(EFS)等を用いる。

システム権限で動作するシステム・サービスを減らした

 (3)の「Windows Service Hardening」は,システム権限(LocalSystem権限)で動作するシステム・サービスを減らしたことを指す。シニア・セキュリティ・ストラテジストのSteve Riley氏は,「Blasterワームのことを思い出してほしい。Blasterワームは,システム・サービスであるRPCSS(Remote Procedure Call Server Service)を乗っ取り,RPCSSの持つシステム権限を使って,ワーム本体の『msblast.exe』が自動起動するよう,システムやレジストリ・キーを書き換えていた」と指摘する。

 OSサービスは,ユーザー・インターフェースを持たないプログラムなので,悪意のある攻撃により乗っ取られたとしても,ユーザーはそのことに気づきにくい。そのため,Blasterなど多くのワーム/ウイルスがOSサービスを乗っ取り対象としていた。高い権限で動作するOSサービスの数が減れば,深刻な攻撃を受ける危険性の減少につながる。

 そこでWindows Vistaでは,図1のようにシステム権限で動作するサービスを減らす。また「ファイアウオールの制約を受けるLocalSystem権限」「ネットワークにアクセスできないLocal Service権限」といった,「できることを制限した権限」も設ける。こういった権限で動作するOSサービスが乗っ取られたとしても,できることが限定されているので被害が小さて済む。

 「サービス・プロファイル」という技術も追加する。これは,システム・サービスが利用できるシステム・リソース(システム・ファイルやレジストリ)を限定する技術である。システム・リソースに新しいACL(アクセス・コントロール・リスト)を追加し,ACLに記載された「サービスSID」を持つサービスでなければ,当該システム・リソースを利用できないようにする。Riley氏は「システム・ログ・ファイルである『sysevent.evt』に書き込めるのはイベント・ログだけ,といったACLが装備される」と説明する。

 システム・リソースにはネットワークも含まれる。つまり,ネットワークが使用できるサービスを,サービスSIDを使って限定できるようになる。これにより,トロイの木馬などがシステム・サービスを用いて外部へデータを送信することを防止できる。

シェルの動作権限を低くする「User Account Control」

 (4)の「Mandatory Integrity Control」は,ユーザーがうっかり起動してしまった悪意のあるプログラムからシステムを保護するもの。一般には「User Account Control(UAC)」として知られている機能だ。

 Windows Vistaでは,ユーザーが管理者権限でログオンしている場合でも,シェルの動作権限はWindows XPでいうところの「制限ユーザー」相当に制限されている。システムを改変するようなプログラムを実行しようとすると,確認ダイアログが表示され,「OK」をクリックしなければプログラムが起動しない。

Vistaの「Internet Explorer 7+」に搭載される「プロテクト・モード」

 Windows Vistaに搭載される「Internet Explorer」のバージョンは,「7+」である。Windows XPにも「Internet Explorer 7」が提供されるが,「7」と「7+」の最大の違いは,(5)の「Internet Explorerプロテクト・モード」の有無である(7+にしか搭載されない)。

 Internet Explorerプロテクト・モードは,IEの動作権限を低くし,悪意のあるプログラムがこっそりインストールされるのを防ぐ技術である。まずIE 7+は,基本的に「Temporary Internet Files」フォルダにしか書き込みができない。「信頼できるサイト」からダウンロードしたファイルだけ,他の場所に直接保存できる。

 また,ダウンロードしたプログラムを実行する際にも,さまざまな警告が出る。まず,プログラムをテンポラリ・フォルダからユーザー・フォルダにコピーする際に1回,ユーザー・フォルダからプログラムを実行する際に1回警告が出る。さらに,システムの変更など高い権限が必要な動作をする場合には,もう一度警告が出る。Riley氏は「現在は,悪意のあるプログラムがユーザーに気づかれないうちにインストールされてしまっているが,IE 7+では,悪意のあるプログラムがインストールされるまで3クリックが必要になる」と強調する。

 Windows Vistaには以上のようなシステム保護機能が搭載されるが,Riley氏は最後に「どれだけセキュリティ技術を強化しても,ポストイットにadministrator(システム管理者)のパスワードを書いてモニターに張っていては,どうしようもない」と述べ,セキュリティを保つためには,技術だけではなく運用面での対策も欠かせないことを強調した。