Поделиться через


Проверка целостности кода

Целостность памяти — это функция безопасности на основе виртуализации (VBS), доступная в Windows 10, Windows 11 и Windows Server 2016 и более поздних версий. Целостность памяти и VBS улучшают модель угроз Windows и обеспечивают более надежную защиту от вредоносных программ, пытающихся использовать ядро Windows. VBS использует гипервизор Windows для создания изолированной виртуальной среды, которая становится корнем доверия операционной системы, предполагающей, что ядро может быть скомпрометировано. Целостность памяти — это критически важный компонент, который защищает и укрепляет Windows путем обеспечения целостности кода режима ядра в изолированной виртуальной среде виртуализации на базе гипервизора (VBS). Целостность памяти также ограничивает выделение памяти ядра, которое может использоваться для компрометации системы, гарантируя, что страницы памяти ядра выполняются только после передачи проверок целостности кода в защищенной среде выполнения, и сами исполняемые страницы никогда не записываются.

Примечание.

Целостность памяти иногда называется целостностью кода, защищенной гипервизором (HVCI) или целостностью кода, обеспечиваемой гипервизором, и первоначально была выпущена в составе Device Guard. Device Guard больше не используется, кроме того, чтобы найти параметры целостности памяти и VBS в групповой политике или реестре Windows.

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

Код ошибки Проблема целостности кода
0x2000:
  • 2. Адрес в коде драйвера, в котором обнаружена ошибка.
  • 3 — тип пула.
  • 4 — тег пула (если он указан).

Вызывающий объект указал тип исполняемого пула. (Ожидается: NonPagedPoolNx)
0x2001:
  • 2. Адрес в коде драйвера, в котором обнаружена ошибка.
  • 3 — защита страниц (WIN32_PROTECTION_MASK).
Вызывающий объект указал защиту исполняемой страницы. (Ожидаемое: очистка PAGE_EXECUTE* битов)
0x2002:
  • 2. Адрес в коде драйвера, в котором обнаружена ошибка.
  • 3 - Приоритет страницы (MM_PAGE_PRIORITY логически объединён через ИЛИ с MdlMapping*).
Объект, выполняющий вызов, указал исполняемое сопоставление MDL. (Ожидается: MdlMappingNoExecute).
0x2003:
  • 2 — имя файла изображения (строка Юникода).
  • 3 — адрес заголовка раздела.
  • 4 — имя раздела (строка в кодировке UTF-8).
Изображение содержит исполняемый и записываемый раздел.
0x2004:
  • 2 — имя файла изображения (строка Юникода).
  • 3 — адрес заголовка раздела.
  • 4 — имя раздела (строка в кодировке UTF-8).
Изображение содержит раздел, который не выровнен по страницам.
0x2005:
  • 2 — имя файла изображения (строка Юникода).
  • 3 — каталог IAT.
  • 4 — имя раздела (строка в кодировке UTF-8).
Изображение содержит IAT, расположенный в исполняемом разделе.

Активация этого параметра:

Вы можете активировать проверку целостности кода для одного или нескольких драйверов с помощью диспетчера проверки драйверов или командной строки Verifier.exe. Дополнительные сведения см. в разделе "Выбор параметров проверки драйвера". Чтобы активировать или отключить параметр проверки целостности кода, необходимо перезапустить компьютер.

  • В командной строке

    В командной строке проверка целостности кода представлена 0x02000000 (бит 25). Рассмотрим пример.

    verifier /flags 0x02000000 /driver MyDriver.sys

    Функция будет активна после следующей загрузки.

  • Использование диспетчера проверки драйверов

  1. Запустите диспетчер проверки драйверов. В окне командной строки введите средство проверки.
  2. Выберите "Создать настраиваемые параметры" (для разработчиков кода) и нажмите кнопку "Далее".
  3. Выберите (проверьте) проверку целостности кода.
  4. Перезапустите компьютер.

Реализация совместимого кода целостности памяти