Справочные материалы по защите от эксплойтов

Защита от эксплойтов обеспечивает расширенную защиту приложений, которые администраторы предприятия и ИТ-специалисты могут применять после компиляции и распространения программного обеспечения разработчиком.

Эта статья поможет вам понять, как работает защита от эксплойтов как на уровне политики, так и на уровне отдельных мер по устранению рисков, помогая успешно создавать и применять политики защиты от эксплойтов.

Как применяются операции по устранению рисков

Меры по защите от эксплойтов применяются отдельно для каждого приложения.

Каждая программа имеет собственную запись реестра, которая управляет применением мер по устранению рисков. Эти параметры хранятся в записи реестра MitigationOptions (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions). Эти параметры устранения рисков вступили в силу при перезапуске программы. Они остаются активными, пока не измените их и перезапустите программу.

Важно!

Параметры выполнения файла изображения позволяют указать только имя файла или путь. Вы не можете указать номер версии, архитектуру или любой другой отличительный признак. Применяйте меры по снижению рисков к приложениям с уникальными именами или путями. Примените их только на устройствах, где вы проверили эту версию и архитектуру приложения.

Вы можете настроить устранение рисков с помощью XML-файла с помощью PowerShell, групповой политики или MDM. При использовании XML-файла система задает для вас записи реестра.

Сброс защиты от эксплойтов

Важно!

Если групповая политика или политика MDM, развертывающая XML-файл, больше не применяется, параметры, развернутые этим XML-файлом конфигурации, не будут автоматически удалены.

Чтобы удалить параметры защиты от эксплойтов, экспортируйте конфигурацию XML с чистого Windows 10 или Windows 11 устройства и разверните новый XML-файл. В качестве альтернативы Microsoft предоставляет XML-файл в составе Безопасность Windows Baselines для сброса параметров защиты от эксплойтов.

Чтобы сбросить параметры защиты от эксплойтов с помощью PowerShell, выполните следующую команду, чтобы применить из XML-файла политику сброса настроек и восстановить параметры защиты до значений по умолчанию:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

Ниже приведён XML-файл EP-reset.xml, поставляемый вместе с Безопасность Windows Baselines. Этот файл содержит переопределения параметров снижения риска для отдельных приложений, сбрасывающие параметры защиты от эксплойтов к значениям по умолчанию для распространенных приложений, таких как Microsoft Office, веб-браузеры и медиапроигрыватели:

<?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>

Справочные материалы по мерам устранения рисков

Следующие средства защиты от эксплойтов включают описание, рекомендации по совместимости и параметры конфигурации.

Защита от произвольного кода

В следующих разделах описывается, как работает произвольное средство защиты кода, его влияние на совместимость и параметры конфигурации.

Описание

Защита от произвольного кода помогает предотвратить ситуацию, когда злоумышленник может через уязвимость, связанную с безопасностью памяти, загрузить в память код по своему выбору и затем выполнить его.

Защита от произвольного кода предотвращает выполнение приложением динамически создаваемого кода (то есть кода, который загружается не, например, из самого EXE-файла или DLL-библиотеки). Защита от произвольного кода работает, предотвращая пометку областей памяти как исполняемых. Когда приложение пытается выделить память, мы проверяем флаги защиты. (Память может быть выделена с помощью флагов защиты чтения, записи и/или выполнения.) Если при выделении предпринимается попытка включить флаг защиты выполнения, выделение памяти не выполняется и возвращает код ошибки (STATUS_DYNAMIC_CODE_BLOCKED). Аналогичным образом, если приложение пытается изменить флаги защиты памяти, которая уже выделена и для которой задан флаг защиты выполнения, то попытка изменить права доступа завершается ошибкой и возвращает код ошибки (STATUS_DYNAMIC_CODE_BLOCKED).

Не позволяя установить флаг execute, функция предотвращения выполнения данных (DEP) в Windows 10 и Windows 11 может защитить от установки указателя команд на эту область памяти и выполнения этого кода.

Совместимость

Функция Arbitrary Code Guard (ACG) не позволяет выделять какую-либо память с правом выполнения, что создает проблему совместимости для таких подходов, как JIT-компиляторы. Большинство современных браузеров, например, компилируют JavaScript в машинный код для оптимизации производительности. Чтобы обеспечить эту защиту, их необходимо перепроектировать, чтобы переместить JIT-компиляцию за пределы защищенного процесса. Другие приложения, архитектура которых предусматривает динамическую генерацию кода на основе скриптов или других промежуточных языков, также несовместимы с этой мерой защиты.

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

Разрешить отключение защиты для отдельного потока — Вы можете настроить эту меру защиты так, чтобы отдельный поток можно было исключить из-под этой защиты. Разработчик должен написать приложение с учётом этой меры защиты и вызвать API-функцию SetThreadInformation, установив для параметра ThreadInformation значение ThreadDynamicCodePolicy, чтобы получить возможность выполнять динамический код в этом потоке.

Только аудит — вы можете включить это средство защиты в режиме аудита, чтобы оценить потенциальное влияние на совместимость приложения. Затем события аудита можно просматривать либо в Просмотре событий, либо с помощью Advanced Hunting в Microsoft Defender для конечной точки.

Блокировать изображения низкого уровня целостности

В следующих разделах описывается, как работает блокировка образов с низким уровнем целостности, как она влияет на совместимость и какие у нее есть параметры конфигурации.

Описание

Блокировка образов с низким уровнем целостности предотвращает загрузку приложением ненадёжных файлов, обычно скачанных из Интернета с помощью изолированного браузера.

Эта мера защиты блокирует загрузку изображений, если у изображения есть запись управления доступом (ACE), предоставляющая доступ процессам с низким уровнем целостности (Low IL), и при этом отсутствует ACE с меткой доверия. Он реализуется диспетчером памяти, который блокирует сопоставление файла с памятью. Если приложение пытается отобразить в память образ с низким уровнем целостности, возникает ошибка STATUS_ACCESS_DENIED. Подробные сведения о том, как работают уровни целостности, см. в разделе Обязательное управление целостностью.

Совместимость

Блокировка образов низкого уровня целостности не позволяет приложению загружать файлы, скачанные из Интернета. Если рабочий процесс приложения требует загрузки загруженных образов, необходимо убедиться, что они скачиваются из процесса с более высоким уровнем доверия или явно перемаркированы для применения этой меры.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

Блокировать удаленные изображения

В следующих разделах описывается, как работает блокировка удаленных образов, его влияние на совместимость и параметры конфигурации.

Описание

Блокировка удаленных изображений помогает предотвратить загрузку в приложение файлов, которые находятся на удаленном устройстве, например, на общем ресурсе UNC. Блокировка удаленных изображений помогает защититься от загрузки в память двоичных файлов, которые находятся на внешнем устройстве, контролируемом злоумышленником.

Это решение блокирует загрузку изображений, если образ установлен на удаленном устройстве. Он реализуется диспетчером памяти, который блокирует сопоставление файла с памятью. Если приложение пытается сопоставить удаленный файл, оно вызывает ошибку STATUS_ACCESS_DENIED.

Совместимость

Блокировка удаленных образов запрещает приложению загружать образы с удаленных устройств. Если приложение загружает файлы или подключаемые модули с удаленных устройств, оно будет несовместимо с этой мерой защиты.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

Блокировать ненадежные шрифты

В следующих разделах описаны принцип работы функции блокировки ненадёжных шрифтов, её влияние на совместимость, а также параметры конфигурации.

Описание

Блокировка ненадежных шрифтов снижает риск возникновения недостатков при разборе шрифтов, позволяющих злоумышленнику запускать код на устройстве. Только шрифты, установленные в каталоге windows\fonts, будут загружаться для обработки с помощью GDI.

Эта мера защиты реализована в модуле GDI, который проверяет расположение файла. Если файл отсутствует в каталоге системных шрифтов, шрифт не загружается для анализа и вызов завершится ошибкой.

Эта мера защиты является дополнением к решению, встроенному в Windows 10 1607 и более поздних версий и в Windows 11, которое перемещает разбор шрифтов из ядра и в приложение-контейнер в пользовательском режиме. В результате любой эксплойт, основанный на разборе шрифтов, происходит в изолированном контексте, что значительно снижает риск.

Совместимость

Чаще всего шрифты за пределами каталога системных шрифтов используются с веб-шрифтами. Современные браузеры, такие как Microsoft Edge, используют DirectWrite вместо GDI и не затрагиваются. Однако на устаревшие браузеры, такие как Internet Explorer 11 (и режим IE в новом Microsoft Edge), могут влиять, в частности, такие приложения как Office 365, которые используют глифы шрифтов для отображения пользовательского интерфейса.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

Защита целостности кода

В следующих разделах описывается, как работает защита целостности кода, ее влияние на совместимость и параметры конфигурации.

Описание

Обеспечение целостности кода гарантирует, что все двоичные файлы, загруженные в процесс, имеют цифровую подпись корпорации Майкрософт. Защита целостности кода включает сигнатуры WHQL (Лаборатории качества оборудования Windows), которые позволяют запускать в процессе драйверы, утвержденные WHQL.

Эта мера защиты реализована в диспетчере памяти, который не позволяет отобразить двоичный файл в память. При попытке загрузить двоичный файл, который не подписан корпорацией Майкрософт, подсистема памяти возвращает ошибку STATUS_INVALID_IMAGE_HASH. Блокирование на уровне диспетчера памяти предотвращает и загрузку двоичных файлов, выполняемую процессом, и внедрение двоичных файлов в процесс.

Совместимость

Эта мера специально блокирует любые двоичные файлы, которые не подписаны корпорацией Майкрософт. Таким образом, оно несовместимо с большинством программ сторонних разработчиков, если только такое ПО не распространяется через Microsoft Store (и не имеет цифровой подписи Microsoft Store) и не выбран параметр, разрешающий загрузку образов, подписанных Microsoft Store.

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

Кроме того, разрешите загрузку изображений, подписанных Microsoft Store . Приложения, распространяемые в Microsoft Store, имеют цифровую подпись в Microsoft Store. Добавление этой конфигурации позволяет загружать двоичные файлы, которые проходят сертификацию магазина, приложением.

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

Защита потока управления (CFG)

В следующих разделах описывается, как работает защита потока управления, влияние на совместимость и параметры конфигурации.

Описание

Защита потока управления (CFG) снижает риск использования злоумышленниками уязвимостей, связанных с повреждениями памяти, за счет защиты непрямых вызовов функций. Например, злоумышленник может использовать уязвимость к переполнению буфера для перезаписи памяти, содержащей указатель функции, и заменить этот указатель функции указателем на исполняемый код по своему выбору (который также может быть внедрен в программу).

Эта мера защиты обеспечивается за счет внедрения еще одной проверки на этапе компиляции. Перед каждым непрямым вызовом функции добавляются дополнительные инструкции, которые перед выполнением вызова проверяют, что его цель является допустимой целью вызова. Если целевой объект не является допустимым целевым объектом вызова, приложение завершается. Таким образом, только приложения, скомпилированные с поддержкой CFG, могут воспользоваться этой мерой защиты.

Проверка допустимости целевого объекта предоставляется ядром Windows. При загрузке исполняемых файлов метаданные для непрямых целей вызова извлекаются во время загрузки и помечаются как допустимые целевые объекты вызова. Кроме того, если память выделена и помечена как исполняемая (например, для сгенерированного кода), эти расположения памяти также помечаются как допустимые целевые объекты вызова для поддержки таких механизмов, как компиляция JIT.

Совместимость

То, что приложения должны быть скомпилированы для поддержки функции CFG, косвенно указывает на их совместимость с ней. Таким образом, большинство приложений должны работать с включенной мерой защиты. Так как эти проверки компилируются в двоичный файл, конфигурацию можно применить только для отключения проверок в ядре Windows. Иными словами, устранение рисков по умолчанию включено, но вы можете настроить ядро Windows так, чтобы оно всегда возвращало значение "да", если позже вы обнаружите, что при тестировании разработчик приложений не обнаружил проблемы совместимости, что должно быть редким явлением.

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

Использовать строгий режим CFG — в строгом режиме все двоичные файлы, загружаемые в процесс, должны быть скомпилированы с поддержкой Control Flow Guard (или не содержать исполняемого кода, например библиотеки DLL с ресурсами), чтобы их можно было загрузить.

Примечание.

Защита потока управления не имеет режима аудита. Бинарные файлы компилируются, когда данная мера защиты включена.

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

В следующих разделах описывается, как работает предотвращение выполнения данных, влияние на совместимость и параметры конфигурации.

Описание

Предотвращение выполнения данных (DEP) предотвращает выполнение памяти, которая не была явно выделена в качестве исполняемого файла. DEP помогает защититься от злоумышленника, который внедряет вредоносный код в процесс, например, через переполнение буфера, а затем выполняет этот код.

При попытке задать указатель инструкции на адрес памяти, не помеченный как исполняемый, обработчик выдает исключение (нарушение общей защиты), что приводит к сбою приложения.

Совместимость

Для всех исполняемых файлов x64, ARM и ARM64 функция DEP включена по умолчанию, и её нельзя отключить. Так как приложение не выполняется без DEP, предполагается совместимость.

Для всех 32-битных бинарных файлов х86 функция DEP включена по умолчанию, но ее можно отключать для конкретных процессов. Некоторые устаревшие приложения, обычно разработанные до Windows XP с пакетом обновления 2 (SP2), могут быть несовместимы с DEP. Такие приложения обычно создают код динамически (например, компилируя JIT) или связываются с более старыми библиотеками (такими как более старые версии ATL), которые динамически создают код.

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

Включение эмуляции Thunk ATL . Этот параметр управляет эмуляцией ATL Thunk. ATL, библиотека шаблонов ActiveX, призвана быть максимально компактной и быстрой. Чтобы уменьшить двоичный размер, он использует метод, называемый thunking. Thunking часто связан с 32-разрядным и 16-разрядным взаимодействием, но ATL не имеет 16-разрядных частей. Вместо этого для экономии места ATL сохраняет код компьютера в памяти, не выровненный по словам. Это создает меньший двоичный файл. Затем ATL запускает этот код напрямую. Версии ATL, скомпилированные с Visual Studio 7.1 или более ранней версии (Visual Studio 2003), не помечают эту память как исполняемую. Эмуляция Thunk устраняет эту проблему. Приложения с двоичной моделью расширения (например, Internet Explorer 11) должны включать эмуляцию ATL Thunk.

Отключить точки расширения

В следующих разделах описано, как работает мера по отключению точек расширения, как она влияет на совместимость и какие у нее есть параметры конфигурации.

Описание

Устранение проблем с точками расширения отключает различные точки расширения для приложения, которые могут использоваться для установления сохраняемости или повышения привилегий вредоносного содержимого.

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

  • AppInit DLL — при каждом запуске процесса система загружает указанную DLL в адресное пространство вновь запущенного процесса перед вызовом функции его точки входа. Подробные сведения о DLL AppInit можно найти здесь. При применении этой меры защиты библиотеки DLL AppInit не загружаются. Начиная с Windows 7, DLL AppInit должны иметь цифровую подпись, как описано здесь. Кроме того, начиная с Windows 8, библиотеки DLL AppInit не загружаются, если включена функция SecureBoot, как описано здесь.
  • Устаревшие IME — редактор метода ввода (IME) позволяет пользователю вводить текст на языке, который имеет больше символов, чем может быть представлено на клавиатуре. Третьи стороны могут создавать IME. Вредоносный IME может получить учетные данные или другую конфиденциальную информацию из этой записи входных данных. Некоторые IMEs, называемые устаревшими IMEs, работают только в классических приложениях Windows, но не в приложениях UWP. Эта мера также предотвращает загрузку этого устаревшего IME в указанное классическое приложение Windows.
  • Перехватчики событий Windows — приложение может вызвать API SetWinEventHook, чтобы зарегистрировать интерес к происходящему событию. Указана DLL, которая может быть введена в процесс. Эта мера защиты принудительно направляет хук в регистрирующий процесс, а не запускает его внутри процесса через внедрённую DLL.

Совместимость

Большинство из этих точек расширения используются относительно редко, поэтому эффект совместимости обычно невелик, особенно на уровне отдельного приложения. Единственное, что следует учитывать: если пользователи используют устаревшие IME не от Microsoft, они не будут работать с защищённым приложением.

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

Для этой меры защиты параметры конфигурации отсутствуют.

Примечание.

Отключение точек расширения не имеет режима аудита.

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

В следующих разделах описаны принцип работы меры по снижению риска, связанной с отключением системных вызовов Win32k, её влияние на совместимость и параметры настройки.

Описание

Win32k.sys предоставляет злоумышленнику обширную поверхность атаки. Как компонент режима ядра он часто предназначен в качестве escape-вектора для изолированных приложений. Эта мера предотвращает вызовы win32k.sys, блокируя возможность потока преобразовать себя в поток GUI, который затем получает доступ к вызову функций Win32k. При создании поток не является GUI-потоком, но становится им при первом вызове win32k.sys или посредством вызова API IsGuiThread.

Совместимость

Эта мера защиты предназначена для выделенных процессов, не относящихся к пользовательскому интерфейсу. Например, многие современные браузеры используют изоляцию процессов и включают процессы, не относящиеся к пользовательскому интерфейсу. Любое приложение, отображающее графический интерфейс с использованием одного процесса, будет затронуто этой мерой.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

Не разрешать дочерние процессы

В следующих разделах описывается, как работает мера по запрету дочерних процессов, как она влияет на совместимость и какие у неё есть параметры конфигурации.

Описание

Мера защиты «Don't allow child processes» запрещает приложению создавать новые дочерние процессы. Распространенный прием, используемый злоумышленниками, — запуск доверенного процесса на устройстве с передачей ему вредоносных входных данных (атака типа "living off the land"), что часто требует запуска другого приложения на этом устройстве. Если нет обоснованных причин, по которым приложение должно запускать дочерний процесс, эта мера снижает риск, связанный с данным потенциальным вектором атаки. Эта мера защиты применяется путем установки свойства в маркере процесса, которое блокирует создание маркера для дочернего процесса с сообщением об ошибке STATUS_CHILD_PROCESS_BLOCKED.

Совместимость

Если ваше приложение по какой-либо причине запускает дочерние приложения, например для поддержки гиперссылок, открывающих браузер или внешний браузер, либо запускает другие утилиты на компьютере, то при применении данной меры смягчения эта функциональность перестанет работать.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

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

В следующих разделах описывается, как работает фильтрация адресов экспорта, влияние на совместимость и параметры конфигурации.

Описание

Фильтрация адресов экспорта (EAF) снижает риск поиска вредоносным кодом модулей, содержащих полезные API для атаки, в таблице адресов экспорта всех загруженных модулей. Это распространенный прием, используемый шелл-кодом. Чтобы снизить риск такой атаки, эта мера защиты обеспечивает безопасность трех наиболее подверженных атакам модулей:

  • ntdll.dll
  • kernelbase.dll
  • kernel32.dll

Эта мера защиты защищает страницу памяти в [каталоге экспорта, указывающую на таблицу адресов экспорта. На этой странице памяти применяется PAGE_GUARD защита. Когда кто-то пытается получить доступ к этой памяти, он создает STATUS_GUARD_PAGE_VIOLATION. Устранение рисков обрабатывает это исключение, и если инструкция доступа не проходит проверку, процесс завершается.

Совместимость

Эта мера защиты в первую очередь связана с такими приложениями, как отладчики, изолированные приложения, приложения, использующие DRM, или приложения, которые применяют технологию отладки.

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

Проверка доступа для модулей, которые подвержены рискам со стороны эксплойтов. Этот параметр, также известный как EAF+, добавляет средства защиты для других часто атакуемых модулей:

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

Кроме того, при включении EAF+ эта мера защиты применяет PAGE_GUARD к странице, содержащей заголовок "MZ" — первые 2 байта заголовка DOS в PE-файле; это известная сигнатура содержимого памяти, которую шелл-код может искать, чтобы выявлять потенциально интересные модули в памяти.

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

Принудительный случайный выбор изображений (обязательный ASLR)

В следующих разделах описывается, как работает обязательный ASLR, его влияние на совместимость и параметры конфигурации.

Описание

Случайный выбор макета адресного пространства (ASLR) снижает риск использования злоумышленником своих знаний о структуре памяти системы для выполнения кода, который уже присутствует в памяти процесса и уже помечен как исполняемый. Это может снизить риск того, что злоумышленник использует такие методы, как атаки типа return-to-libc, при которых он задает контекст, а затем изменяет адрес возврата, чтобы выполнить существующий код в контексте, соответствующем его целям.

Обязательная функция ASLR принудительно перемещает все DLL в процессе. Разработчик может включить ASLR с помощью параметра компоновщика /DYNAMICBASE, и эта мера защиты дает тот же эффект.

Когда диспетчер памяти сопоставляет образ с процессом, обязательный ASLR принудительно перебазирует библиотеки DLL и exEs, которые не согласились на ASLR. Обратите внимание, однако, что это перебазирование лишено энтропии и поэтому может располагаться в предсказуемом месте в памяти. Для бинарных файлов с перемещаемой базой и рандомизированным расположением эту меру защиты следует сочетать с рандомизацией выделения памяти (ASLR снизу вверх).

Совместимость

Этот эффект совместимости ASLR обычно ограничивается более старыми приложениями, созданными с помощью компиляторов, которые делают предположения о базовом адресе двоичного файла или удаляют сведения о перемещении базы. Это может привести к непредсказуемым ошибкам, так как поток выполнения попытается перейти к ожидаемому, а не фактическому адресу в памяти.

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

Запретить удаление изображений . Этот параметр блокирует загрузку изображений, для которых удалена информация о перемещении. Формат файла Windows PE содержит абсолютные адреса, а компилятор также создает [базовую таблицу перемещения, которую загрузчик может использовать для поиска всех относительных ссылок на память и их смещения, чтобы их можно было обновить, если двоичный файл не загружается по предпочтительному базовому адресу. Некоторые старые приложения удаляют эту информацию в рабочих сборках, поэтому эти двоичные файлы нельзя перебазировать. Эта мера защиты блокирует загрузку подобных двоичных файлов (вместо того, чтобы разрешить их загрузку по предпочтительному базовому адресу).

Примечание.

Принудительный случайный выбор изображений (обязательный ASLR) не имеет режима аудита.

Аппаратно-принудительная защита стека

Описание

Защита аппаратного стека обеспечивает надежную защиту от эксплойтов ROP. Он работает, сохраняя запись предполагаемого потока выполнения программы. Для поддержки плавного внедрения и совместимости приложений Windows предлагает эту защиту в качестве модели согласия. Разработчики могут включить его в собственном темпе.

Совместимость

Аппаратно-принудительная защита стека работает только на чипсетах с поддержкой аппаратных теневых стеков, технологии Control-flow Enforcement Technology (CET) от Intel или теневых стеков AMD.

Если вы запускаете приложения на платформе .NET Framework, аппаратно-принудительная защита стека поддерживается в .NET Framework 7 (требуется явное включение) и более поздних версиях. Если вы используете более раннюю версию, могут возникнуть сбои или высокая загрузка ЦП. Эти проблемы также могут возникать в режиме аудита или при нацеливание только на совместимые модули.

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

Только аудит — вы можете включить это средство защиты в режиме аудита, чтобы оценить потенциальное влияние на совместимость приложения. Затем события аудита можно просматривать либо в Просмотре событий, либо с помощью Advanced Hunting в Microsoft Defender для конечной точки.

Применять ко всем модулям вместо только совместимых модулей — Вы можете включить этот параметр, чтобы применять эту меру ко всем модулям вместо только совместимых.

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

Описание

Мера фильтрации адресов импорта (IAF) помогает снизить риск изменения злоумышленником потока управления приложением путем изменения таблицы адресов импорта (IAT) для осуществления перенаправления на произвольный код по выбору злоумышленника при обращении к этой функции. Злоумышленник может использовать этот подход для захвата управления, перехвата, проверки и потенциальной блокировки вызовов конфиденциальных API.

На страницах памяти для всех защищенных API применяется PAGE_GUARD защита. Когда кто-то пытается получить доступ к этой памяти, он создает STATUS_GUARD_PAGE_VIOLATION. Устранение рисков обрабатывает это исключение, и если инструкция доступа не проходит проверку, процесс завершается.

Эта мера защиты обеспечивает безопасность следующих API Windows:

  • 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

Совместимость

Эта мера может обнаружить допустимые приложения, выполняющие перехват API, и привести к сбою некоторых приложений. Примеры включают программы безопасности и слои совместимости приложений.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

Случайная адресация выделяемой памяти (ASLR снизу вверх)

Описание

Случайное распределение выделения памяти (ASLR снизу вверх) добавляет энтропию к перемещениям, делая их расположение случайным и, следовательно, менее предсказуемым. Для применения этой меры защиты требуется, чтобы обязательная ASLR вступила в силу.

Размер 32-битного адресного пространства налагает практические ограничения на добавляемую энтропию, поэтому в 64-битных приложениях злоумышленнику будет сложнее угадать расположение в памяти.

Совместимость

Большинство приложений, поддерживающих обязательную ASLR (перебазирование), также поддерживают восходящую ASLR. Некоторые приложения могут иметь проблемы с усечением указателя, если они сохраняют локальные указатели в 32-разрядных переменных. Эти приложения требуют базовый адрес ниже отметки 4 ГБ, поэтому они не будут работать при включении параметра высокой энтропии адресного пространства. При необходимости можно отключить высокую энтропию.

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

Не использовать высокую энтропию. Этот параметр отключает использование ASLR с высокой энтропией, которая добавляет 24 бита энтропии (1 ТБ дисперсии) в выделение снизу вверх для 64-битных приложений.

Примечание.

Случайное распределение памяти (ASLR снизу вверх) не поддерживает режим аудита.

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

Описание

Имитация выполнения (SimExec) — это мера защиты, применимая только к 32-битным приложениям. Это помогает убедиться, что вызовы конфиденциальных API возвращаются к допустимым вызывающим функциям. Это достигается за счёт перехвата обращений к критически важным API, а затем имитации их работы путём последовательного анализа закодированных инструкций ассемблера в поисках инструкции RET, которая должна передать управление вызывающей стороне. Затем она проверяет эту функцию и идет в обратном направлении в памяти, чтобы найти указанную ранее инструкцию CALL и определить, совпадают ли функции и инструкции CALL и не была ли перехвачена инструкция RET.

Следующие API перехватываются данной мерой по снижению риска:

  • 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 процесс завершается.

Совместимость

Приложения, которые перехватывают вызовы API, в частности программы безопасности, могут вызывать проблемы совместимости с этой мерой защиты.

Эта мера несовместима с механизмом защиты Arbitrary Code Guard.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

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

Описание

Проверка вызова API (CallerCheck) — это мера защиты для методов возвратно-ориентированного программирования (ROP), которые проверяют, допустимым ли абонентом были вызваны конфиденциальные API. Эта мера защиты проверяет переданный обратный адрес, а затем выполняет эвристическую разборку в обратном порядке, чтобы найти вызов над обратным адресом и определить, соответствует ли целевой объект вызова параметру, переданному в функцию.

Следующие API перехватываются данной мерой по снижению риска:

  • 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 процесс завершается.

Совместимость

Приложения, которые перехватывают вызовы API, в частности программы безопасности, могут вызывать проблемы совместимости с этой мерой защиты.

Эта мера несовместима с механизмом защиты Arbitrary Code Guard.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

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

Описание

Проверка цепочек исключений (SEHOP) — это устранение рисков при использовании метода перезаписи структурированного обработчика исключений (SEH). Структурированная обработка исключений — это процесс, с помощью которого приложение может запросить обработку определенного исключения. Обработчики исключений сцепляются друг с другом, поэтому если один обработчик исключений не будет обрабатывать определенное исключение, его можно передать следующему обработчику исключений в цепочке, пока один из них не примет решение обработать его. Так как список обработчиков является динамическим, он хранится в стеке. Злоумышленник может использовать уязвимость переполнения буфера в стеке, чтобы затем перезаписать обработчик исключений указателем на код по его выбору.

Это решение основано на структуре SEH, где каждая запись SEH содержит как указатель на обработчик исключений, так и указатель на следующий обработчик в цепочке исключений. Эта мера защиты вызывается диспетчером исключений, который проверяет цепочку SEH при возникновении исключения. Он проверяет, что:

  • Все записи цепочки исключений находятся в пределах границ стека
  • Все записи об исключениях согласованы
  • Никакие указатели обработчиков исключений не указывают на стопку
  • Нет обратных указателей
  • Цепочка исключений заканчивается известным окончательным обработчиком исключений

Если эти проверки завершаются ошибкой, обработка исключений прерывается, и исключение не будет обработано.

Совместимость

Проблемы совместимости с SEHOP встречаются относительно редко. Приложение редко принимает зависимость от поврежденной цепочки исключений. Однако некоторые приложения подвержены влиянию незначительных изменений синхронизации, что может проявляться в виде состояния гонки, выявляющего скрытую ошибку многопоточности в приложении.

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

Примечание.

Проверка цепочек исключений (SEHOP) не поддерживает режим аудита.

Проверить использование дескриптора

Описание

Проверка использования дескриптора — это механизм защиты, который помогает предотвратить использование злоумышленником существующего дескриптора для доступа к защищённому объекту. Дескриптор представляет собой ссылку на защищённый объект. Если код приложения обращается к недопустимому дескриптору, это может указывать на то, что злоумышленник пытается использовать дескриптор, который он ранее сохранил, но о котором механизм подсчета ссылок приложения не знает. Если приложение пытается использовать недопустимый объект, а не просто возвращает значение NULL, оно создает исключение (STATUS_INVALID_HANDLE).

Эта мера защиты автоматически применяется к приложениям из Windows Store.

Совместимость

Приложения, которые неточно отслеживали ссылки на дескрипторы и не заключали эти операции в блоки обработки исключений, могут быть затронуты этой мерой по устранению проблемы.

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

Примечание.

Проверка использования дескриптора не поддерживает режим аудита.

Проверить целостность кучи

Описание

Мера защиты проверка целостности кучи повышает уровень защиты механизмов защиты кучи в Windows, приводя к завершению работы приложения при обнаружении повреждения кучи. Предусмотрены следующие меры устранения рисков:

  • Предотвращение освобождения дескриптора HEAP
  • Выполнение другой проверки в расширенных заголовках блоков для выделений из кучи
  • Проверка, что выделенные блоки в куче еще не помечены как используемые
  • Добавление защитных страниц к крупным блокам памяти, сегментам кучи и подсегментам, размер которых превышает минимальный порог

Совместимость

Эта мера защиты уже применена по умолчанию для 64-битных приложений и 32-битных приложений, предназначенных для Windows Vista или более поздней версии. Устаревшие приложения из Windows XP или более ранних версий наиболее подвержены риску, хотя проблемы совместимости встречаются редко.

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

Примечание.

Проверка целостности кучи не имеет режима аудита.

Проверка целостности зависимостей изображения

Описание

Мера защиты проверка зависимостей образа помогает защищать от атак, направленных на подмену DLL кодом в случаях, когда DLL статически связаны с двоичными файлами Windows. Техника подмены DLL злоупотребляет механизмом поиска DLL загрузчиком для внедрения вредоносного кода, что может использоваться для выполнения вредоносного кода в контексте с повышенными привилегиями. Когда загрузчик загружает двоичный файл со знаком Windows, а затем загружает все библиотеки DLL, от которых зависит двоичный файл, эти двоичные файлы проверяются, чтобы убедиться, что они также имеют цифровую подпись как двоичный файл Windows. Если проверка подписи не пройдена, библиотека DLL не загружается и генерируется исключение с кодом состояния STATUS_INVALID_IMAGE_HASH.

Совместимость

Проблемы совместимости редки. Приложения, которые зависят от замены двоичных файлов Windows локальными частными версиями, затрагиваются, и также существует небольшой риск проявления трудноуловимых ошибок синхронизации в многопоточных приложениях.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.

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

Описание

Проверка целостности стека (StackPivot) помогает защитить от атаки Stack Pivot — атаки ROP, при которой злоумышленник создает поддельный стек в памяти кучи, а затем обманом заставляет приложение выполнить возврат на этот поддельный стек, который контролирует поток выполнения.

Этот механизм защиты перехватывает множество API Windows и анализирует значение указателя стека. Если адрес указателя стека не находится между нижней и верхней частью стека, то записывается событие, а если нет в режиме аудита, процесс завершается.

Следующие API перехватываются данной мерой по снижению риска:

  • 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

Совместимость

Этому подвержены приложения, использующие фиктивные стеки, а также существует небольшой риск проявления трудноуловимых ошибок синхронизации в многопоточных приложениях. Приложения, которые перехватывают вызовы API, в частности программы безопасности, могут вызывать проблемы совместимости с этой мерой защиты.

Эта мера несовместима с механизмом защиты Arbitrary Code Guard.

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

Только аудит — Вы можете включить этот механизм защиты в режиме аудита, чтобы оценить его потенциальное влияние на совместимость приложения. Затем события аудита можно просмотреть либо в средстве «Просмотр событий», либо с помощью функции «Расширенный поиск» в Microsoft Defender для конечных точек.