EMETにより提供される機能
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/02 02:28 UTC 版)
「Enhanced Mitigation Experience Toolkit」の記事における「EMETにより提供される機能」の解説
以下の脆弱性緩和策を設定することができる。この内システム全体に設定出来るのはDEP、SEHOP、ASLRのみである。また一部のシステム設定は互換性の問題から規定では選択できないようになっている。 DEP(Data Execute Prevention) データ実行防止を参照。システム設定は全ての対応Windowsにて任意の設定が可能。 SEHOP(Structured Exception Handler Overwrite Protection) SEHハンドラーチェーンの上書きを検出しハンドラーを実行せずにプロセスを終了させる。Windows Vista Service Pack 1にて実装された機能でもあるが、EMETではそれとは別の実装を提供するため以下の2点の違いがある。Windows 7/2008 R2より前のWindowsでもアプリケーション単位でOpt-Inできる。 Windows Server 2003でも利用可能。 EMETによるSEHOP実装にはWindowsのそれと比べて脆弱な部分が指摘されている。 システム全体に設定可能な項目Windows Vista、Server 2008Windows 7、Server 2008 R2Windows 8、Server 2012 およびそれ以降Disabled 設定可能(Vistaの規定値) 設定不可能 設定可能 Application Opt In 設定不可能 設定可能(7の規定値) 設定可能(8の規定値) Application Opt Out 設定不可能 設定可能(Server 2008 R2の規定値) 設定可能(Server 2012の規定値) Always On 設定可能(Server 2008の規定値) 設定不可能 設定可能 NullPage(Null Page pre-allocation) ヌルポインタ付近のメモリアドレスへのメモリ割り当てを拒否することでヌルポインタをdereferenceしてしまう脆弱性を利用した攻撃を防ぐ。Windows 8、Windows Server 2012にも実装されており、既定で有効である。 HeapSpray(Common heap spray address pre-allocation) Heap spraying(英語版)で利用されやすいアドレスを予め使えなくしておくことで攻撃の成功率を下げる。 EAF(Export Address Table Access Filtering) kernel32.dllとntdll.dllのExport Address Tableの読み込み元を限定することで攻撃を防ぐ。この防御により同様の手法を利用した攻撃は99.9%防げるとしている。 EAF+ EAFの防御に追加でスタックメモリとスタックレジスタのチェックを行う。また、アプリケーションごとにExport Address Tableの読み込み元として(EAFのルールでは許可されるがEAF+有効時は)許可しないDLLの指定も行う。 MandatoryASLR(Enforces Address Space Layout Randomization on loaded binaries) 詳細はアドレス空間配置のランダム化を参照。WindowsではASLRの適用はDLL単位でのOpt-Inであり対応になっていないDLLは通常再配置されないが、EMETにより再配置を強制する。アプリケーション単位での強制ASLRはWindows 7以降にも実装された機能であるがEMETはその実装を利用していない。 システム全体に設定可能な項目Windows Vista、Server 2008Windows 7、Server 2008 R2Windows 8、Server 2012 およびそれ以降Disabled 設定可能 設定可能 設定可能 Application Opt In(ASLRをサポートするすべてのWindowsの規定値) 設定可能 設定可能 設定可能 Application Opt Out(既定では非表示) 設定不可能 設定不可能 設定可能 Always On(既定では非表示) 設定可能 設定可能 設定可能 BottomUpASLR(Bottom-Up virtual memory randomization) DLL読み込み以外の低位アドレスから割り当てていくタイプ(ヒープやスタック、メモリマップドファイルが該当する)のメモリ確保をランダム化する。 LoadLib(Check and prevent Loadlibrary calls against UNC paths) ネットワークパスからのDLL読み込みを拒否する。 MemProt(Special check on memory protection APIs) スタックメモリに実行可能属性を付加しようとするAPI呼び出しを拒否する。スタックに書き込まれた攻撃コードを実行しようとした際にDEPにより実行が拒否される。 Caller(ROP mitigation that checks if critical function was called and not returned into) 攻撃コードにおいて用いられやすい幾つかのAPIが正しい命令で呼び出されたのかをチェックする。 StackPivot(Check if stack pointer was pivotted) スタックメモリがすり替えられていないか(OSがスタックに割り当てたメモリをスタックレジスタが指しているか)をチェックする。 SimExecFlow(Simulate the execution flow after thr return address to detect subsequent ROP gadgets) 攻撃コードにおいて用いられやすい幾つかのAPIの呼び出し元アドレスの命令をシミュレート実行しReturn-oriented programming(英語版)で用いられる手法が使われていないかをチェックする。 ASR(Attack Surface Reduction) 指定したDLLの読み込みを拒否する。任意のプラグインを追加できるアプリケーションの防御に使用する。Internet Explorerではセキュリティーゾーンと連携してDLLの読み込みを許可するゾーンを設定できる。 Block Untrusted Fonts Webフォントや文書に埋め込まれたフォントなどシステムにインストールされたフォント以外のフォント読み込みを拒否する。Windows 10でのみ利用可能。 Certificate Trust 特定のSSL/TLS証明書を検証する際に指定したルート証明機関から発行されたルート証明書であるかなどをチェックする。既定ではデスクトップ版Internet Explorerのみ対応する。 以下はEMETを適用したアプリケーションすべてに適用される。 Deep hooks チェックを公開APIだけでなく公開APIが呼び出す内部非公開APIでも行う。 Anti detours API入口のコードをあらかじめ別の場所にコピーしておき、コピーしてある方のコードを実行したのち途中から元のAPIに処理を戻す手法(こうすることで本物のAPIの入口にEMETが追加したチェックを回避しようとする)のAPIフックを検出する。なおDetoursとはマイクロソフトが提供している同様の手法を用いるAPIフックライブラリの名前である。 Banned functions 一般的なアプリケーションでは正当な利用方法が無い特定のシステム用APIの使用を拒否する。
※この「EMETにより提供される機能」の解説は、「Enhanced Mitigation Experience Toolkit」の解説の一部です。
「EMETにより提供される機能」を含む「Enhanced Mitigation Experience Toolkit」の記事については、「Enhanced Mitigation Experience Toolkit」の概要を参照ください。
- EMETにより提供される機能のページへのリンク