Функция SetProcessMitigationPolicy (processthreadsapi.h)
Задает политику устранения рисков для вызывающего процесса. Политики устранения рисков позволяют процессу защищать себя от различных типов атак.
Синтаксис
BOOL SetProcessMitigationPolicy(
[in] PROCESS_MITIGATION_POLICY MitigationPolicy,
[in] PVOID lpBuffer,
[in] SIZE_T dwLength
);
Параметры
[in] MitigationPolicy
Применяемая политика устранения рисков. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
ProcessDEPPolicy | Политика предотвращения выполнения данных (DEP) процесса. Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_DEP_POLICY , указывающую флаги политики DEP. |
ProcessASLRPolicy | Политика случайного размещения адресного пространства (ASLR) процесса. Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_ASLR_POLICY , указывающую флаги политики ASLR. |
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 битовый вектор для маски или на двухэлемерный массив ULONG64 битовых векторов. |
ProcessExtensionPointDisablePolicy | Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY , указывающую флаги политики отключения точки расширения. |
ProcessControlFlowGuardPolicy | Политика процесса Control Flow Guard (CFG). Параметр lpBuffer указывает на PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY структуру, которая задает флаги политики CFG. |
ProcessSignaturePolicy | Политика процесса, который может ограничить загрузку изображений теми изображениями, которые подписаны корпорацией Майкрософт, Магазином Windows или Корпорацией Майкрософт, Магазином Windows и Лабораторией качества оборудования Windows (WHQL). Параметр he 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, версия 1809 и выше: политика изоляции каналов для указанного процесса. Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY , которая задает флаги политики для изоляции бокового канала. |
ProcessUserShadowStackPolicy | Windows 10 версии 2004 и выше: политика, касающаяся аппаратной защиты стека в пользовательском режиме для процесса. Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY , которая задает флаги политики для защиты стека, принудительно применяемой в пользовательском режиме. |
[in] lpBuffer
Если параметр MitigationPolicy имеет значение ProcessDEPPolicy, этот параметр указывает на структуру PROCESS_MITIGATION_DEP_POLICY , указывающую флаги политики DEP.
Если параметр MitigationPolicy имеет значение ProcessASLRPolicy, этот параметр указывает на структуру PROCESS_MITIGATION_ASLR_POLICY , указывающую флаги политики ASLR.
Если параметр 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 битовых векторов.
Если параметр MitigationPolicy имеет значение ProcessExtensionPointDisablePolicy, этот параметр указывает на PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY структуру, указывающую флаги политики отключения точки расширения.
Если параметр MitigationPolicy имеет значение ProcessControlFlowGuardPolicy, этот параметр указывает на PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY структуру, которая задает флаги политики CFG.
Если параметр 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 |
Header | processthreadsapi.h |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |