Справка о защите от эксплойтовExploit Protection Reference

Область применения:Applies to:

Хотите испытать Microsoft Defender для конечной точки?Want to experience Microsoft Defender for Endpoint? Зарегистрився для бесплатной пробной.Sign up for a free trial.

Защита от эксплойтов обеспечивает расширенные средства защиты для приложений, которые ИТ-профессионал может применять после компиляции и распространения программного обеспечения разработчиком.Exploit protection provides advanced protections for applications that the IT Pro can apply after the developer has compiled and distributed the software.

В этой статье вы сможете понять, как работает защита от эксплойтов как на уровне политики, так и на уровне отдельных мер по смягчению последствий, чтобы успешно создавать и применять политики защиты от эксплойтов.This article helps you understand how exploit protection works, both at the policy level and at the individual mitigation level, to help you successfully build and apply Exploit Protection policies.

Как применяются меры по смягчению последствийHow mitigations are applied

В приложении применяются меры по смягчению последствий защиты от эксплойтов.Exploit Protection mitigations are applied per application.

Меры по смягчению последствий настраиваются с помощью записи реестра для каждой программы, для которых настроены средства защиты.Mitigations are configured via a registry entry for each program that you configure protections for. Эти параметры хранятся в записи реестра MitigationOptions для каждой программы (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Параметры выполнения файлов изображений \ ImageFileName \ MitigationOptions).These settings are stored in the MitigationOptions registry entry for each program (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ ImageFileName \ MitigationOptions). Они вступает в силу при перезапуске программы и остаются эффективными до тех пор, пока вы не измените ее и снова перезапустите программу.They take effect when you restart the program and remain effective until you change them and restart the program again.

Важно!

Параметры выполнения файлов изображений позволяют указать только имя или путь файла, а не номер версии, архитектуру или любой другой дифференциатор.Image File Execution Options only allows you to specify a file name or path, and not a version number, architecture, or any other differentiator. Будьте осторожны, чтобы нацелить смягчение последствий на приложения с уникальными именами или путями, применяя их только на устройствах, где вы протестировали эту версию и архитектуру приложения.Be careful to target mitigations to apps which have unique names or paths, applying them only on devices where you have tested that version and that architecture of the application.

При настройке смягчения защиты от эксплойтов с помощью XML-файла конфигурации с помощью PowerShell, Групповой политики или MDM при обработке этого XML-файла конфигурации для вас будут настроены отдельные параметры реестра.If you configure exploit protection mitigations using an XML configuration file, either via PowerShell, Group Policy, or MDM, when processing this XML configuration file, individual registry settings will be configured for you.

Если политика распространения XML-файла больше не выполняется, параметры, развернутые этим файлом конфигурации XML, автоматически не удаляются.When the policy distributing the XML file is no longer enforced, settings deployed by this XML configuration file will not be automatically removed. Чтобы удалить параметры exploit Protection, экспортировать конфигурацию XML с чистого устройства Windows 10 и развернуть новый XML-файл.To remove Exploit Protection settings, export the XML configuration from a clean Windows 10 device, and deploy this new XML file. Кроме того, Корпорация Майкрософт предоставляет XML-файл в рамках базовых показателей безопасности Windows для сброса параметров защиты от эксплойтов.Alternately, Microsoft provides an XML file as part of the Windows Security Baselines for resetting Exploit Protection settings.

Чтобы сбросить параметры защиты эксплойтов с помощью PowerShell, можно использовать следующую команду:To reset exploit protection settings using PowerShell, you could use the following command:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

Ниже приводится EP-reset.xml с базовыми показателями безопасности Windows:Following is the EP-reset.xml distributed with the Windows Security Baselines:

<?xml version="1.0" encoding="UTF-8"?>
<MitigationPolicy>
  <AppConfig Executable="ONEDRIVE.EXE">
    <DEP OverrideDEP="false" />
    <ASLR OverrideRelocateImages="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
  </AppConfig>
  <AppConfig Executable="firefox.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
  </AppConfig>
  <AppConfig Executable="fltldr.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
    <ChildProcess OverrideChildProcess="false" />
  </AppConfig>
  <AppConfig Executable="GROOVE.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
    <ChildProcess OverrideChildProcess="false" />
  </AppConfig>
  <AppConfig Executable="Acrobat.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="AcroRd32.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="chrome.exe">
    <DEP OverrideDEP="false" />
  </AppConfig>
  <AppConfig Executable="EXCEL.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="iexplore.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="INFOPATH.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="java.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="javaw.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="javaws.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="LYNC.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="MSACCESS.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="MSPUB.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="OIS.EXE">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="OUTLOOK.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="plugin-container.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="POWERPNT.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="PPTVIEW.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="VISIO.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="VPREVIEW.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="WINWORD.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="wmplayer.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="wordpad.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
</MitigationPolicy>

Справка о смягчении последствийMitigation Reference

В следующих разделах подробно рассматриваются меры защиты, предоставляемые каждым смягчением защиты от эксплойтов, соображения совместимости для смягчения и доступные параметры конфигурации.The following sections detail the protections provided by each exploit protection mitigation, the compatibility considerations for the mitigation, and the configuration options available.

Произвольный охранник кодаArbitrary code guard

ОписаниеDescription

Произвольный охранник кода помогает защититься от злоумышленника, загружающего код по своему выбору в память с помощью уязвимости в области безопасности памяти и возможности выполнения этого кода.Arbitrary code guard helps protect against a malicious attacker loading the code of their choice into memory through a memory safety vulnerability and being able to execute that code.

Защита произвольного кода защищает приложение от выполнения динамического кода (код, который не загружается, например, от самого exe или dll).Arbitrary code guard protects an application from executing dynamically generated code (code that is not loaded, for example, from the exe itself or a dll). Произвольный охранник кода работает, не мешая пометить память как исполняемую.Arbitrary code guard works by preventing memory from being marked as executable. Когда приложение пытается выделить память,мы проверяем флаги защиты.When an application attempts to allocate memory, we check the protection flags. (Память может быть выделена с помощью флагов чтения, записи и/или выполнения.) Если выделение пытается включить флаг защиты выполнения, выделение памяти не выполняется и возвращает код ошибки (STATUS_DYNAMIC_CODE_BLOCKED).(Memory can be allocated with read, write, and/or execute protection flags.) If the allocation attempts to include the execute protection flag, then the memory allocation fails and returns an error code (STATUS_DYNAMIC_CODE_BLOCKED). Аналогичным образом, если приложение пытается изменить уже выделенные флаги памяти и включает флаг защиты выполнения, изменение разрешения не выполняется и возвращает код ошибки (STATUS_DYNAMIC_CODE_BLOCKED).Similarly, if an application attempts to change the protection flags of memory that has already been allocated and includes the execute protection flag, then the permission change fails and returns an error code (STATUS_DYNAMIC_CODE_BLOCKED).

Предотвращая задатку флага выполнения, функция предотвращения выполнения данных Windows 10 может защитить от указания инструкции, задаемого этой памяти и запускаемого кода.By preventing the execute flag from being set, the data execution prevention feature of Windows 10 can then protect against the instruction pointer being set to that memory and running that code.

Соображения совместимостиCompatibility considerations

Произвольный охранник кода не позволяет использовать любую память в качестве исполняемой, что представляет проблему совместимости с такими подходами, как компиляторы Just-in-Time (JIT).Arbitrary code guard prevents allocating any memory as executable, which presents a compatibility issue with approaches such as Just-in-Time (JIT) compilers. Например, большинство современных браузеров будут компилировать JavaScript в исходный код, чтобы оптимизировать производительность.Most modern browsers, for example, will compile JavaScript into native code in order to optimize performance. Чтобы поддержать это смягчение, их необходимо перезахотрить, чтобы переместить компиляцию JIT за пределы защищенного процесса.In order to support this mitigation, they will need to be rearchitected to move the JIT compilation outside of the protected process. Другие приложения, дизайн которых динамически генерирует код из скриптов или других промежуточных языков, также несовместимы с этим смягчением.Other applications whose design dynamically generates code from scripts or other intermediate languages will be similarly incompatible with this mitigation.

Параметры конфигурацииConfiguration options

Разрешить отказ от потока — можно настроить смягчение, чтобы отдельный поток отказался от этой защиты.Allow thread opt-out - You can configure the mitigation to allow an individual thread to opt-out of this protection. Разработчик должен был написать приложение с пониманием этого смягчения и назвать API SetThreadInformation с параметром ThreadInformation, заданным ThreadDynamicCodePolicy, чтобы иметь возможность выполнять динамический код в этом потоке.The developer must have written the application with awareness of this mitigation, and have called the SetThreadInformation API with the ThreadInformation parameter set to ThreadDynamicCodePolicy in order to be allowed to execute dynamic code on this thread.

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Защитнике для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Defender for Endpoint.

Блокировка изображений с низкой целостностьюBlock low integrity images

ОписаниеDescription

Блокировка изображений с низкой целостностью не позволяет приложению загружать файлы, которые не соответствуют действительности, как правило, потому, что они были загружены из Интернета из браузера с песочницами.Block low integrity images prevents the application from loading files that are untrusted, typically because they have been downloaded from the internet from a sandboxed browser.

Это смягчение будет блокировать нагрузки на изображение, если на изображении есть запись управления доступом (ACE), которая предоставляет доступ к низким il-процессам и не имеет ACE метки доверия.This mitigation will block image loads if the image has an Access Control Entry (ACE) which grants access to Low IL processes and which does not have a trust label ACE. Он реализуется диспетчером памяти, который блокирует, чтобы файл не был соедем в память.It is implemented by the memory manager, which blocks the file from being mapped into memory. Если приложение пытается наметить изображение низкой целостности, это вызовет STATUS_ACCESS_DENIED ошибку.If an application attempts to map a low integrity image, it will trigger a STATUS_ACCESS_DENIED error. Сведения о том, как работают уровни целостности, см. в материале Mandatory Integrity Control.For details on how integrity levels work, see Mandatory Integrity Control.

Соображения совместимостиCompatibility considerations

Блокировка изображений с низкой целостностью не позволяет приложению загружать файлы, скачаемые из Интернета.Block low integrity images will prevent the application from loading files that were downloaded from the internet. Если рабочий процесс приложения требует загрузки скачаемых изображений, необходимо убедиться, что они загружены из процесса с более высоким доверием или явно перезаверяются, чтобы применить это смягчение.If your application workflow requires loading images that are downloaded, you will want to ensure that they are downloaded from a higher-trust process, or are explicitly relabeled in order to apply this mitigation.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Блокировка удаленных изображенийBlock remote images

ОписаниеDescription

Блокировка удаленных изображений помогает предотвратить загрузку файлов, которые находятся на удаленном устройстве, например на совместном сайте UNC.Blocking remote images helps to prevent the application from loading files that are hosted on a remote device, such as a UNC share. Блокировка удаленных изображений помогает защитить от загрузки секонденс в память, которая находится на внешнем устройстве, управляемом злоумышленником.Blocking remote images helps protect against loading binaries into memory that are on an external device controlled by the attacker.

Это смягчение будет блокировать нагрузки на изображение, если будет определено, что изображение находится на удаленном устройстве.This mitigation will block image loads if the image is determined to be on a remote device. Он реализуется диспетчером памяти, который блокирует, чтобы файл не был соедем в память.It is implemented by the memory manager, which blocks the file from being mapped into memory. Если приложение пытается составить карту удаленного файла, это вызовет STATUS_ACCESS_DENIED ошибку.If an application attempts to map a remote file, it will trigger a STATUS_ACCESS_DENIED error.

Соображения совместимостиCompatibility considerations

Блокировка удаленных изображений не позволит приложению загружать изображения с удаленных устройств.Block remote images will prevent the application from loading images from remote devices. Если приложение загружает файлы или плагины с удаленных устройств, оно не будет совместимо с этим смягчением.If your application loads files or plug-ins from remote devices, then it will not be compatible with this mitigation.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Блокировка ненарушимого шрифтаBlock untrusted fonts

ОписаниеDescription

Блокировка ненарушенной шрифтов снижает риск ошибки при размыве шрифтов, что приводит к возможности злоумышленника запускать код на устройстве.Block untrusted fonts mitigates the risk of a flaw in font parsing leading to the attacker being able to run code on the device. Только шрифты, установленные в каталоге windows\fonts, будут загружены для обработки GDI.Only fonts that are installed into the windows\fonts directory will be loaded for processing by GDI.

Это смягчение реализуется в GDI, который проверяет расположение файла.This mitigation is implemented within GDI, which validates the location of the file. Если файл не находится в каталоге системных шрифтов, шрифт не загружается для размывки, и вызов не будет работать.If the file is not in the system fonts directory, the font will not be loaded for parsing and that call will fail.

Это смягчение является дополнением к встроенной меры по смягчению последствий, предоставляемой в Windows 10 1607 и более поздней версии, которая перемещает размыв шрифтов из ядра и в контейнер приложений в пользовательском режиме.This mitigation is in addition to the built-in mitigation provided in Windows 10 1607 and later, which moves font parsing out of the kernel and into a user-mode app container. Любой эксплойт, основанный на размыве шрифтов, происходит в изолированном и изолированном контексте, что значительно снижает риск.Any exploit based on font parsing, as a result, happens in a sandboxed and isolated context, which reduces the risk significantly. Подробные сведения об этом смягчении см. в блоге Hardening Windows 10 с нулевымиднями смягчения последствий эксплойта.For details on this mitigation, see the blog Hardening Windows 10 with zero-day exploit mitigations.

Соображения совместимостиCompatibility considerations

Наиболее распространенным использованием шрифтов за пределами каталога системных шрифтов является использование веб-шрифтов.The most common use of fonts outside of the system fonts directory is with web fonts. Современные браузеры, такие как Microsoft Edge, используют DirectWrite вместо GDI и не влияют на них.Modern browsers, such as Microsoft Edge, use DirectWrite instead of GDI, and are not impacted. Однако устаревшие браузеры, такие как Internet Explorer 11 (и режим IE в новом Microsoft Edge), могут влиять, особенно с приложениями, такими как Office 365, которые используют глифы шрифтов для отображения пользовательского интерфейса.However, legacy browsers, such as Internet Explorer 11 (and IE mode in the new Microsoft Edge) can be impacted, particularly with applications such as Office 365, which use font glyphs to display UI.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Охрана целостности кодаCode integrity guard

ОписаниеDescription

Охрана целостности кода гарантирует, что все биналоги, загруженные в процесс, будут подписаны Корпорацией Майкрософт в цифровом формате.Code integrity guard ensures that all binaries loaded into a process are digitally signed by Microsoft. Охрана целостности кода включает подписи WHQL (Лаборатории качества оборудования Windows), которые позволят драйверам, утвержденным WHQL, работать в процессе.Code integrity guard includes WHQL (Windows Hardware Quality Labs) signatures, which will allow WHQL-approved drivers to run within the process.

Это смягчение реализуется в диспетчере памяти, что блокирует двоичную карту в память.This mitigation is implemented within the memory manager, which blocks the binary from being mapped into memory. Если вы попытаетесь загрузить двоичный файл, который не подписан Корпорацией Майкрософт, ясль памяти возвращает ошибку STATUS_INVALID_IMAGE_HASH.If you attempt to load a binary that is not signed by Microsoft, the memory manger will return the error STATUS_INVALID_IMAGE_HASH. Блокируя на уровне диспетчера памяти, это предотвращает загрузку обоих бинарей процессом, а также впрыскиваемого в процесс.By blocking at the memory manager level, this prevents both binaries loaded by the process and binaries injected into the process.

Соображения совместимостиCompatibility considerations

Это смягчение конкретно блокирует любые двоичные, которые не подписаны Корпорацией Майкрософт.This mitigation specifically blocks any binary that is not signed by Microsoft. Таким образом, оно будет несовместимо с большинством сторонних программ, если это программное обеспечение не будет распространяться (и подписывался в цифровом формате) Microsoft Store, и будет выбран вариант, позволяющий загружать изображения, подписанные в Microsoft Store.As such, it will be incompatible with most third-party software, unless that software is distributed by (and digitally signed by) the Microsoft Store, and the option to allow loading of images signed by the Microsoft Store is selected.

Параметры конфигурацииConfiguration options

Кроме того, разрешить загрузку изображений, подписанных Microsoft Store . Приложения, распространяемых в Microsoft Store, будут цифрово подписаны в Microsoft Store, а добавление этой конфигурации позволит загружаться приложениями, которые прошли процесс сертификации магазина.Also allow loading of images signed by Microsoft Store - Applications that are distributed by the Microsoft Store will be digitally signed by the Microsoft Store, and adding this configuration will allow binaries that have gone through the store certification process to be loaded by the application.

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Диспетчерская система потока (CFG)Control flow guard (CFG)

ОписаниеDescription

Защита защиты потоков управления (CFG) снижает риск использования злоумышленниками уязвимостей, связанных с повреждениями памяти, за счет защиты непрямых вызовов функций.Control flow guard (CFG) mitigates the risk of attackers using memory corruption vulnerabilities by protecting indirect function calls. Например, злоумышленник может использовать уязвимость переполнения буфера, чтобы переписать память, содержащую указатель функции, и заменить этот указатель функции указателем на исполняемый код по своему выбору (который также может быть введен в программу).For example, an attacker may user a buffer overflow vulnerability to overwrite memory containing a function pointer, and replace that function pointer with a pointer to executable code of their choice (which may also have been injected into the program).

Это смягчение обеспечивается путем введения еще одной проверки во время компиляции.This mitigation is provided by injecting another check at compile time. Перед каждым косвенным вызовом функции добавляются другие инструкции, которые проверяют, является ли целевой объект вызова допустимой перед вызовом.Before each indirect function call, another instructions are added which verify that the target is a valid call target before it is called. Если цель не является допустимой целью вызова, приложение прекращается.If the target is not a valid call target, then the application is terminated. Таким образом, только приложения, которые компилироваться с поддержкой CFG может извлечь выгоду из этого смягчения.As such, only applications that are compiled with CFG support can benefit from this mitigation.

Проверка допустимой цели предоставляется ядром Windows.The check for a valid target is provided by the Windows kernel. При загрузке исполняемых файлов метаданные для непрямых целей вызова извлекаются во время нагрузки и помечены как допустимые цели вызова.When executable files are loaded, the metadata for indirect call targets is extracted at load time and marked as valid call targets. Кроме того, если память выделена и помечена как исполняемая (например, для сгенерированного кода), эти расположения памяти также помечены как допустимые целевые объекты вызова, чтобы поддерживать механизмы, такие как компиляция JIT.Additionally, when memory is allocated and marked as executable (such as for generated code), these memory locations are also marked as valid call targets, to support mechanisms such as JIT compilation.

Соображения совместимостиCompatibility considerations

Так как приложения должны быть компилироваться для поддержки CFG, они неявно объявляют о своей совместимости с ним.Since applications must be compiled to support CFG, they implicitly declare their compatibility with it. Поэтому большинство приложений должны работать с включенной возможностью смягчения последствий.Most applications, therefore, should work with this mitigation enabled. Поскольку эти проверки скомпилировали в двоичную систему, можно применить конфигурацию, чтобы отключить проверки в ядре Windows.Because these checks are compiled into the binary, the configuration you can apply is merely to disable checks within the Windows kernel. Другими словами, смягчение по умолчанию, но можно настроить ядро Windows, чтобы всегда возвращать "да", если позже вы определите, что существует проблема совместимости, которую разработчик приложения не обнаружил в их тестировании, которая должна быть редкой.In other words, the mitigation is on by default, but you can configure the Windows kernel to always return "yes" if you later determine that there is a compatibility issue that the application developer did not discover in their testing, which should be rare.

Параметры конфигурацииConfiguration options

Используйте строгий CFG . В строгом режиме для загрузки необходимо компилировать все раздвоители, загруженные в процесс, для защиты потока управления (или не иметь в них исполняемого кода ( например, dlls ресурсов).Use strict CFG - In strict mode, all binaries loaded into the process must be compiled for Control Flow Guard (or have no executable code in them - such as resource dlls) in order to be loaded.

Примечание

У охранника потока управления нет режима аудита.Control flow guard has no audit mode. С помощью этого смягчения будут компилироваться binaries.Binaries are compiled with this mitigation enabled.

Предотвращение выполнения данных (DEP)Data Execution Prevention (DEP)

ОписаниеDescription

Предотвращение выполнения данных (DEP) предотвращает выполнение памяти, которая явно не была выделена в качестве исполняемой.Data execution prevention (DEP) prevents memory that was not explicitly allocated as executable from being executed. DEP помогает защититься от впрыскивающего вредоносный код злоумышленника в процесс, например через переполнение буфера, а затем выполняет этот код.DEP helps protect against an attacker injecting malicious code into the process, such as through a buffer overflow, and then executing that code.

При попытке установить указатель инструкции на адрес памяти, не помеченный как исполняемый, процессор выкинуть исключение (нарушение общей защиты), в результате чего приложение сбой.If you attempt to set the instruction pointer to a memory address not marked as executable, the processor will throw an exception (general-protection violation), causing the application to crash.

Соображения совместимостиCompatibility considerations

Все исполняемые ARM, ARM и ARM-64 имеют deP,включенное по умолчанию, и его нельзя отключить.All x64, ARM, and ARM-64 executables have DEP enabled by default, and it cannot be disabled. Так как приложение никогда не было выполнено без DEP, предполагается совместимость.Since an application will have never been executed without DEP, compatibility is assumed.

Все двухядрая x86 (32-битные) имеют deP-функции, включенные по умолчанию, но deP можно отключить в процессе.All x86 (32-bit) binaries have DEP enabled by default, but DEP can be disabled per process. Некоторые старые устаревшие приложения, как правило, приложения, разработанные до Windows XP SP2, могут быть несовместимы с DEP.Some old legacy applications, typically applications developed prior to Windows XP SP2, might not be compatible with DEP. Такие приложения обычно генерируют код динамически (например, компилятор JIT) или ссылки на более старые библиотеки (например, старые версии ATL), которые динамически создают код.Such applications typically generate code dynamically (for example, JIT compiling) or link to older libraries (such as older versions of ATL) which dynamically generate code.

Параметры конфигурацииConfiguration options

Включить эмуляцию ATL Thunk . Этот параметр настройки отключает эмуляцию ATL Thunk.Enable ATL Thunk emulation - This configuration option disables ATL Thunk emulation. ATL, библиотека ActiveX шаблонов, разработана так, чтобы быть как можно меньше и быстрее.ATL, the ActiveX Template Library, is designed to be as small and fast as possible. Чтобы уменьшить двоичный размер, он будет использовать метод thunking.In order to reduce binary size, it would use a technique called thunking. Thunking обычно используется для взаимодействия между 32-битными и 16-битными приложениями, но 16-битные компоненты ATL здесь не используются.Thunking is typically thought of for interacting between 32-bit and 16-bit applications, but there are no 16-bit components to ATL here. Вместо этого, чтобы оптимизировать двоичный размер, ATL будет хранить машинный код в памяти, не выровненной словом (создание меньшего двоичного), а затем вызывать код напрямую.Rather, in order to optimize for binary size, ATL will store machine code in memory that is not word-aligned (creating a smaller binary), and then invoke that code directly. Компоненты ATL Visual Studio 7.1 или более ранние (Visual Studio 2003 г.) не выделяют эту память как исполняемую — эмуляция thunk устраняет эту проблему совместимости.ATL components compiled with Visual Studio 7.1 or earlier (Visual Studio 2003) do not allocate this memory as executable - thunk emulation resolves that compatibility issue. Приложениям с двоичной моделью расширения (например, Internet Explorer 11) часто требуется включить эмуляцию ATL Thunk.Applications that have a binary extension model (such as Internet Explorer 11) will often need to have ATL Thunk emulation enabled.

Отключение точек расширенияDisable extension points

ОписаниеDescription

Это смягчение отключает различные точки расширения для приложения, которые могут использоваться для установления сохраняемости или повышения привилегий вредоносного контента.This mitigation disables various extension points for an application, which might be used to establish persistence or elevate privileges of malicious content.

К ним относятся:This includes:

  • DLLs AppInit . Всякий раз, когда начинается процесс, система загружает указанный DLL в контекст только что запущенного процесса, прежде чем вызывать его функцию точки входа.AppInit DLLs - Whenever a process starts, the system will load the specified DLL into to context of the newly started process before calling its entry point function. Подробные сведения о DLLs AppInit можно найти здесь.Details on AppInit DLLs can be found here. При применении этого смягчения не загружаются DLLs AppInit.With this mitigation applied, AppInit DLLs are not loaded. Начиная с Windows 7, DLLs AppInit необходимо подписыть в цифровом формате, как описано здесь.Beginning with Windows 7, AppInit DLLs need to be digitally signed, as described here. Кроме того, начиная с Windows 8, DLLs AppInit не загружается, если включен SecureBoot, как описано здесь.Additionally, beginning with Windows 8, AppInit DLLs will not be loaded if SecureBoot is enabled, as described here.
  • Устаревшие imEs — редактор метода ввода (IME) позволяет пользователю вводить текст на языке с большей буквой, чем может быть представлено на клавиатуре.Legacy IMEs - An Input Method Editor (IME) allows a user to type text in a language that has more characters than can be represented on a keyboard. Сторонние стороны могут создавать imEs.Third parties are able to create IMEs. Вредоносный IME может получить учетные данные или другую конфиденциальную информацию из этого ввода захвата.A malicious IME might obtain credentials or other sensitive information from this input capture. Некоторые imEs, именуемые устаревшими imEs, будут работать только на приложениях для настольных компьютеров Windows, а не на приложениях UWP.Some IMEs, referred to as Legacy IMEs, will only work on Windows Desktop apps, and not UWP apps. Это смягчение также предотвратит загрузку этого устаревшего IME в указанное приложение для Windows Desktop.This mitigation will also prevent this legacy IME from loading into the specified Windows Desktop app.
  • Крючки событий Windows . Приложение может вызвать API SetWinEventHook, чтобы зарегистрировать интерес к событию, которое происходит.Windows Event Hooks - An application can call the SetWinEventHook API to register interest in an event taking place. Указывается DLL, который можно ввести в процесс.A DLL is specified and can be injected into the process. Это смягчение заставляет крючок быть размещен в процессе регистрации, а не работать в процессе через впрыскивал DLL.This mitigation forces the hook to be posted to the registering process rather than running in-process through an injected DLL.

Соображения совместимостиCompatibility considerations

Большинство из этих точек расширения используются относительно редко, поэтому влияние на совместимость обычно невелико, особенно на уровне отдельных приложений.Most of these extension points are relatively infrequently used, so compatibility impact is typically small, particularly at an individual application level. Одно из них состоит в том, если пользователи используют сторонние imEs Legacy, которые не будут работать с защищенным приложением.The one consideration is if users are using third-party Legacy IMEs that will not work with the protected application.

Параметры конфигурацииConfiguration options

Параметры конфигурации для этого смягчения не существуют.There are no configuration options for this mitigation.

Примечание

Отключение точек расширения не имеет режима аудита.Disable extension points has no audit mode.

Отключение вызовов системы Win32kDisable Win32k system calls

ОписаниеDescription

Win32k.sys предоставляет широкую поверхность атаки для злоумышленника.Win32k.sys provides a broad attack surface for an attacker. В качестве компонента режима ядра он часто используется в качестве вектора эвакуации для приложений, которые находятся в песочнице.As a kernel-mode component, it is frequently targeted as an escape vector for applications that are sandboxed. Это смягчение предотвращает вызовы win32k.sys, блокируя преобразование потока в поток GUI, который затем предоставляется доступ для вызова функций Win32k.This mitigation prevents calls into win32k.sys by blocking a thread from converting itself into a GUI thread, which is then given access to invoke Win32k functions. Поток не является GUI при его создания, но преобразуется при первом вызове в win32k.sys или через вызов API в IsGuiThread.A thread is non-GUI when created, but converted on first call to win32k.sys, or through an API call to IsGuiThread.

Соображения совместимостиCompatibility considerations

Это смягчение предназначено для процессов, посвященных процессам, не относячим к пользовательскому интерфейсу.This mitigation is designed for processes that are dedicated non-UI processes. Например, многие современные браузеры будут использовать процесс изоляции и включать процессы, не включаемые в пользовательский интерфейс.For example, many modern browsers will use process isolation and incorporate non-UI processes. Любое приложение, которое отображает GUI с помощью одного процесса, будет влиять на это смягчение.Any application that displays a GUI using a single process will be impacted by this mitigation.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Не разрешайте детские процессыDo not allow child processes

ОписаниеDescription

Это смягчение не позволяет приложению создавать новые детские приложения.This mitigation prevents an application from creating new child applications. Распространенным методом, используемым противниками, является инициирование доверенного процесса на устройстве с вредоносным вводом (атакой ,живущую за счет земли), которая часто требует запуска другого приложения на устройстве.A common technique used by adversaries is to initiate a trusted process on the device with malicious input (a "living off the land" attack), which often requires launching another application on the device. Если нет законных причин, по которым приложение запускает детский процесс, это смягчение смягчает потенциальный вектор атаки.If there are no legitimate reasons why an application would launch a child process, this mitigation mitigates that potential attack vector. Смягчение применяется путем установки свойства на маркере процесса, которое блокирует создание маркера для процесса ребенка с сообщением об ошибке STATUS_CHILD_PROCESS_BLOCKED.The mitigation is applied by setting a property on the process token, which blocks creating a token for the child process with the error message STATUS_CHILD_PROCESS_BLOCKED.

Соображения совместимостиCompatibility considerations

Если приложение запускает детские приложения по какой-либо причине, например поддерживающие гиперссылки, которые запускают браузер или внешний браузер, или запускают другие утилиты на компьютере, эта функция будет нарушена с помощью этого смягчения.If your application launches child applications for any reason, such as supporting hyperlinks that launch a browser or an external browser, or which launch other utilities on the computer, this functionality will be broken with this mitigation applied.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Фильтрация адресов экспортаExport address filtering

ОписаниеDescription

Фильтрация адресов экспорта (EAF) снижает риск вредоносных кодов, глядя на таблицу адресов экспорта всех загруженных модулей, чтобы найти модули, содержащие полезные API для их атаки.Export address filtering (EAF) mitigates the risk of malicious code looking at the export address table of all loaded modules to find modules that contain useful APIs for their attack. Это распространенная тактика, используемая в коде shellcode.This is a common tactic used by shellcode. Чтобы снизить риск подобной атаки, это смягчение защиты защищает три часто атакуемого модуля:In order to mitigate the risk of such an attack, this mitigation protects three commonly attacked modules:

  • ntdll.dllntdll.dll
  • kernelbase.dllkernelbase.dll
  • kernel32.dllkernel32.dll

Смягчение последствий защищает страницу памяти в [экспортируемом каталоге, который указывает на таблицу адресов экспорта.The mitigation protects the memory page in the [export directory that points to the export address table. На этой странице памяти будет применена PAGE_GUARD защита.This memory page will have the PAGE_GUARD protection applied to it. Когда кто-то пытается получить доступ к этой памяти, он будет создавать STATUS_GUARD_PAGE_VIOLATION.When someone tries to access this memory, it will generate a STATUS_GUARD_PAGE_VIOLATION. Это исключение обрабатывается, и если инструкция доступа не проходит проверку, процесс будет прекращен.The mitigation handles this exception, and if the accessing instruction doesn't pass validation, the process will be terminated.

Соображения совместимостиCompatibility considerations

Это смягчение является в первую очередь проблемой для таких приложений, как отладки, песочницы приложений, приложений с использованием DRM или приложений, реализующих технологию отладки.This mitigation is primarily an issue for applications such as debuggers, sandboxed applications, applications using DRM, or applications that implement anti-debugging technology.

Параметры конфигурацииConfiguration options

Проверка доступа к модулям, которые часто используются в эксплойтах, — этот параметр, также известный как EAF+, добавляет защиты для других часто атакованых модулей:Validate access for modules that are commonly abused by exploits - This option, also known as EAF+, adds protections for other commonly attacked modules:

  • mshtml.dll
  • flash*.ocx
  • jscript*.ocx
  • vbscript.dll
  • vgx.dll
  • mozjs.dll
  • xul.dll
  • acrord32.dll
  • acrofx32.dll
  • acroform.api

Кроме того, включив EAF+, это смягчение добавляет защиту PAGE_GUARD на страницу, содержащую загон "MZ", первые два bytes of the DOS header in a PE file, which is another aspect of known memory content which shellcode can look for to identify modules potentially interest in memory.Additionally, by enabling EAF+, this mitigation adds the PAGE_GUARD protection to the page containing the "MZ" header, the first two bytes of the DOS header in a PE file, which is another aspect of known memory content which shellcode can look for to identify modules potentially of interest in memory.

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Force randomization for images (Mandatory ASLR)Force randomization for images (Mandatory ASLR)

ОписаниеDescription

Рандомизация макета адресов (ASLR) снижает риск использования злоумышленником знаний о макете памяти системы для выполнения кода, который уже присутствует в памяти процесса и уже помечен как исполняемый.Address Space Layout Randomization (ASLR) mitigates the risk of an attacker using their knowledge of the memory layout of the system in order to execute code that is already present in process memory and already marked as executable. Это может снизить риск злоумышленника с помощью таких методов, как атаки return-to-libc, где противник задает контекст, а затем изменяет ответный адрес для выполнения существующего кода с контекстом, который соответствует цели противника.This can mitigate the risk of an attacker using techniques such as return-to-libc attacks, where the adversary sets the context and then modifies the return address to execute existing code with context that suits the adversary's purpose.

Обязательный ASLR заставляет повторно использовать все DLLs в процессе.Mandatory ASLR forces a rebase of all DLLs within the process. Разработчик может включить ASLR с помощью параметра linker /DYNAMICBASE, и это смягчение имеет тот же эффект.A developer can enable ASLR using the /DYNAMICBASE linker option, and this mitigation has the same effect.

При сопоставлении диспетчера памяти в изображении в процесс обязательный ASLR принудительно перебазирует DLLs и EXEs, которые не выбрали asLR.When the memory manager is mapping in the image into the process, Mandatory ASLR will forcibly rebase DLLs and EXEs that have not opted in to ASLR. Обратите внимание, однако, что эта rebasing не имеет энтропии, и поэтому может быть размещена в предсказуемом расположении в памяти.Note, however, that this rebasing has no entropy, and can therefore be placed at a predictable location in memory. Для повторного и рандомизированного расположения бинарей, это смягчение должно быть сопряжено с распределением памяти Randomize (Снизу вверх ASLR).For rebased and randomized location of binaries, this mitigation should be paired with Randomize memory allocations (Bottom-up ASLR).

Соображения совместимостиCompatibility considerations

Это влияние на совместимость ASLR обычно ограничивается более старыми приложениями, которые были построены с помощью компиляторов, которые сделали предположения о базовом адресе двоичного файла или лишили базовой информации о переносе.This compatibility impact of ASLR is typically constrained to older applications that were built using compilers that made assumptions about the base address of a binary file or have stripped out base relocation information. Это может привести к непредсказуемым ошибкам, так как поток выполнения пытается перейти к ожидаемому, а не фактическому расположению в памяти.This can lead to unpredictable errors as the execution flow attempts to jump to the expected, rather than the actual, location in memory.

Параметры конфигурацииConfiguration options

Не допускайте раздельных изображений — этот параметр блокирует загрузку изображений, которые были лишены данных о переносе.Do not allow stripped images - This option blocks the loading of images that have had relocation information stripped. Формат файлов Windows PE содержит абсолютные адреса, а компилятор также создает [базовую таблицу перемещения, которую погрузчик может использовать для поиска всех относительных ссылок памяти и их смещения, поэтому они могут быть обновлены, если двоичный не загружается по предпочтительному базовому адресу.The Windows PE file format contains absolute addresses, and the compiler also generates a [base relocation table that the loader can use to find all relative memory references and their offset, so they can be updated if the binary does not load at its preferred base address. Некоторые старые приложения вымежают эту информацию в производственных сборках, и поэтому эти биналоги не могут быть переопостановками.Some older applications strip out this information in production builds, and therefore these binaries cannot be rebased. Это смягчение блокирует загрузку таких бинарей (вместо того, чтобы разрешить им загружать по предпочтительному базовому адресу).This mitigation blocks such binaries from being loaded (instead of allowing them to load at their preferred base address).

Примечание

Принудительное рандомизация изображений (обязательный ASLR) не имеет режима аудита.Force randomization for images (Mandatory ASLR) has no audit mode.

Фильтрация адресов импорта (IAF)Import address filtering (IAF)

ОписаниеDescription

Смягчение фильтрации импортных адресов (IAF) помогает снизить риск того, что противник изменит поток управления приложения путем изменения таблицы адресов импорта (IAT) для перенаправления в произвольный код выбора злоумышленника, когда эта функция будет вызвана.The import address filtering (IAF) mitigation helps mitigate the risk of an adversary changing the control flow of an application by modifying the import address table (IAT) to redirect to arbitrary code of the attacker's choice when that function is called. Злоумышленник может использовать этот подход для перехвата управления или перехвата, проверки и потенциальной блокировки вызовов для конфиденциальных API.An attacker could use this approach to hijack control, or to intercept, inspect, and potentially block calls to sensitive APIs.

На страницах памяти для всех защищенных API будет применена PAGE_GUARD защита.The memory pages for all protected APIs will have the PAGE_GUARD protection applied to them. Когда кто-то пытается получить доступ к этой памяти, он будет создавать STATUS_GUARD_PAGE_VIOLATION.When someone tries to access this memory, it will generate a STATUS_GUARD_PAGE_VIOLATION. Это исключение обрабатывается, и если инструкция доступа не проходит проверку, процесс будет прекращен.The mitigation handles this exception, and if the accessing instruction doesn't pass validation, the process will be terminated.

Это смягчение защищает следующие API Windows:This mitigation protects the following Windows APIs:

  • GetProcAddress
  • GetProcAddressForCaller
  • LoadLibraryA
  • LoadLibraryExA
  • LoadLibraryW
  • LoadLibraryExW
  • LdrGetProcedureAddress
  • LdrGetProcedureAddressEx
  • LdrGetProcedureAddressForCaller
  • LdrLoadDll
  • VirtualProtect
  • VirtualProtectEx
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • NtProtectVirtualMemory
  • CreateProcessA
  • CreateProcessW
  • WinExec
  • CreateProcessAsUserA
  • CreateProcessAsUserW
  • GetModuleHandleA
  • GetModuleHandleW
  • RtlDecodePointer
  • DecodePointer

Соображения совместимостиCompatibility considerations

Законные приложения, которые выполняют перехват API, могут быть обнаружены в результате этого смягчения и привести к сбою некоторых приложений.Legitimate applications that perform API interception may be detected by this mitigation and cause some applications to crash. Примеры включают прошивки совместимости программного обеспечения и приложений.Examples include security software and application compatibility shims.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Рандомизация распределений памяти (ASLR снизу вверх)Randomize memory allocations (Bottom-up ASLR)

ОписаниеDescription

Рандомизация распределений памяти (ASLR снизу вверх) добавляет энтропию к перемещениям, поэтому их расположение рандомизировано и, следовательно, менее предсказуемо.Randomize memory allocations (Bottom-up ASLR) adds entropy to relocations, so their location is randomized and therefore less predictable. Это смягчение требует, чтобы вступил в силу обязательный asLR.This mitigation requires Mandatory ASLR to take effect.

Размер 32-битного адресного пространства ставит практические ограничения для энтропии, которая может быть добавлена, и поэтому 64-битные приложения затрудняет для злоумышленника угадать расположение в памяти.The size of the 32-bit address space places practical constraints on the entropy that can be added, and therefore 64-bit applications make it more difficult for an attacker to guess a location in memory.

Соображения совместимостиCompatibility considerations

Большинство приложений, совместимых с обязательной asLR (rebasing), также совместимы с другими энтропиями ASLR bottom-up.Most applications that are compatible with Mandatory ASLR (rebasing) are also compatible with the other entropy of Bottom-up ASLR. В некоторых приложениях могут возникнуть проблемы с указкой-обрезкой, если они сэкономят локальные указатели в 32-битных переменных (ожидается базовый адрес ниже 4 ГБ), что будет несовместимо с вариантом высокой энтропии (который можно отключить).Some applications may have pointer-truncation issues if they are saving local pointers in 32-bit variables (expecting a base address below 4 GB), and thus will be incompatible with the high entropy option (which can be disabled).

Параметры конфигурацииConfiguration options

Не используйте высокую энтропию — этот параметр отключает использование ASLR с высокой энтропией, которая добавляет 24 бита энтропии (1 ТБ дисперсии) в распределение снизу вверх для 64-битных приложений.Don't use high entropy - this option disables the use of high-entropy ASLR, which adds 24 bits of entropy (1 TB of variance) into the bottom-up allocation for 64-bit applications.

Примечание

Рандомизация распределений памяти (ASLR снизу вверх) не имеет режима аудита.Randomize memory allocations (Bottom-up ASLR) has no audit mode.

Имитация выполнения (SimExec)Simulate execution (SimExec)

ОписаниеDescription

Имитация выполнения (SimExec) — это смягчение только для 32-битных приложений.Simulate execution (SimExec) is a mitigation for 32-bit applications only. Это позволяет проверить, что вызовы конфиденциальных API возвращаются к законным функциям вызываемой звонков.This helps validate that calls to sensitive APIs will return to legitimate caller functions. Это делается путем перехвата вызовов в конфиденциальные API, а затем моделирования выполнения этих API, пройдя через закодированные инструкции по языку сборки, ищем инструкцию RET, которая должна вернуться к вызываемой.It does this by intercepting calls into sensitive APIs, and then simulating the execution of those APIs by walking through the encoded assembly language instructions looking for the RET instruction, which should return to the caller. Затем он проверяет эту функцию и идет в обратном направлении в памяти, чтобы найти предшествующие инструкции call, чтобы определить, совпадает ли функция и инструкция по вызову, и что reT не был перехвачен.It then inspects that function and walks backwards in memory to find the preceding CALL instruction to determine whether the function and CALL instruction match, and that the RET hasn't been intercepted.

API, перехваченные этим смягчением, являются:The APIs intercepted by this mitigation are:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Если обнаружен гаджет ROP, процесс завершается.If a ROP gadget is detected, the process is terminated.

Соображения совместимостиCompatibility considerations

Приложения, которые выполняют перехват API, в частности программное обеспечение безопасности, могут вызвать проблемы совместимости с этим смягчением.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Это смягчение несовместимо с произвольным смягчением защиты кода.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Проверка вызова API (CallerCheck)Validate API invocation (CallerCheck)

ОписаниеDescription

Проверка вызова API (CallerCheck) — это смягчение последствий для методов программирования с возвращаемой ориентацией (ROP), которые проверяют, вызывались ли конфиденциальные API от действительного вызываемого.Validate API invocation (CallerCheck) is a mitigation for return-oriented programming (ROP) techniques that validates that sensitive APIs were called from a valid caller. Это смягчение проверяет пройденный обратный адрес, а затем похулиганно разберется назад, чтобы найти вызов над обратным адресом, чтобы определить, соответствует ли целевой вызову параметр, переданный в функцию.This mitigation inspects the passed return address, and then heuristically disassembles backwards to find a call above the return address to determine if the call target matches the parameter passed into the function.

API, перехваченные этим смягчением, являются:The APIs intercepted by this mitigation are:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Если обнаружен гаджет ROP, процесс завершается.If a ROP gadget is detected, the process is terminated.

Соображения совместимостиCompatibility considerations

Приложения, которые выполняют перехват API, в частности программное обеспечение безопасности, могут вызвать проблемы совместимости с этим смягчением.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Это смягчение несовместимо с произвольным смягчением защиты кода.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Проверка цепочек исключений (SEHOP)Validate exception chains (SEHOP)

ОписаниеDescription

Проверка цепочек исключений (SEHOP) — это смягчение последствий для метода перезаписи обработника структурированных исключений (SEH).Validate exception chains (SEHOP) is a mitigation against the Structured Exception Handler (SEH) overwrite exploitation technique. Структурированная обработка исключений — это процесс, с помощью которого приложение может попросить обработать определенное исключение.Structured exception handling is the process by which an application can ask to handle a particular exception. Обработчики исключений цепятся вместе, так что если один обработчик исключений не будет обрабатывать определенное исключение, его можно передать следующему обработчику исключений в цепочке до тех пор, пока он не решит обработать его.Exception handlers are chained together, so that if one exception handler chooses not to handle a particular exception, it can be passed on to the next exception handler in the chain until one decides to handle it. Так как список обработок динамический, он хранится в стеке.Because the list of handler is dynamic, it is stored on the stack. Злоумышленник может использовать уязвимость переполнения стека, чтобы переписать обработчик исключений указателем на код выбора злоумышленника.An attacker can use a stack overflow vulnerability to then overwrite the exception handler with a pointer to the code of the attacker's choice.

Это смягчение зависит от разработки SEH, где каждая запись SEH содержит как указатель обработщика исключений, так и указатель на следующий обработщик в цепочке исключений.This mitigation relies on the design of SEH, where each SEH entry contains both a pointer to the exception handler, as well as a pointer to the next handler in the exception chain. Это смягчение вызывается диспетчером исключений, который проверяет цепочку SEH при вызове исключения.This mitigation is called by the exception dispatcher, which validates the SEH chain when an exception is invoked. Он проверяет, что:It verifies that:

  • Все записи цепочки исключений находятся в границах стекаAll exception chain records are within the stack boundaries
  • Все записи исключений выравниваютсяAll exception records are aligned
  • Указатели обработчиков исключений не указывают на стекNo exception handler pointers are pointing to the stack
  • Нет обратных указателейThere are no backward pointers
  • Цепочка исключений заканчивается на известном обработнике окончательного исключенияThe exception chain ends at a known final exception handler

В случае сбоя этих проверки обработка исключений прерывается, и исключение не обрабатывается.If these validations fail, then exception handling is aborted, and the exception will not be handled.

Соображения совместимостиCompatibility considerations

Проблемы совместимости с SEHOP являются относительно редкими.Compatibility issues with SEHOP are relatively rare. Приложение нечасто принимает зависимость от коррупции цепочки исключений.It's uncommon for an application to take a dependency on corrupting the exception chain. Однако на некоторые приложения влияют незначительные изменения во времени, которые могут проявляться как условие гонки, которое выявляет в приложении затаивную многопотоцветную ошибку.However, some applications are impacted by the subtle changes in timing, which may manifest as a race condition that reveals a latent multi-threading bug in the application.

Параметры конфигурацииConfiguration options

Примечание

Проверка цепочек исключений (SEHOP) не имеет режима аудита.Validate exception chains (SEHOP) has no audit mode.

Проверка использования ручкиValidate handle usage

ОписаниеDescription

Проверка использования ручки — это смягчение последствий, которое помогает защититься от злоумышленника с помощью существующей ручки для доступа к защищенного объекта.Validate handle usage is a mitigation that helps protect against an attacker using an existing handle to access a protected object. Ручка — это ссылка на защищенный объект.A handle is a reference to a protected object. Если код приложения ссылается на недействительные ручки, это может указывать на то, что злоумышленник пытается использовать записанную ранее ручку (но о которой учет ссылок приложения не будет знать).If application code is referencing an invalid handle, that could indicate that an adversary is attempting to use a handle it has previously recorded (but which application reference counting wouldn't be aware of). Если приложение пытается использовать недействительный объект, а не просто возвращает null, приложение будет делать исключение (STATUS_INVALID_HANDLE).If the application attempts to use an invalid object, instead of simply returning null, the application will raise an exception (STATUS_INVALID_HANDLE).

Это смягчение автоматически применяется к приложениям Магазина Windows.This mitigation is automatically applied to Windows Store applications.

Соображения совместимостиCompatibility considerations

Приложения, которые не были точно отслеживали ссылки на ручки и не заверяли эти операции в обработчики исключений, потенциально будут влиять на это смягчение.Applications that were not accurately tracking handle references, and which were not wrapping these operations in exception handlers, will potentially be impacted by this mitigation.

Параметры конфигурацииConfiguration options

Примечание

Проверка использования ручки не имеет режима аудита.Validate handle usage has no audit mode.

Проверка целостности кучиValidate heap integrity

ОписаниеDescription

Проверка снижения целостности кучи повышает уровень защиты от последствий кучи в Windows, что приводит к прекращению приложения при обнаружении повреждения кучи.The validate heap integrity mitigation increases the protection level of heap mitigations in Windows, by causing the application to terminate if a heap corruption is detected. К числу смягчающих последствий относятся:The mitigations include:

  • Предотвращение освободить ручку HEAPPreventing a HEAP handle from being freed
  • Выполнение другой проверки в расширенных загонах блока для выделения кучиPerforming another validation on extended block headers for heap allocations
  • Проверка того, что выделение кучи еще не помечено как в использованииVerifying that heap allocations are not already flagged as in-use
  • Добавление страниц охраны к большим выделениям, сегментам кучи и подсетям с минимальным размеромAdding guard pages to large allocations, heap segments, and subsegments above a minimum size

Соображения совместимостиCompatibility considerations

Это смягчение уже применяется по умолчанию для 64-битных приложений и для 32-битных приложений, нацеленных на Windows Vista или более поздней версии.This mitigation is already applied by default for 64-bit applications and for 32-bit applications targeting Windows Vista or later. Устаревшие приложения из Windows XP или более ранних версий являются наиболее рискованными, хотя проблемы с совместимостью встречаются редко.Legacy applications from Windows XP or earlier are most at-risk, though compatibility issues are rare.

Параметры конфигурацииConfiguration options

Примечание

Проверка целостности кучи не имеет режима аудита.Validate heap integrity has no audit mode.

Проверка целостности зависимостей изображенийValidate image dependency integrity

ОписаниеDescription

Проверка смягчения зависимости от изображений помогает защититься от атак, которые пытаются заменить код для dlls, которые статически связаны с windows binaries.The validate image dependency mitigation helps protect against attacks that attempt to substitute code for dlls that are statically linked by Windows binaries. Метод установки DLL злоупотребляет механизмом поиска погрузщика, чтобы ввести вредоносный код, который можно использовать для получения вредоносного кода, запущенного в повышенном контексте.The technique of DLL planting abuses the loader's search mechanism to inject malicious code, which can be used to get malicious code running in an elevated context. Когда погрузчик загружает двоичный код Windows с подписью, а затем загружает все dlls, от которых зависит двоичный погрузчик, эти двоичные данные будут проверены, чтобы убедиться, что они также цифрово подписаны в качестве двоичного устройства Windows.When the loader is loading a Windows signed binary, and then loads up any dlls that the binary depends on, these binaries will be verified to ensure that they are also digitally signed as a Windows binary. В случае сбой проверки подписи dll не загружается и будет выбрасывать исключение, возвращая состояние STATUS_INVALID_IMAGE_HASH.If they fail the signature check, the dll will not be loaded, and will throw an exception, returning a status of STATUS_INVALID_IMAGE_HASH.

Соображения совместимостиCompatibility considerations

Проблемы с совместимостью встречаются редко.Compatibility issues are uncommon. Будут влиять приложения, которые зависят от замены разных windows на локальные частные версии, а также существует небольшой риск выявить тонкие ошибки синхронизации в многопотоковом приложении.Applications that depend on replacing Windows binaries with local private versions will be impacted, and there is also a small risk of revealing subtle timing bugs in multi-threaded applications.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Проверка целостности стека (StackPivot)Validate stack integrity (StackPivot)

ОписаниеDescription

Смягчение последствий проверки целостности стека (StackPivot) помогает защититься от атаки стеков, атаки ROP, в которой злоумышленник создает поддельный стек в памяти кучи, а затем угощает приложение возвращением в поддельный стек, который управляет потоком выполнения.The validate stack integrity (StackPivot) mitigation helps protect against the Stack Pivot attack, a ROP attack where an attacker creates a fake stack in heap memory, and then tricks the application into returning into the fake stack that controls the flow of execution.

Это смягчение перехватывает многие API Windows и проверяет значение указателя стека.This mitigation intercepts many Windows APIs, and inspects the value of the stack pointer. Если адрес указателя стека не упадет между нижней и верхней частью стека, событие будет записано и, если не в режиме аудита, процесс будет прекращен.If the address of the stack pointer does not fall between the bottom and the top of the stack, then an event is recorded and, if not in audit mode, the process will be terminated.

API, перехваченные этим смягчением, являются:The APIs intercepted by this mitigation are:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Соображения совместимостиCompatibility considerations

Приложения, использующие поддельные стеки, будут влиять на них, а также существует небольшой риск раскрытия тонких ошибок синхронизации в многопотовых приложениях.Applications that are using fake stacks will be impacted, and there is also a small risk of revealing subtle timing bugs in multi-threaded applications. Приложения, которые выполняют перехват API, в частности программное обеспечение безопасности, могут вызвать проблемы совместимости с этим смягчением.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Это смягчение несовместимо с произвольным смягчением защиты кода.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Параметры конфигурацииConfiguration options

Только аудит . Вы можете включить это смягчение в режиме аудита, чтобы оценить потенциальное влияние совместимости на приложение.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Затем события аудита можно просматривать либо в зрительских мероприятиях, либо с помощью расширенных методов охоты в Microsoft Defender для конечной точки.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.