Безопасность на основе виртуализации (VBS)

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

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

Примечание.

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

Для VBS требуется, чтобы следующие компоненты присутствовали и правильно настроены.

Требования к оборудованию Сведения
64-разрядный ЦП. Для обеспечения безопасности на основе виртуализации (VBS) требуется гипервизор Windows, который поддерживается только на 64-разрядных процессорах IA с расширениями виртуализации, включая Intel VT-X и AMD-v.
преобразование адресов второго уровня (SLAT); VBS также требует, чтобы поддержка виртуализации процессора включает преобразование адресов второго уровня (SLAT), intel VT-X2 с расширенными таблицами страниц (EPT) или AMD-v с быстрой индексацией виртуализации (RVI).
IOMMUs или SMMUs (Intel VT-D, AMD-Vi, ARM64 SMMUs) Все устройства ввода-вывода, способные DMA, должны находиться за IOMMU или SMMU. IOMMU можно использовать для повышения устойчивости системы к атакам на память.
доверенный платформенный модуль (TPM) 2.0; Дополнительные сведения см. в разделе доверенного платформенного модуля (TPM) 2.0.
Поддержка встроенного ПО для защиты ОТ СММ Системное встроенное ПО должно соответствовать рекомендациям по обеспечению защиты КОДА СММ, описанного в спецификации таблицы безопасности WINDOWS (WMST). Спецификация WSMT содержит сведения о таблице ACPI, созданной для использования с операционными системами Windows, поддерживающими функции VBS. Встроенное ПО должно реализовать защиту, описанную в спецификации WSMT, и задать соответствующие флаги защиты, как описано в спецификации, чтобы сообщить о соответствии этих требований операционной системе.
Отчеты о памяти единого расширяемого интерфейса встроенного ПО (UEFI) Встроенное ПО UEFI должно соответствовать следующему формату отчетов карты памяти и рекомендациям по выделению памяти, чтобы обеспечить совместимость с VBS.

  • Таблица атрибутов памяти UEFI версии 2.6 (MAT) — чтобы обеспечить совместимость с VBS, встроенное ПО должно четко отделять диапазоны памяти среды выполнения EFI для кода и данных и сообщать об этом операционной системе. Правильное разделение и отчеты диапазонов памяти среды выполнения EFI позволяет VBS применять необходимые защиты страниц к кодовых страницам служб среды выполнения EFI в защищенном регионе VBS. Передача этих сведений в ОС выполняется с помощью EFI_MEMORY_ATTRIBUTES_TABLE. Чтобы реализовать UEFI MAT, выполните следующие рекомендации.
    1. Вся среда выполнения EFI должна быть описана в этой таблице.
    2. Все соответствующие атрибуты для страниц EfiRuntimeServicesData и EfiRuntimeServicesCode должны быть помечены.
    3. Эти диапазоны должны быть выровнены по границам страницы (4 КБ) и не могут перекрываться.
  • Защита страниц EFI —Все записи должны содержать атрибуты EFI_MEMORY_RO, EFI_MEMORY_XP или обоих. Все памяти UEFI, помеченные исполняемым файлом, должны быть только для чтения. Память, помеченная как записываемая запись, не должна быть исполняемой. Записи могут не оставаться без набора атрибутов, указывая память, которая является исполняемой и записываемой.
  • Secure Memory Overwrite Request (MOR) версии 2 Защита MOR версии 2 улучшена для защиты параметра блокировки MOR с помощью безопасной переменной UEFI. Это помогает защититься от атак расширенной памяти. Дополнительные сведения см. в разделе "Реализация Secure MOR".
    Драйверы, совместимые с целостностью памяти Убедитесь, что все системные драйверы протестированы и проверены для обеспечения совместимости с целостностью памяти. Комплект драйверов Windows и средство проверки драйверов содержат тесты для совместимости драйверов с целостностью памяти. Существует три шага для проверки совместимости драйверов:
    1. Используйте средство проверки целостности драйверов с включенными проверками целостности кода.
    2. Запустите тест готовности к целостности кода гипервизора в Windows HLK.
    3. Проверьте драйвер в системе с включенной целостностью памяти и VBS. Этот шаг является обязательным для проверки поведения драйвера с целостностью памяти, так как средства анализа статического кода просто не могут обнаруживать все нарушения целостности памяти, возможные во время выполнения.
    Безопасная загрузка Безопасная загрузка должна быть включена на устройствах, включающих VBS. Дополнительные сведения см. в разделе "Безопасная загрузка"

    VBS работает на виртуальных машинах с поддержкой вложенной виртуализации. Сюда входят все виртуальные машины 2-го поколения и виртуальные машины 1-го поколения, поддерживающие вложенную виртуализацию. Список поддерживаемых рядов виртуальных машин подробно описан в таблице ниже.

    Имя серии виртуальных машин Вложенная виртуализация Виртуальные машины 2-го
    Av2 Да 1 (некоторые внутренние размеры поддерживают 2-го поколения)
    Б No 1 и 2
    Dsv2/Dv2/Dv3/Ev3 Да 1
    Dsv3/Ddsv3 Да 1 и 2
    Dsv4/Ddsv4 Да 1 и 2
    Esv3/Edsv3 Да 1 и 2
    Esv4/Edsv4 Да 1 и 2
    Ev4/Edv4 Да Ev4 — только 1
    Эдв4 -1&2
    Dv4/Ddv4 Да 1 и 2
    Dv5/Ddv5/Dsv5/Ddsv5 Да 1 и 2
    Ev5/Edv5/Esv5/Edsv5/Edsv5 Да 1 и 2
    Dasv5/Dadsv5/Easv5/ Eadsv5 Да 1 и 2
    Ebsv5/Edbsv5 Да 1 и 2
    Fsv2 Да 1 и 2
    Fx Да 2
    Lsv2 Да 1 и 2

    Дополнительные сведения о Hyper-V см. в статье Hyper-V в Windows Server 2016 или введение в Hyper-V в Windows 10. Дополнительные сведения о гипервизоре см. в спецификациях гипервизора.