В
предыдущей статье был описан ход исследования модели безопасности прошивок промышленных коммутаторов. Мы показали, что обнаруженные архитектурные недостатки позволяют легко подделывать образы прошивок, обновлять ими свитчи и исполнять свой код на них (а в некоторых случаях — и на подключающихся к свитчам клиентах). В дополнение, мы описали возможности закрепления внедряемого кода на устройствах. Подчеркнули низкое качество кода прошивок и отсутствие механизмов защиты от эксплуатации бинарных уязвимостей.
Мы обещали привести реальный пример сильной модели безопасности прошивок, где модификация исполнимого кода является очень нетривиальной задачей для потенциального злоумышленника.
Встречайте –
подсистема Intel Management Engine, самая загадочная составляющая архитектуры современных x86-платформ.
Введение
Для начала, основательно разберёмся в предметной области. Что это такое, откуда и зачем появилось?
В 2005 году компания Intel представила Active Management Technology (AMT) версии 1.0 — решение для удалённого администрирования (управление, инвентаризация, обновление, диагностика, устранение неполадок и т.д.) и защиты десткопных компьютерных систем, своего рода аналог технологии Intelligent Platform Management Interface (IPMI), использующейся в серверах.
Концептуально, архитектура AMT сводится к следующему [рисунок взят
отсюда].
Это интегрированный в чипсет микроконтроллер (Management Engine) с собственной прошивкой, работающий даже тогда, когда компьютер выключен (но питание на материнскую плату подаётся, S5) или находится в спящем режиме, обладающий весьма впечатляющими возможностями:
out-of-band доступ к сетевому интерфейсу;
внутренний HTTP-сервер;
получение и хранение в энергонезависимой памяти (там же, где и его прошивка) информации об установленном «железе».
Хотя этот микроконтроллер разделяет физический сетевой интерфейс с основным CPU компьютера, он, имея отдельный контроллер канального уровня, осуществляет мониторинг всего входящего сетевого трафика, из которого «вырезает» пакеты, предназначенные для него. Для ОС компьютера (наличие и состояние которой, кстати, на работу AMT никак не влияет) этот трафик уже не виден.
Таким образом, удалённому администратору компьютерной системы AMT предоставляет следующие функции:
- инвентаризация аппаратного обеспечения компьютера;
- инвентаризация аппаратного обеспечения компьютера;
1)
2) Web User Interface (WebUI) – веб-интерфейс HTTP-сервера Management Engine;
3) Serial Over LAN (SOL) – виртуальный COM-порт, доступный по сети, позволяющий включать/перезагружать/выключать компьютер, получать доступ к меню BIOS setup;
4) IDE-Redirection (IDE-R) – опция перенаправления загрузки с локального загрузочного устройства на удалённое.
Постепенно функциональные возможности AMT пополнялись. Так, например, с AMT версии 6.0 администраторам стала доступна опция KVM (Keyboard Video Mouse).
Первая версия AMT была реализована на сетевом модуле Intel 82573E series Gigabit Ethernet Controller, встроенном в южный мост чипсета (ICH).
Затем, в 2006 году, начиная с AMT версии 2.0, микроконтроллер и всю подсистему, на которой основывалась AMT, перенесли в северный мост чипсета (GMCH). Именно тогда подсистему наименовали в Intel Management Engine (ME) версии 2.0. Причём её основе стали реализовывать и другие технологии. Так появился бренд Intel vPro, который обозначал комплекс технологий AMT, Trusted Execution Technology (TXT) и Virtualization Technology (VT).
Из-за высокой стоимости реализации (как следствие, высокой стоимости материнской платы с шильдиками Intel vPro) специальный микроконтроллер встраивали только в чипсеты линейки Q: Q965, Q35, Q45, Q45M.
А начиная с 2010 года, вместе с переносом части функций северного моста (графическое ядро, контроллер памяти и прочее) в корпус CPU, подсистема Intel ME стала встраиваться во все чипсеты производства Intel. При этом, ME-контроллер остался в корпусе чипсета – в PCH. Это чипсеты 5 серии и выше.
К этому моменту Intel ME cтала основой не только для AMT: в прошивку ME-контроллера добавлялись всё новые и новые модули. Каждый модуль являлся реализацией конкретной технологии: ASF, QST, TPM, AT, VT, AMT и т.д.
Эта подсистема стала неотъемлемой частью архитектуры компьютерной платформы, часть хардварного кода BIOS была перенесена в прошивку Intel ME. Подсистема стала интегрироваться в серверные платформы от Intel, только под другим именем – Intel Server Platform Services (SPS), а также появилась в SoC (начиная с Bay Trail) производства Intel под именем Intel Trusted Execution Engine (TXE).
Теперь, когда стало ясно откуда это пришло, и, что оно теперь есть в абсолютно каждой платформе с чипсетами Intel 5 серии и выше (от 2010 года), разберёмся детально в том, что это такое.
Теперь, когда у нас так много общей информации, давайте поговорим детально
Архитектура Intel ME
Intel Management Engine (ME) – встроенная в компьютерные платформы подсистема, обеспечивающая аппаратно-программную поддержку различных технологий Intel.
Как уже было сказано, первые версии этой подсистемы были основаны на двухкорпусных чипсетах Intel линейки Q:
А затем и на однокорпусных чипсетах:
Основными компонентами подсистемы Intel ME в компьютерной платформе являются:
1. ME-контроллер – встроенный в чипсет 32-х разрядный микроконтроллер типа RISC;
2. Регион ME в SPI флэш-памяти, хранящий прошивку для ME-контроллера;
3. ME UMA – скрытая область (объёмом 16 — 64 МБ) в оперативной памяти компьютера, которой пользуется ME-контроллер в качестве runtime-memory;
4. Management Engine Interface (MEI), ранее известный как Host Embedded Controller Interface (HECI), – набор регистров в конфигурационном пространстве PCI, а также области MMIO, представляющий интерфейс (канал обмена информацией) CPU с ME-контроллером, т.е. ОС/ПО с ME firmware;
5. Отдельный MAC – контроллер канального уровня, предоставляющий ME-контроллеру out-of-band доступ к общему физическому сетевому интерфейсу для удалённого администрирования компьютерной системой.
Опциональными компонентами подсистемы Intel ME могут являться модули ME BIOS Extenstion (MEBx) – набор модулей для обеспечения включения, инициализации работы AMT через MEI, а также системное ПО, работающее с Intel ME через MEI.
Теперь об архитектуре ME-контроллера.
Это 32-разрядный Agnourant RISC Core (ARC). Внутренние компоненты:
1. ME ROM – энергонезависимая память, хранящая стартовый код ME-контроллера;
2. ME SRAM – энергозависимая оперативная память SRAM, использующаяся ME-контроллером во время недоступности ME UMA. Например, на ранних этапах работы;
3. Кэш кода и кэш данных, обеспечивающие производительность при работе с запоминающими устройствами;
4. C-Link –шина, позволяющая ME-контроллеру взаимодействовать с внешним аппаратным обеспечением в режимах S5/S3;
5. Различные аппаратные блоки:
5.1. Контроллер прерываний;
5.2. Контроллер памяти;
5.3. DMA-контроллер, позволяющий получать доступ ко всему содержимому оперативной памяти компьютера;
5.4. Крипто-акселератор;
5.5. Сетевой контроллер;
5.6. Высокоточный таймер и WDT;
5.7. RNG;
5.8. Аппаратные фьюзы (hardware fuses).
Прошивка Intel ME
Под прошивкой Intel ME понимается стартовый код в ME ROM, и Intel ME firmware, которое хранится в ME-регионе SPI флэш-памяти.
Intel ME firmware, в зависимости от наполнения, различают двух типов:
1) 1.5 МБ, урезанные версии;
2) 5 МБ, полные версии.
Полнота прошивки определяет состав прикладных модулей, которые реализуют определённые технологии (AMT, AT и т.д.), но есть и базовая часть, одинаковая для разных типов прошивок:
1) BringUp модуль, первый загрузочный модуль прошивки;
2) Kernel, ядро ОСРВ ThreadX;
3) драйверы и службы.
Каждый модуль работает в одном из режимов: привилегированный или пользовательский.
Привилегированный режим позволяет работать с аппаратными ресурсами ME-контроллера, он используется ядром и драверами. Службам и прикладными модулям, как и положено, отводится только пользовательский режим.
Весь код в Intel ME firmware защищён от модификаций, его подлинность контролируется ЭЦП. Причём схема довольно серьёзная.
Целостность всех кодовых модулей в прошивке контролируется хэш-суммами в заголовках, которые находятся в таблице. Таблица модулей подписана, для проверки приложен открытый ключ RSA 2048-бит. Этот открытый ключ защищён от подделки: переписать ME ROM и подделать хэш-сумму нельзя.
Заключение
Очевидно, что работоспособность подсистемы Intel ME в современной компьютерной платформе критически важна, т.к. является неотъемлемой частью её архитектуры.
комментарии (0)