Гипервизор: наблюдатель, граница защиты и возможный противник

От SubVirt до VBS и confidential VM. Почему «ниже ядра» — недостаточная модель безопасности.

Три роли одной технологии

Гипервизор может изолировать недоверенные нагрузки, предоставлять внешнему наблюдателю доступ к состоянию гостя или сам оказаться частью модели противника. Эти роли несовместимо сводить в один знак «доверено». Нужно назвать, кто контролирует monitor, как он запускается и какие объекты защищает.

Историческая работа SubVirt исследовала virtual-machine based rootkit: monitor размещался под существующей ОС, которая продолжала работать как гость. Это модель изменения уровня контроля, а не доказательство того, что любую современную машину можно незаметно «перевести под гипервизор» без предусловий. S17

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

Почему Ring −1 — только мнемоника

Удобная метафора «ниже ring 0» не описывает полный набор полномочий. Виртуализация включает режимы процессора, управление отображением памяти, обработку событий и интерфейсы гостя. Для безопасности важно не числовое положение на картинке, а фактическая возможность изменять конкретный защищаемый объект.

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

VBS: обычное ядро перестаёт быть единственным арбитром

Microsoft описывает VBS как использование аппаратной виртуализации для изолированной среды, где могут размещаться защищённые функции. HVCI переносит решение о допустимости kernel-кода в такую среду; VBS также предъявляет требования к памяти firmware runtime. Это отдельная архитектурная граница, а не другое название обычного антивирусного драйвера. S14

В Virtual Secure Mode используются Virtual Trust Levels. Механизмы защиты памяти и переходов определяют взаимодействие уровней. Поэтому полномочия кода в обычном ядре и полномочия изолированного компонента нельзя считать одинаковыми. Наличие административных прав в ОС само по себе не описывает всю модель VTL. S16

Это особенно важно для чтения Abyss и Insomnia. Изменение функции в ntoskrnl или её ответа не является доказательством изменения решения отдельного enforcement-компонента. И наоборот, включённая настройка в интерфейсе ещё не доказывает, что гипервизор и требуемая защита реально запустились в текущем сеансе. E06 E40

Измерять состояние, а не надпись в настройках

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

В исследовательском протоколе также нужны точная версия ОС, firmware и состояние виртуализации. Повторение опыта на машине с тем же маркетинговым названием Windows недостаточно. Отладочные режимы, совместимость драйверов и конфигурация платформы могут менять условия.

Red: утверждение об обходе должно называть конкретную границу: обычное ядро, защищённую память, VTL-переход или сам hypervisor. «Код исполнился в kernel mode» не доказывает все эти результаты одновременно.

Blue: независимый источник должен быть независим именно от атакуемого слоя. Два отчёта из одного скомпрометированного ядра не становятся надёжнее от разных названий утилит.

Виртуальная машина — удобный стенд, но другой противник

bootlicker описывает сценарий с виртуальной прошивкой VMware. В его просмотренных стадиях видны UEFI-переходы, ACPI.SYS, thread callback и APC, а не реализация собственного monitor. Это bootkit внутри определённого окружения, а не автоматически hypervisor rootkit. E33 E36 E38

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

Защитный snapshot VM также требует осторожной интерпретации. Он полезен как сохранённое состояние, но полнота снимка зависит от того, какие компоненты инфраструктуры в него входят. Диск гостя, NVRAM, конфигурация, firmware и состояние памяти не обязательно восстанавливаются одной операцией.

Когда гипервизор исключают из доверенной базы

TDX и SEV-SNP рассматривают более сильную модель: VMM может быть недоверенным по отношению к защищённому гостю. Intel описывает защиту trust domain от внешнего программного обеспечения; AMD добавляет механизмы целостности памяти к своей архитектуре защищённых VM. Но конкретные гарантии и исключения необходимо брать из модели соответствующей версии. S18 S20

При такой архитектуре наблюдаемость тоже меняется. Внешний монитор, которому раньше был доступен весь plaintext гостя, может потерять этот доступ. Для Blue возникает инженерный компромисс: как получить достаточные свидетельства о поведении, сохраняя заявленную конфиденциальность нагрузки. Решение часто требует кооперации внутри защищённого гостя и тщательно ограниченных экспортируемых событий.

Нельзя при этом считать шифрование памяти универсальной защитой от всех побочных каналов. В AMD-SB-3021 обсуждаются конкретные ciphertext side-channel исследования для SEV-SNP. Это пример необходимости учитывать опубликованные исключения и состояние исправлений, а не объявлять любую платформу полностью защищённой одним названием технологии. S21

Интерфейс гостя остаётся поверхностью анализа

Confidential VM продолжает получать данные извне: от виртуальных устройств, storage и сетевых служб. Intel отдельно подчёркивает необходимость защиты guest code при недоверенном VMM. Проверка параметров внешнего интерфейса остаётся обязанностью соответствующего компонента. S19

Аналитически это удобно описать как две независимые гарантии. Первая: внешний субъект не может произвольно прочитать или изменить приватные страницы. Вторая: программа не принимает ложные внешние данные за авторизованное решение. Первая не доказывает вторую. Тот же принцип действует для TEE и TPM, но у VM поверхность виртуальных устройств особенно заметна.

Сравнительная карта доверия

МодельКому доверяет защищаемая нагрузкаГде искать нарушениеЧто нельзя обещать автоматически
Обычная VMMonitor и существенная часть хостаGuest/host boundary и устройстваЗащиту от владельца хоста
VBSЗапущенный Windows hypervisor и платформенные условияГраница VTL и enforcementОтсутствие ошибок всего Windows
VMBR-сценарийОС может не знать о новом monitorИсточник запуска и внешний контрольУниверсальную невидимость
TDX / SNPКонкретный аппаратный и программный TCBАттестация, shared I/O, версия TCBПолную доступность и отсутствие всех каналов

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

Что связывает все четыре сценария

Нужна история происхождения самого арбитра. Кто запустил hypervisor, что удостоверяет его состояние, кто может заменить его после обновления и как проверяется результат? Без этих ответов «вынести контроль ниже» лишь переносит неявное доверие в другой компонент. С ними виртуализация становится конкретным и проверяемым элементом архитектуры защиты.

Источники и исходники

Ссылки E ведут к свидетельствам по локальному коду; S — к первичным внешним публикациям. Диапазон относится к оригинальному файлу. Статическое исследование, без запуска образцов.

S17 / SubVirt: Implementing malware with virtual machines ↗

King, Chen, Wang, Verbowski, Wang, Lorch / Microsoft Research · 2006. Первичный внешний источник. Доступ: 12.09.2026.

S14 / Virtualization-based Security ↗

Microsoft Learn · доступ 12.09.2026. Первичный внешний источник. Доступ: 12.09.2026.

S16 / Virtual Secure Mode / Hyper-V TLFS ↗

Microsoft Learn · доступ 12.09.2026. Первичный внешний источник. Доступ: 12.09.2026.

E06 / Abyss-main/AbyssBootkitPkg/Bootkit1_Boot_UEFIApplication/Modules/Module1_BootWindows0_Hookings/Functions/Protections/Protections01DriverSignatureEnforcement.c

Строки 117–247 · Разбор инструкций вокруг импорта CI и отдельная правка запроса состояния; не доказательство взлома VTL1.

Локальный снимок · файл: 253 строк · ссылка на публичный commit не установлена.

SHA-256 3e6cfd1742de6be8beecbbeb13a244bbf072fa45cf5f6468625674552663ee11

E40 / Insomnia-main/Bootkit/ExitBootServices.cpp

Строки 3–95 · Поиск winload/ядра и изменение таблицы системных служб до старта ядра.

Локальный снимок · файл: 95 строк · ссылка на публичный commit не установлена.

SHA-256 bd199edae4ea0d52a513ff9a28f168f22468980ab79009dc2038ea517fe1fa0b

E33 / bootlicker-master/bootkit/EfiMain.c

Строки 22–89 · Runtime-копия и сохранение нормального пути firmware driver.

Локальный снимок · файл: 89 строк · ссылка на публичный commit не установлена.

SHA-256 b5d6eacd79891122a0a961322f001ff88e99ab50a5edc95f8bec30466bc95799

E36 / bootlicker-master/kernel/KernelMain.c

Строки 33–81 · Thread notification callback через участок загруженного драйвера.

Локальный снимок · файл: 81 строк · ссылка на публичный commit не установлена.

SHA-256 8179ae360927cab68ab351872abf4c4e170b55039a210d48058f4e4a2e6b6951

E38 / bootlicker-master/kernel/ApcRoutine.c

Строки 71–148 · Переход от kernel APC к пользовательскому адресному пространству.

Локальный снимок · файл: 148 строк · ссылка на публичный commit не установлена.

SHA-256 9eb9c4bba44d6d5f726c8d17a9c86000f70a5d9020eaa7c1cb9fda59c2b20344

S18 / Intel TDX Security Research and Assurance ↗

Intel · доступ 12.09.2026. Первичный внешний источник. Доступ: 12.09.2026.

S20 / SEV-SNP: Strengthening VM Isolation with Integrity Protection and More ↗

AMD · white paper, доступ 12.09.2026. Первичный внешний источник. Доступ: 12.09.2026.

S21 / SEV Ciphertext Side Channel Attacks / AMD-SB-3021 ↗

AMD Product Security · доступ 12.09.2026. Первичный внешний источник. Доступ: 12.09.2026.

S19 / Trust Domain Security Guidance for Developers ↗

Intel · доступ 12.09.2026. Первичный внешний источник. Доступ: 12.09.2026.

← Предыдущий материалseL4: доказанное ядро и недоказанные ожиданияСледующий материал →Sony XCP: когда защита продукта ухудшает защиту компьютера