Office 2010 のデータ実行防止
こんにちは。Office Trustworthy Computing (TWC) チームのセキュリティ プログラム マネージャー Vikas Malhotra です。この投稿では、データ実行防止 (DEP) に対して行われたセキュリティ上の変更点について説明します。DEP は、Office 2010 に実装されたさまざまな新しい高度な防御手段による多層防御の 1 つです。
まず、DEP とはどのようなものであるかということ、そして DEP が IT 担当者や開発者にもたらす影響についてお話ししましょう。
DEP とは
DEP は、Windows XP Service Pack 2 および Windows Server 2003 Service Pack 1で導入されたセキュリティ機能です。DEP に関するより一般的な情報については、この Microsoft サポート技術情報をご覧ください。
プログラムを起動すると、メモリ ページがそのプログラムに割り当てられます。メモリ内のこれらのページには、実行可能かどうかを示す "マーカー" が付けられます。ページが実行可能としてマークされている場合、そのメモリ内のコードは、実行を許可されます。ページが実行可能としてマークされていない場合、実行が許可されません。DEP が有効な場合、実行可能としてマークされていないページ内からコードが実行されると、DEP 例外が生成され、実行しているプロセスは終了します。
マルウェアがコンピューターに感染すると、マルウェアは最初に、そのコンピューターの書き込み可能かつ実行可能とマークされているメモリ領域に、その "悪意のあるコード" を書き込みます。次に、その安全でないコードを実行しようとします。この動作が発生すると、DEP が有効になっている場合は、ユーザーには Office アプリケーションがクラッシュしたように見えます。セキュリティの観点から、Office がマルウェアの可能性があるコードの実行を停止し、コンピューターを安全に保つためにシャットダウンしたためです。
プログラムが DEP を有効にした状態で実行されているかどうかの確認方法
最も簡単な方法は、タスク マネージャーを使用する方法です。タスク マネージャーで、[データ実行防止] という列が表示されていることを確認します。DEP が適用された状態で実行されているプロセスはすべて、横に [有効] と表示されています。たとえば、次の図では DEP が適用された状態で winword.exe が実行されています。
Office での DEP の実装方法
Office アプリケーションを起動すると、コンピューターの DEP ポリシーを判定するために GetSystemDEPPolicy 関数が呼び出されます。この API は次のいずれかの結果を返し、それぞれの結果に対応する動作を実行します。
- AlwaysOn: Office アプリケーションは常に DEP が有効な状態で実行されます。この設定を変更するには、システム ブート構成ファイルを変更し、コンピューターを再起動する必要があります。
- AlwaysOff: Office アプリケーションは常に DEP が無効な状態で実行されます。この設定を変更するには、システム ブート構成ファイルを変更し、コンピューターを再起動する必要があります。
- OptIn: 各 Office アプリケーションを DEP が有効な状態で実行するかどうかを、セキュリティ センターで構成できます (以下のセクション参照)。
- OptOut: 各 Office アプリケーションを DEP が有効な状態で実行するかどうかを、セキュリティ センターで構成できます (以下のセクション参照)。
DEP を有効にした状態で Office アプリケーションを実行する必要があると判定されると、アプリケーションによって SetProcessDEPPolicy が呼び出され、プロセスの実行中、DEP が継続的に有効になります。これによって、Office プロセスに読み込まれるその他のすべてのバイナリにも DEP が適用されます。
IT 担当者に対する構成オプション
64 ビット インストールの場合、DEP は Office アプリケーションに常に適用されます。32 ビット インストールの場合は、必要に応じて、セキュリティ センターから DEP をアプリケーション レベルで構成できます。保護されたビューをサポートするアプリケーションについては、[保護されたビュー] タブに DEP を構成するオプションが表示されます。その他のすべての Office アプリケーションでは、次の図のように、DEP タブに設定が表示されます。
図: 保護されたビューをサポートする Office アプリケーションの DEP 設定
図: 保護されたビューをサポートしない Office アプリケーションの DEP 設定
セキュリティ センターで DEP を有効にするオプションが灰色表示されている場合は、コンピューターに AlwaysOn または AlwaysOff が設定されています。
セキュリティ センターのこれらのオプションを構成するためのオプションは、グループ ポリシー テンプレートとしても選択できます。次の図は、Word の場合の例です。
開発者に対する、アプリケーションへの DEP の影響
ほとんどの場合、コードは DEP の影響を受けません。しかし、実行可能とマークされていないメモリ領域への書き込みが必要なコードで、(JIT コンパイラ同様に) そのコードを実行する場合は、いくつかの方法があります。最初の選択肢は、今後このように実行しないようにコードを再書き込みする方法です。ソース コードにアクセスできない場合、またはより新しいアドインを入手できない場合は、上記の方法で DEP を無効にすることができます。最後の選択肢は、VirtualProtect 関数を使用する方法です。VirtualProtect を使用すると、メモリの "書き込み" および "実行" とマークされているページに書き込むことができるようになります。書き込みの実行後、この "書き込み" 属性は削除できます。これによって、コードを後で実行しても例外が生成されません。"書き込み" 属性を削除することによって、メモリ領域がマルウェアに感染しないようにすることができます。
DEP 例外はどのように表示されるか
ほとんどの場合、DEP 例外は、Office アプリケーション内ではなく、コンピューターにインストールされているアドインに対して発生します。アドインが DEP 例外をトリガーすると、Office アプリケーションは終了し、一般的なクラッシュが発生したような状況になります。Office アプリケーションを再起動すると、以下のようなダイアログが表示されます。
この例では、"my vc test com addin" というアドインが原因で Office が不安定になりました。この時点で 2 つの選択肢があります。1 つ目は、アドインの読み込みを無効にする方法です。2 つ目は、アドインの再読み込みを試行する方法です。私がお勧めするのは、このアドインを無効にして Office が通常どおり起動するようにする方法です。Office アプリケーションが起動したら、タスク マネージャーでこのアドインが無効になっていることを確認します。
次の図では、データ実行のエラー後にユーザーによってアドインが無効になった状況が発生していることがわかります。
このとき、DEP に正しく認識される新しいバージョンを入手するまで、アドインを無効にしたままにします。
最後に、現在のバージョンの Office 2010 は、データ実行防止 (DEP) が有効な状態で配布されています。DEPは、実行する意図がないコードが実行されないようにすることでコンピューターを安全に保つことができる機能です。
お読みいただき、ありがとうございました。
Vikas Malhotra
セキュリティ プログラム マネージャー
Office Trustworthy Computing
原文の投稿日: 2010 年 2 月 4 日 (木曜日) 午後 4:04 投稿者: OffTeam
これはローカライズされたブログ投稿です。原文の記事は、https://blogs.technet.com/office2010/archive/2010/02/04/data-excecution-prevention-in-office-2010.aspx をご覧ください。