事件と課題から考えるWindows Vistaのセキュリティ(第1回)

マイクロソフト
チーフセキュリティアドバイザー
高橋 正和


図1 Vistaを中心とした包括的なセキュリティ対策の概要
[画像のクリックで拡大表示]

 2007年1月末にリリースされたWindows Vistaは,従来のWindowsシステムに比べてセキュリティ面で重要な改善を施してある。Vista単体に加え,サーバー群と連携した多層的なセキュリティ対策も施されている(図1)。ただ,それぞれの改善点は重複するものが少なくないため,どこがどう改善されているのか,分かりづらい面がある。そこで本稿では,情報セキュリティが直面している脅威と課題の解決を図るのかという視点で,Windows Vistaとその周辺のセキュリティに関する技術を解説する。

 今日考えられるセキュリティ上の脅威はどんなものだろうか。3月12日にIPA(情報処理推進機構)が公表した「情報セキュリティ白書 2007年版」では,情報セキュリティ上の脅威として下記の10項目を挙げている。

第1位 漏えい情報のWinnyによる止まらない流通
第2位 表面化しづらい標的型(スピア型)攻撃
第3位 悪質化・潜在化するボット
第4位 深刻化するゼロデイ攻撃
第5位 ますます多様化するフィッシング詐欺
第6位 増え続けるスパム・メール
第7位 減らない情報漏えい
第8位 狙われ続ける安易なパスワード
第9位 攻撃が急増するSQLインジェクション
第10位 不適切な設定のDNSサーバーを狙う攻撃の発生

 いずれも記憶に新しい事件があるだけでなく,なかなか対策が進まないものが多い。ここに挙げられている10項目を整理してみると,次の4タイプの脅威に分類できる。
(1)情報漏えい(1位,7位)
(2)マルウエア(2位,3位,4位)
(3)不正アクセス(2位,4位,8位,9位,10位)
(4)詐欺行為とスパム(5位,6位)

では,Vistaは(1)-(4)の脅威をどう防げるのか。それぞれついての対策を紹介しよう。

情報漏えい対策

 情報漏えい対策として,Windows Vistaにはデータの暗号化機能が強化されている。具体的には,EFS(Encrypted File System),BitLocker,RMS(Rights Management Service)という3種類の暗号化技術を実装し,ファイル・システム,システム・ファイルを含めたボリューム全体,そして個々のファイルというように,多層の防御が可能になっている。

 暗号化はデータを守るための技術であり,ネットワークやサーバーへのアクセス制御を突破された場合でも情報の内容が漏れるのを防ぐことができる。もちろん情報漏えい対策としては,ユーザーの権限に基づいたアクセス制御が不可欠だが,これはサーバー側の技術と併せて別の回に譲ることにする。

◆EFS--Encrypted File System

 EFSはVista以前から実装されている暗号化ファイル・システムで,ファイルやフォルダのプロパティから簡単に設定することができる(図2)。なお,Vistaでは暗号鍵をスマートカード(ICカード)に記録し,利用できるようになっている。


図2 EFSの設定画面
[画像のクリックで拡大表示]

 EFSで保護されたファイルは,ファイルへのアクセス権とは独立した暗号鍵で保護される。このため,ファイル・サーバーや共用パソコンでEFSを利用すれば,システム管理者を含めた他の利用者からデータを守ることができる。

 ファイル・システムを通さず直接ハードディスクなどのメディアにアクセスされた場合でも,データそのものが暗号化されているので,これを保護できる。パソコンの紛失・盗難の際や,CDやDVDなどのメディアにファイルを書き出す際にも有効だ。

◆BitLocker

 ただEFSでは,システム・ファイルや一時ファイルの暗号化が難しい。このため,盗難や紛失の対策としては必ずしも万全とは言い切れない。そこで,これを補完するために実装したのがBitLockerである。Windows Vistaで初めて実装された機能だ。

 BitLockerは,システム・ボリューム全体を暗号化することにより,EFSでは保護が難しいシステム・ファイルや一時ファイルも保護できる。このため,ディスクを抜き出してほかのパソコンからデータを読み出そうとしても,暗号を解除しない限りデータは見えない。

 また前述のEFSでは,攻撃者が正規の利用者としてログインした場合,自動的にEFSに対するアクセス権を与えてしまうことになる。これもEFSの弱点である。これに対してBitLockerでは,ハードウエアに内蔵されたセキュリティ・チップ「TPM 1.2」(Trusted Platform Module),USBキーに格納した証明書,PINコードによってシステムの起動を制限できる。

◆RMS:Rights Management Service

 もう一つのRMSは,ドキュメント・レベルの暗号化を行うものである。これまでは,RMSクライアントを別途インストールする必要があったが,Vistaには標準でRMSクライアントが組み込まれている。ただ,利用する際にはRMSに対応したアプリケーションとRMSサーバーが必要になる。また現実的な話としては,PKI(公開鍵暗号基盤)などの認証基盤がないと運用は難しい。

 EFSとBitLockerはシステム・レベルで実装された暗号化技術で,アプリケーションに対して透過的に動作する。アプリケーションはファイルが暗号化されていることを意識する必要はなく,メモリー上では常に復号化された状態になる。このため,文書ファイルを電子メールに添付して送信したりすると,これを保護することはできない。Winnyなどによって他のパソコンに転送された場合も同様である。


図3 RMSの設定例
[画像のクリックで拡大表示]

 これに対してRMSはドキュメント・レベルの暗号化であるため,ファイルを外部に転送されても暗号化の効果が消えることはない。また,RMSはアプリケーション・レベルで実装されることから,印刷,修正,転送,コピーといった操作を制限したり,有効期限を設定したりできる。図3はその設定例である。図3を見ると,ファイル・システムが持つアクセス制御や暗号化とは独立して,閲覧や変更が可能なユーザーを割り当てられることがわかる。文書そのものが権限に関する情報を持っていて,転送されても権限管理が残ることから,永続的な暗号化とも呼ばれる。

マルウエア対策

 マルウエア対策はどうか。マルウエアは,ウイルス,ワーム,スパイウエア,ボットといった悪質なソフトウエアの総称である。最近のマルウエアは,ワームのように感染し,スパイウエアとしての活動を行うほか,スパム・メールの送信に利用されるというように,複合化されている。このため,機能や目的によってタイプを分類し,対策を考える方がよい(図4)。


図4 マルウエアの階層と分類
[画像のクリックで拡大表示]

 マルウエアが感染する方法を大きく分けると,ネットワーク・ワームのように「脆弱性を利用してコードを実行する」方法と,メール型のウイルスのように何らかの方法で「ユーザーにコードを実行させる」方法がある。マルウエア対策ではこれに加えて,万一マルウエアが実行された場合に「影響を最小限に押さえ込む」ことも考えておく必要がある。

◆脆弱性を利用してコードを実行する攻撃の対策

 「脆弱性を利用してコードを実行する」攻撃へのVistaでの対策は次のようなものが挙げられる。

・Windows Firewallによるネットワークとリソース・アクセスの制限
・UAC(User Account Control)
・Windows Service HardeningとUAC対応
・整合性レベル(Integrity Level)と仮想化
・DEP(Data Execute Prevention)による,Exploit実行の防止
・ASLR(Address Space Layout Randomization)による,Exploit実行の防止
・Windows Defenderの組み込み
・SDL(Security Development Lifecycle)による開発
・Microsoft Updateへの移行(Windows Update,Office Update,MRT等の統合)

 このうちの多くは以前から提供していたものである。例えばWindows Firewallは,Windows XP SP1から導入されている,いわゆるパーソナル・ファイアウォール。Vistaではプログラム・レベルでのポート制御や,リソースに対するアクセス制御が可能になった。DEPもXP SP2で実装された技術である。バッファ・オーバーフローが成功しても,スタックやヒープ上で,コードが実行できないようにする。Windows Defenderも以前からXP向けに提供していたプログラムだが,Vistaではシステムに組み込んで提供することになった。Windows Defenderは,スパイウエアやRootKitへの対策を行うもので,ウイルスやワームは対象としていない。

 これに対してUACとASLRはVistaで新規に実装された機能である。UACはシステム・リソースなどを操作する際に明示的に管理者権限を求める機能。システムをできる限り一般利用者権限で利用させ,管理者権限が必要な操作を実行するたびに,認証処理を実行するようになっている。Vistaでは,UACを実現するためにシステム・プログラムのUAC対応を行い,万が一システム・プログラムが侵入経路となった場合の被害を限定すると共に,UACの煩しさの低減を図っている。なおUACは,整合性レベルと密接な関係があるが,整合性レベルについては,Internet Explorer 7を例として後述する。もう一つの新機能であるASLRは,システムが読み込まれるメモリー領域をランダムに変更するもの仕組みである。バッファ・オーバーフロー攻撃が成功する可能性を減らす効果がある。

 SDLとMicrosoft Updateへの移行は脆弱性そのものを減らすためのアプローチで,SDLは開発段階における取り組み。Microsoft Updateは,既に提供が始まっているサービス。これまでWindows Update,Office Updateというようにソフトウエアの種類などによって分かれていたサービスを一元化した。また,マイクロソフト製以外のドライバー・ソフトなども,Microsoft Updateに組み込むことができる。

◆ユーザーにコードを実行させる攻撃の対策

 「ユーザーにコードを実行させる」攻撃への対策では,主に次の項目が挙げられる。

・Internet Explorer 7(IE7)の保護モード
・UAC(User Account Control),整合性レベル(Integrity Level)と仮想化
・Windows Defenderの組み込み
・Windows FirewallへのIPsecの組み込み

 UAC,Defenderは,前述した脆弱性を利用してコードを実行する攻撃と共通の対策である。ここでは,IE7の保護モードについて簡単に紹介しよう。


図5 IE7の保護モードの設定
[画像のクリックで拡大表示]

 IE7の保護モードは,ブラウザを通常のアプリケーションよりも低い動作権限(整合性レベル)で実行する。整合性レベルが低いプログラムは,重要なファイルやレジストリへのアクセスが仮想化され,直接アクセスできなくなる。これにより,ブラウザを通じた攻撃を防止すると共に,成功した場合の影響を最小限に押さえ込む。なお,保護モードはVista上で稼働するIE7だけの機能で,セキュリティ・ゾーンごとに設定することが可能となっている(図5)。

 こうした対策を講じてもなお,マルウエア感染を100%防ぐことはできない。そこで感染しても影響を最小限に食い止める対策が必要になる。具体的には,

・Windows Firewall (特に外向きのトラフィック)
・UAC(User Account Control)
・Windows Service HardeningとUAC対応
・整合性レベル(Integrity Level)と仮想化
・悪意のあるプログラム削除ツール(MRT)

といった対策である。こう見ると,実は前述の対策の多くは感染時の対策にもなっていることが分かる。注意したいのはWindows Firewallの外向きのトラフィックのブロックだ。

 マスメール型のウイルスは,ウイルス自身がメールの送信を行うものが多い。また,ネットワーク・ワームは感染活動を行うためにネットワークを利用する。Windows Firewallではプログラムとポートの組み合わせで通信を制御するため,ウイルスが試みるメール送信やワームの感染活動をブロックすることができる。これにより,二次的な感染源となることや社内に被害を拡大させるリスクを大幅に減らすことができる。ただしインストール時の設定では,既定のプログラムにのみブロックの設定が行われているので,マルウエアによるトラフィックをブロックするには設定を変更する必要がある。

不正アクセス対策

 不正アクセス対策はどうか。多くの不正アクセス対策は,前述のマルウエア対策と共通している。そのほかでは,ユーザー認証機能の強化,SQLインジェクション対策ツールの提供がある。

 パスワードが破られてしまうと,攻撃者が正規のユーザーとしてシステムを利用できてしまうため,堅牢なシステムを作っていてもほとんど意味がない。そこでVistaでは,ログイン・プログラム(GINA)を全面的に書き換え,スマートカードに対応したほかバイオメトリクス認証などを容易に組み込めるようになっている。

 また,安全度の高いコード開発をサポートするため,Visual Studioに「PREfast」と「FxCop」というツールが組み込まれている。PREfastは典型的な脆弱性を発見を支援するツール。FxCop はSQLインジェクションなどの脆弱性の発見を支援するツールである。

詐欺行為とスパム

 詐欺やスパムへの対策では,IE7のフィッシング対策が目新しい。IE7のフィッシング・フィルタは,ホワイトリスト,ブラックリストに基づいた判定と,ページの特徴に基づいた判定の両方を実行する。具体的には, (1)ユーザーのコンピュータに格納された合法的なサイト一覧と比較し, (2)フィッシングに共通する特徴がないかを分析, (3)マイクロソフトが運営するサイトにURLを送信し,フィッシング・サイトの一覧表と比較する というように動作する。この結果,アクセス先にフィッシング・サイトの疑いがある場合は,図6のように警告が表示される。既知のフィッシング・サイトである場合は図7のようにサイトの表示自体をブロックする。


図6 フィッシングサイトの疑いがある場合
[画像のクリックで拡大表示]

図7 既知のフィッシングサイトの場合
[画像のクリックで拡大表示]

 IE7ではほかにも,クロスドメイン・スクリプトを禁止,セキュリティ・ステータスバーの変更,EV SSL(Extended Validation SSL)への対応といった機能が盛り込まれている。

 今回は,Windows Vistaに実装されているセキュリティ対策の全体像を紹介した。複数の機能がオーバーラップしているが,これはセキュリティ対策の基本として多層防御(Defense in Depth)というアプローチを取っているためである。次回からは,今回挙げたそれぞれの項目について一歩踏み込んで解説していく。