СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Безопасность прошивок на примере подсистемы Intel Management Engine в черновиках



В предыдущей статье был описан ход исследования модели безопасности прошивок промышленных коммутаторов. Мы показали, что обнаруженные архитектурные недостатки позволяют легко подделывать образы прошивок, обновлять ими свитчи и исполнять свой код на них (а в некоторых случаях — и на подключающихся к свитчам клиентах). В дополнение, мы описали возможности закрепления внедряемого кода на устройствах. Подчеркнули низкое качество кода прошивок и отсутствие механизмов защиты от эксплуатации бинарных уязвимостей.
Мы обещали привести реальный пример сильной модели безопасности прошивок, где модификация исполнимого кода является очень нетривиальной задачей для потенциального злоумышленника.

Встречайте – подсистема 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)