繰り返しになりますが、Windows 10には最新の脆弱性軽減策が標準で組み込まれており、互換性への影響を最小限にして既定で構成されています。通常の利用では、EMETを導入しなくても、古いWindowsより高いセキュリティレベルで保護されています。さらに、Windows 10では、次の2つの緩和策が新たに追加され、既定で有効化されています(CFGはCFG対応アプリケーションのみを保護します)。
Windows 10 バージョン1703までは次の「ローカルコンピューターポリシー」または「グループポリシー」を使用して、アプリケーションごとの軽減策をカスタマイズすることが可能です(画面2)。
以下の表1に、上記ポリシーを使用して構成可能なオプションをまとめました。プロセス軽減策についてはビット列(0、1、または?)を作成し、実行可能イメージに対応付ける必要があるため、難解です。また、Windows 10に組み込まれていても、構成方法が示されていないものも数多くあります。なお、グローバル設定については、EMETのUIを使用して構成することが可能です。
グローバル設定をユーザーインタフェース(UI)で簡単に確認、変更できることから、EMETはWindows 10でもある意味で有効なツールでした。しかし、Windows 10 バージョン1709からはEMETのインストールはブロックされるようになりました。
その代わりに、Windows 10 バージョン1709にはEMETとよく似た方法で構成することができる「Exploit Protection」という新機能が追加されました。Exploit Protectionは、「Windows Defenderセキュリティセンター」の「アプリとプラウザーコントロール」から開くことができ、「システム設定」によるグローバルな設定と、「プログラム設定」によるアプリケーションごとの設定が可能です(画面3、画面4)。
以下の表2、表3に、Exploit Protectionで構成可能なオプションをまとめました。
システム設定 | 既定値 | 説明 |
---|---|---|
制御フローガード(CFG) | 既定でオンにする | 間接的な呼び出しの制御フローの整合性を保証します。 |
データ実行防止(DEP) | 既定でオンにする | データ専用のメモリページからコードを実行できないようにします。 |
イメージのランダム化を強制する(必須ASLR) | 既定でオフにする | /DYNAMICBASEを使ってコンパイルされていない実行可能イメージを、強制的に再配置します。 |
仮想メモリの割り当てをランダム化する(ボトムアップASLR) | 既定でオンにする | 仮想メモリの割り当ての場所をランダムにします。 |
例外チェーンを検証する(SEHOP) | 既定でオンにする | ディスパッチ中の例外チェーンの整合性を保証します。 |
ヒープの整合性を検証する | 既定でオンにする | ヒープの破損が検出された場合、プロセスを終了します。 |
表2 「システム設定」で構成可能なオプションと既定値 |
プログラム設定 | オプション | 説明 |
---|---|---|
任意のコードガード(Arbitrary Code Guard:ACG) | ・システム設定の上書き:オン/オフ ・スレッドオプトアウトを許可する ・監査 |
イメージが保護されない実行可能コードを禁止し、コードページの変更を防止します。 |
低整合性イメージをブロックする | ・システム設定の上書き:オン/オフ ・監査 |
整合性レベル(Integrity Level:IL)が低いことが示されているイメージが読み込まれないようにします。 |
リモートイメージをブロックする | ・システム設定の上書き:オン/オフ ・監査 |
リモートデバイスからイメージが読み込まれないようにします。 |
信頼されていないフォントをブロックする | ・システム設定の上書き:オン/オフ ・監査 |
%Windir%Fontsディレクトリにインストールされないフォントが読み込まれないようにします。 |
コードの整合性ガード | ・システム設定の上書き:オン/オフ ・Windowsストアによって署名されているイメージの読み込みも許可する ・監査 |
Microsoftによって署名されているイメージのみ、読み込みを許可します。 |
制御フローガード(CFG) | ・システム設定の上書き:オン/オフ ・厳密なCFGを使用する |
間接的な呼び出しの制御フローの整合性(Control Flow Integrity:CFI)を保証します。 |
データ実行防止(DEP) | ・システム設定の上書き:オン/オフ ・ATLシミュレーションを有効にする(日本語訳のミス、正しくはATLエミュレーション) |
データ専用のメモリページからコードを実行できないようにします。 |
拡張ポイントを無効にする | ・システム設定の上書き:オン/オフ | ウィンドウフックなど、全てのプロセスへのDLLの挿入を許可するさまざまな拡張メカニズムを無効にします。 |
Win32kシステムコールを無効にする | ・システム設定の上書き:オン/オフ ・監査 |
プログラムがWin32kシステムコールテーブルを使用できないようにします。 |
子プロセスを許可しない | ・システム設定の上書き:オン/オフ ・監査 |
プロセスが子プロセスを作成できないようにします。 |
エクスポートアドレスフィルター(EAF) | ・システム設定の上書き:オン/オフ ・エクスプロイトによってよく悪用されるモジュールのアクセスを検証する ・監査 |
悪意のあるコードによって解決されている危険なエクスポート関数を検出します。 |
イメージのランダム化を強制する(必須ASLR) | ・システム設定の上書き:オン/オフ ・ストリップイメージを許可しない |
/DYNAMICBASEを使ってコンパイルされていないイメージの再配置を強制する。 |
インポートアドレスフィルター(IAF) | ・システム設定の上書き:オン/オフ ・監査 |
悪意のあるコードによって解決されている危険なインポート関数を検出します。 |
仮想メモリの割り当てをランダム化する(ボトムアップASLR) | ・システム設定の上書き:オン/オフ ・高エントロピを使用しない ・監査 |
仮想メモリの割り当ての場所をランダムにします。 |
実行をシミュレートする(SimExec) | ・システム設定の上書き:オン/オフ ・監査 |
扱いに注意が必要な関数の呼び出しが正当な呼び出し元に返されることを保証します。 |
API呼び出しを検証する(CallerCheck) | ・システム設定の上書き:オン/オフ ・監査 |
扱いに注意が必要なAPIが正当な呼び出し元によって呼び出されることを保証します。 |
例外チェーンを検証する(SEHOP) | ・システム設定の上書き:オン/オフ | ディスパッチ中の例外チェーンの整合性を保証します。 |
ハンドルの使用状態を検証する | ・システム設定の上書き:オン/オフ | 無効なハンドルの参照に対して例外を生成します。 |
イメージの依存関係の整合性を検証する | ・システム設定の上書き:オン/オフ ・監査 |
Windowsイメージの依存関係の読み込みにコード署名を強制します。 |
スタックの整合性を検証する(StackPivot) | ・監査 | 扱いに注意が必要な関数に対して、スタックがリダイレクトされていないことを保証します。 |
表3 「プログラム設定」で構成可能なオプション |
「システム設定」は、特に理由がない限り、Windows 10の既定値のまま使用することをお勧めします。「プログラム設定」は、既定で幾つかのプログラムが構成済みになっています。また、アプリケーションをインストールすることで、自動的に追加される場合があります。これらは、Microsoftが維持する互換性データベースに基づいて構成され、既知の互換性問題を回避してくれます。
Microsoftが認識していないアプリケーションや基幹業務アプリケーションで原因不明のクラッシュが発生した場合は、「プログラム設定」で全てのオプションを無効化して改善するかどうかをテストしましょう。改善するようであれば、1つずつオプションを有効化し、互換性に影響している緩和策を見つけるとよいでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.