Классическая модель привилегий процессора описывает кольца от ring 0, где работает ядро операционной системы, до ring 3, где исполняются прикладные программы. Однако в реальных кристаллах x86 и ARM существуют уровни ещё глубже, которые условно называют кольцами с отрицательными номерами: ring -1 соответствует гипервизору, ring -2 связывают с системным режимом управления SMM, а ring -3 относят к отдельным управляющим микропроцессорам вроде Intel Management Engine или AMD Platform Security Processor. Эти уровни находятся ниже любого кода операционной системы, поэтому обычные средства наблюдения, журналы и антивирусные сканеры их попросту не видят. Понимание того, как устроена эта подложка, необходимо инженерам по безопасности, потому что настоящее доверие в вычислительной платформе начинается не с прав администратора, а с прошивки и аппаратуры. В статье рассматривается устройство каждого уровня, индустриальные ответы в виде измеренной загрузки и доверенных прошивок, инструменты проверки вроде CHIPSEC, а также мифы и факты без конспирологических преувеличений.

Гипервизор как кольцо минус один

Термин ring -1 появился после внедрения аппаратной виртуализации Intel VT-x и AMD-V. Эти расширения добавляют новый режим работы процессора, который делится на VMX root operation и VMX non-root operation. В root-режиме работает гипервизор, а в non-root-режиме теперь исполняется вся операционная система целиком вместе с её ядром, которое по-прежнему считает себя хозяином ring 0. Гостевая система не замечает подмены, потому что процессор транслирует её привилегированные операции и при необходимости передаёт управление гипервизору через механизм VM-exit.

Ключевой механизм контроля здесь называется расширенными таблицами страниц EPT у Intel или вложенными таблицами NPT у AMD. Когда гостевая операционная система обращается к памяти, её собственные таблицы страниц преобразуют виртуальный адрес в гостевой физический адрес, а затем второй уровень трансляции, полностью контролируемый гипервизором, преобразует гостевой физический адрес в настоящий машинный адрес. Получается двойное адресное пространство, в котором гипервизор решает, какие участки памяти гость вообще сможет увидеть или изменить. Операционная система не имеет никакой инструкции, позволяющей обойти эту вторую трансляцию изнутри.

Из этой архитектуры вытекает важный вывод для защиты. Код, выполняющийся в ring -1, способен читать и изменять любую память операционной системы, перехватывать её обращения к устройствам и оставаться при этом невидимым. Именно на этом принципе была построена демонстрация Blue Pill, показавшая, что вредоносный гипервизор может подселить работающую систему внутрь виртуальной машины без перезагрузки. Индустрия ответила механизмами позднего запуска вроде Intel TXT, которые измеряют код гипервизора при его старте, и аттестацией платформы, позволяющей удалённой стороне проверить, какой именно гипервизор загружен.

Системный режим управления SMM как минус второе кольцо

Ещё глубже гипервизора находится System Management Mode, который сообщество безопасности называет ring -2. Этот режим существует в процессорах x86 со времен Intel 386 и задумывался для задач управления питанием и тепловыми режимами. Когда срабатывает системное прерывание управления SMI, процессор прерывает всё, включая гипервизор, сохраняет своё состояние и переходит на исполнение кода из особой области памяти SMRAM. Контроллер памяти после корректной инициализации блокирует доступ к SMRAM для любого кода, кроме самого SMM, поэтому операционная система и гипервизор физически не могут прочитать или изменить прошивочный обработчик.

Внутри SMM прошивка решает задачи, которые производитель считает своей зоной ответственности: реакция на перегрев кристалла, эмуляция устаревшей периферии, обработка специальных клавиш на мобильных платформах, программирование регистров чипсета. Проблема заключается в том, что код SMM исполняется с полным доступом ко всей физической памяти машины, обходя и таблицы операционной системы, и таблицы EPT гипервизора. Если обработчик SMI содержит уязвимость, а злоумышленник сумеет спровоцировать его вызов с подменёнными аргументами, то возможна скрытая модификация памяти ядра на любом уровне. Именно на таких атаках были построены ранние поколения прошивочных закладок, которые переживали полную переустановку операционной системы.

Историческая боль индустрии состоит в том, что SMM-код десятилетиями писался без строгой проверки входных данных, потому что считался недостижимым. После серии публичных исследований производители стали подписывать модули SMM внутри образов прошивки, защищать область прошивки механизмами boot guard и добавлять в измеренную загрузку хэши конфигурации SMRAM. Современный подход требует, чтобы обработчики SMI проверяли каждый указатель, приходящий из непривилегированной области, и не доверяли буферам за пределами SMRAM.

Управляющий микропроцессор как минус третье кольцо

Условным ring -3 называют отдельные вычислительные ядра, встроенные в платформу и работающие независимо от центрального процессора. У Intel это Management Engine, у AMD аналогичную роль играет Platform Security Processor, а на серверных платах существует ещё и контроллер управления платой BMC. Management Engine представляет собой встроенный микропроцессор со своей памятью и собственной операционной системой на основе ядра реального времени. Он получает питание даже тогда, когда основная система выключена, но блок питания подключён, и отвечает за инициализацию платформы, удалённое администрирование через технологии vPro, защищённый вывод мультимедиа и ряд сервисных функций.

С точки зрения модели угроз Management Engine обладает доступом к системной шине и может читать области оперативной памяти через контроллер прямого доступа, хотя в новых реализациях этот доступ ограничен. Код модуля закрыт и подписан ключами производителя, поэтому пользователь не может ни заменить его, ни полностью отключить на большинстве плат, хотя существует исследовательский проект me_cleaner, убирающий часть модулей из образа прошивки. За последние годы в микропрограмме Management Engine находили серьёзные уязвимости, включая ошибки в сетевом стеке удалённого администрирования, что подтверждает главный тезис: подложка платформы сама является полноценной вычислительной системой со своими ошибками.

На архитектуре ARM аналогичную роль выполняет не отдельный чип, а уровень привилегий EL3 внутри того же процессора вместе с технологией TrustZone. Монитор безопасного мира на EL3 переключает процессор между обычным миром, где живёт основная операционная система, и безопасным миром, где исполняется доверенная среда выполнения с более высокими уровнями EL1S и EL0S. Функционально это тот же принцип подложки: доверенный код существует ниже той ОС, которую видит пользователь, и контролирует ключи, платёжные токены и проверку загрузки.

Почему операционная система не видит глубокие уровни

Общий принцип всех отрицательных колец заключается в односторонней видимости. Верхний уровень в модели привилегий не имеет ни инструкций, ни регистров для наблюдения за нижним. Операционная система не может прочитать память гипервизора, потому что тот управляет таблицами EPT. Ни система, ни гипервизор не могут заглянуть в SMRAM, потому что контроллер памяти аппаратно отклоняет такие транзакции. Ядро не может проверить состояние Management Engine, потому что это другой процессор с собственной шиной. Следовательно, любые журналы событий, средства аудита и сканеры памяти внутри операционной системы описывают лишь то, что нижние уровни решили ей показать. Доверие в этой модели течёт снизу вверх, и нарушение целостности прошивки делает бессмысленными все проверки выше.

Измеренная загрузка и доверенная прошивка

Промышленный ответ на угрозы подложки строится вокруг идеи измерения. Платформа проходит цепочку загрузки, в которой каждый компонент вычисляет криптографический хэш следующего компонента до передачи ему управления. Эти хэши расширяются в регистры конфигурации платформы PCR внутри модуля TPM, причём расширение устроено так, что подменить историю измерений задним числом невозможно. Существует два варианта подхода: verified boot, где несоответствующий подписи компонент просто не запускается, и measured boot, где компонент запускается, но его измерение фиксируется, и удалённая аттестация позже выявляет подмену. Второй вариант гибче и применяется в центрах обработки данных для проверки прошивок тысяч серверов.

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

Инструменты проверки и практические уроки

Проверка состояния подложки ведётся специализированными средствами. Набор CHIPSEC, разработанный Intel, представляет собой открытый каркас на языке Python, который тестирует конфигурацию прошивки на типичные ошибки: открытые окна записи в SMRAM, незаблокированные регистры чипсета, отсутствие защиты SPI-флэша от записи, неверные настройки механизмов boot guard. Дополнительно применяется считывание образа SPI-флэша внешним программатором для автономного анализа и сравнение измерений PCR с эталонными значениями. На уровне гипервизора доступ исследователей подкрепляется счётчиками производительности процессора: аномальная частота событий VM-exit показывает скрытое присутствие гипервизора, а утилиты вроде checksmm проверяют целостность режимов.

  1. Проверить, что регион SMRAM закрыт и заблокирован до загрузки операционной системы.
  2. Убедиться, что интерфейс SPI-флэша защищён аппаратными битами записи.
  3. Включить измеренную загрузку и сверить значения PCR после обновления прошивки.
  4. Запустить модули CHIPSEC полного набора и исправить найденные предупреждения.
  5. Организовать удалённую аттестацию прошивок для серверного парка.

Главный урок трезв и практичен. Настоящий корень доверия расположен ниже административных прав операционной системы, поэтому модель безопасности обязана включать прошивку как самостоятельный объект защиты: с обновлениями, аудитом и измерениями. При этом конспирологические трактовки не нужны. Management Engine создан для задач администрирования и инициализации, SMM для управления питанием, а гипервизорные режимы для виртуализации и защиты; их риски объясняются сложностью и ошибками проектирования, а не тайными замыслами. Грамотный инженер относится к отрицательным кольцам как к части инфраструктуры: их нельзя игнорировать, но их можно измерять, проверять и укреплять доступными индустриальными методами.

Практическая программа укрепления подложки сводится к регулярным действиям. Прошивки обновляются вместе с системным программным обеспечением по официальным каналам производителя, потому что значительная часть исправлений последних лет относится именно к режиму SMM и к микрокоду. Защита записи SPI-флэша включается аппаратными битами статуса ещё на этапе загрузчика, а не в пользовательском пространстве. Счётчики производительности процессора и периодический профиль событий виртуализации помогают обнаружить неучтённый гипервизор на критичных узлах, а сверка измерений PCR с эталоном превращает целостность прошивки из вопроса веры в проверяемый факт. В корпоративной среде к этому добавляются контроль цепочки поставок оборудования, автономное чтение образов флэш-памяти программатором для выборочной проверки и документирование того, какие модули подложки реально используются. Такая дисциплина закрывает основную массу реалистичных сценариев компрометации глубоких уровней без чрезмерных затрат и без отказа от удобных функций платформы, вроде виртуализации и удалённого администрирования, которые при корректной настройке сами становятся инструментами защиты.