SetProcessMitigationPolicy 関数 (processthreadsapi.h)
呼び出し元プロセスの軽減ポリシーを設定します。 軽減ポリシーを使用すると、さまざまな種類の攻撃に対してプロセスを強化できます。
構文
BOOL SetProcessMitigationPolicy(
[in] PROCESS_MITIGATION_POLICY MitigationPolicy,
[in] PVOID lpBuffer,
[in] SIZE_T dwLength
);
パラメーター
[in] MitigationPolicy
適用する軽減ポリシー。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
ProcessDEPPolicy | プロセスのデータ実行防止 (DEP) ポリシー。 lpBuffer パラメーターは、DEP ポリシー フラグを指定するPROCESS_MITIGATION_DEP_POLICY構造体を指します。 |
ProcessASLRPolicy | プロセスのアドレス空間レイアウトランダム化 (ASLR) ポリシー。 lpBuffer パラメーターは、ASLR ポリシー フラグを指定するPROCESS_MITIGATION_ASLR_POLICY構造体を指します。 |
ProcessDynamicCodePolicy | プロセスの動的コード ポリシー。 有効にすると、プロセスで動的コードを生成したり、既存の実行可能コードを変更したりすることはできません。 lpBuffer パラメーターは、動的コード ポリシー フラグを指定するPROCESS_MITIGATION_DYNAMIC_CODE_POLICY構造体を指します。 |
ProcessStrictHandleCheckPolicy | 無効なハンドルを操作すると、プロセスは致命的なエラーを受け取ります。 lpBuffer パラメーターは、ポリシー フラグチェックハンドルを指定するPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY構造体を指します。 |
ProcessSystemCallDisablePolicy | 最下位レイヤーで NTUser/GDI 関数を使用する機能を無効にします。 lpBuffer パラメーターは、システム呼び出し無効化ポリシー フラグを指定するPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY構造体を指します。 |
ProcessMitigationOptionsMask | システム上のすべての軽減オプションの有効なビットのマスクを返します。 アプリケーションでは、サポートされていないすべてのビットを一度に除外するマスクとビット単位を組み合わせることにより、オペレーティング システムに対して軽減オプションのクエリを実行せずに、多くの軽減オプションを設定できます。 lpBuffer パラメーターは、マスクのULONG64ビット ベクトルを指します。また、64 ビットを超えるビットに対応するために、ULONG64ビット ベクトルの 2 要素配列を指します。 |
ProcessExtensionPointDisablePolicy | lpBuffer パラメーターは、拡張ポイントの無効化ポリシー フラグを指定するPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY構造体を指します。 |
ProcessControlFlowGuardPolicy | プロセスの制御フロー ガード (CFG) ポリシー。 lpBuffer パラメーターは、CFG ポリシー フラグを指定するPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY構造体を指します。 |
ProcessSignaturePolicy | Microsoft、Windows ストア、または Microsoft、Windows ストア、Windows ハードウェア品質ラボ (WHQL) によって署名されたイメージにイメージの読み込みを制限できるプロセスのポリシー。 lpBuffer パラメーターは、署名ポリシー フラグを指定するPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY構造体を指します。 |
ProcessFontDisablePolicy | プロセスのフォント読み込みに関するポリシー。 オンにすると、システム以外のフォントを読み込むことができません。 lpBuffer パラメーターは、フォント読み込みのポリシー フラグを指定するPROCESS_MITIGATION_FONT_DISABLE_POLICY構造体を指します。 |
ProcessImageLoadPolicy | プロセスのイメージ読み込みに関するポリシー。これにより、プロセスにマップできる実行可能イメージの種類が決まります。 オンにすると、必須ラベルが低いリモート デバイスやファイルなど、一部の場所からイメージを読み込むことができません。 lpBuffer パラメーターは、イメージ読み込み用のポリシー フラグを指定するPROCESS_MITIGATION_IMAGE_LOAD_POLICY構造体を指します。 |
ProcessRedirectionTrustPolicy | プロセスの RedirectionGuard ポリシー。 lpBuffer パラメーターは、軽減モードを指定するPROCESS_MITIGATION_REDIRECTION_TRUST_POLICY構造体を指します。 |
ProcessSideChannelIsolationPolicy | Windows 10 Version 1809以上: 指定されたプロセスのサイド チャネルの分離に関するポリシー。 lpBuffer パラメーターは、サイド チャネル分離のポリシー フラグを指定するPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY構造体を指します。 |
ProcessUserShadowStackPolicy | Windows 10バージョン 2004 以降: プロセスに対するユーザー モードのハードウェアによるスタック保護に関するポリシー。 lpBuffer パラメーターは、ユーザー モードのハードウェア適用スタック保護のポリシー フラグを指定するPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY構造体を指します。 |
[in] lpBuffer
MitigationPolicy パラメーターが ProcessDEPPolicy の場合、このパラメーターは DEP ポリシー フラグを指定するPROCESS_MITIGATION_DEP_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessASLRPolicy の場合、このパラメーターは ASLR ポリシー フラグを指定するPROCESS_MITIGATION_ASLR_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessImageLoadPolicy の場合、このパラメーターは、イメージ読み込み用のポリシー フラグを受け取るPROCESS_MITIGATION_IMAGE_LOAD_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessStrictHandleCheckPolicy の場合、このパラメーターは、ポリシー フラグチェックハンドルを指定するPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessSystemCallDisablePolicy の場合、このパラメーターは、システム呼び出し無効化ポリシー フラグを指定するPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessMitigationOptionsMask の場合、このパラメーターはマスクのULONG64 ビット ベクターを指すか、64 ビットを超えるビット (ULONG64 ビット ベクトルの 2 要素配列) を格納します。
MitigationPolicy パラメーターが ProcessExtensionPointDisablePolicy の場合、このパラメーターは拡張ポイントの無効化ポリシー フラグを指定するPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessControlFlowGuardPolicy の場合、このパラメーターは CFG ポリシー フラグを指定するPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessSignaturePolicy の場合、このパラメーターは署名ポリシー フラグを指定するPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessFontDisablePolicy の場合、このパラメーターはフォント読み込みのポリシー フラグを指定するPROCESS_MITIGATION_FONT_DISABLE_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessImageLoadPolicy の場合、このパラメーターは、イメージ読み込み用のポリシー フラグを指定するPROCESS_MITIGATION_IMAGE_LOAD_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessRedirectionTrustPolicy の場合、このパラメーターは軽減モードを指定するPROCESS_MITIGATION_REDIRECTION_TRUST_POLICY構造体を指します。
MitigationPolicy パラメーターが ProcessUserShadowStackPolicy の場合、このパラメーターは、ユーザー モードのハードウェア適用スタック保護のポリシー フラグを指定するPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY構造体を指します。
[in] dwLength
lpBuffer のサイズ (バイト単位)。
戻り値
関数が成功すると、 TRUE が返されます。 関数が失敗した場合は、 FALSE を返します。 この関数に対して定義されているエラー値を取得するには、 GetLastError を呼び出します。
注釈
プロセスの軽減ポリシーを設定すると、攻撃者がセキュリティの脆弱性を悪用するのを防ぐことができます。 SetProcessMitigationPolicy 関数を使用して、プログラムによってセキュリティ軽減策を有効または無効にします。
最大限の効果を発揮するために、プロセスの初期化の前または実行中に軽減ポリシーを適用する必要があります。 たとえば、イメージの強制再配置を有効にする ASLR ポリシーの設定は、プロセス内のすべてのイメージが読み込まれる前に適用されている場合にのみ有効です。
ASLR 軽減ポリシーを適用した後は、制限を緩和することはできません。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT >= 0x0602を設定します。 詳細については、「 Windows ヘッダーの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | processthreadsapi.h |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |