Содержание
- H Безопасность прошивок на примере подсистемы Intel Management Engine в черновиках
- Введение
- Архитектура Intel ME
- Прошивка Intel ME
- INAV 6 release!! Стоит ли обновляться?
- Заключение
- Как обновить прошивку Intel Management Engine?
- Как обновить прошивку Intel Management Engine
- iOS 16.4 — настройки iPhone, которые нужно изменить прямо сейчас на iOS 16.4!
- Intel ME Manufacturing Mode — скрытая угроза, или что стоит за уязвимостью CVE-2018-4251 в MacBook
- Что такое Manufacturing Mode
- iOS 16.4 обновление! Что нового в iOS 16.4? Скорость, батарея, фишки iOS 16.4. Полный обзор iOS 16.4
- OEM public key
- Обход блокировки записи в ME-регион
- Host ME Region Flash Protection Override
- Перезагрузка ME без перезагрузки основного CPU
- Практический случай: уязвимость CVE-2018-4251
- Локальная эксплуатация INTEL-SA-00086
- Как защититься
- Заключение

Надеюсь, это поможет.
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 никак не влияет) этот трафик уже не виден.
- инвентаризация аппаратного обеспечения компьютера;
- инвентаризация аппаратного обеспечения компьютера;
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 флэш-памяти.
INAV 6 release!! Стоит ли обновляться?

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 в современной компьютерной платформе критически важна, т.к. является неотъемлемой частью её архитектуры.
Как обновить прошивку Intel Management Engine?
Если чипсет Intel, встроенный в вашу систему, имеет Intel Management Engine, эта статья будет вам полезна. Здесь мы обсудим, как обновить прошивку Intel Management Engine на ПК с Windows. Intel Management Engine — это микроконтроллер, встроенный в некоторые наборы микросхем Intel. Он предоставляет множество функций и услуг для компьютерных систем на базе процессоров Intel.

Что такое Intel Management Engine (Intel ME)?
Intel Management Engine, также называемый Intel ME, представляет собой микроконтроллер, встроенный в некоторые наборы микросхем Intel. Он работает под управлением облегченной микроядерной операционной системы, которая предоставляет различные функции и услуги для компьютерных систем на базе процессоров Intel. Некоторые функции Intel Management Engine включают маломощные и внеполосные службы, защиту от кражи, защищенный аудио-видеоканал и т. д.
Вы можете считать это параллельной операционной системой, которая имеет доступ к оборудованию вашего компьютера. Он запускается, когда ваш компьютер спит, загружается и когда работает ваша операционная система. Во время инициализации системы он загружает свой код из флэш-памяти системы, что позволяет ему работать до того, как будет запущена основная операционная система вашего компьютера.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Состояния питания Intel Management Engine или Intel ME не зависят от состояний питания операционной системы хоста. Благодаря этой функции он остается включенным, даже когда микропроцессор и другие компоненты системы находятся в спящем режиме. Следовательно, он может отвечать на команды OOB (внеполосное управление) из консоли управления ИТ, не выводя из спящего режима остальную часть системы.
Вы можете проверить номер версии микропрограммы Intel Management Engine, зайдя в системный BIOS.
Как обновить прошивку Intel Management Engine

iOS 16.4 — настройки iPhone, которые нужно изменить прямо сейчас на iOS 16.4!
Вы можете обновить прошивку Intel Management Engine, загрузив последний патч с официального сайта производителя вашего компьютера. Если производителем вашего компьютера выпущен обновленный патч для микропрограммы Intel Management Engine, он будет доступен на официальном веб-сайте. Вы можете скачать обновление оттуда и установить его вручную, запустив установочный файл. Посетите официальный сайт производителя вашего компьютера и введите номер модели вашего компьютера. Если Intel ME встроен в вашу систему и обновление встроенного ПО для него выпущено производителем для вашей модели системы, вы сможете загрузить его.
Еще одна вещь, которую вы должны отметить, это обновление прошивки Intel Management Engine, которое должно быть совместимо с вашей версией ОС Windows. Вместо добавления номера модели продукта и другой информации вручную вы также можете использовать функцию автоматического определения. Функция автоматического определения определит конфигурацию вашей системы и номер модели.
Когда следует обновлять прошивку Intel Management Engine?
Ранее уязвимости системы безопасности были обнаружены в Intel Management Engine. Эти лазейки в безопасности были обнаружены внешними исследователями. После этого корпорация Intel провела комплексную проверку безопасности Intel ME, Intel TXE и Intel SPS и обнаружила, что эти уязвимости в системе безопасности потенциально могут повлиять на определенные компьютеры, серверы и платформы IoT. Подвержены системы, использующие микропрограмму Intel ME версии 6.x-11.x, серверы, использующие микропрограмму SPS версии 4.0, и системы, использующие TXE версии 3.0.

Вы можете проверить, могут ли эти уязвимости повлиять на вашу систему, с помощью инструмента определения версии Intel CSME. Этот инструмент доступен для загрузки на официальный сайт интел. После загрузки этого инструмента извлеките загруженную папку, а затем откройте папку с графическим интерфейсом. Теперь запустите EXE-файл. Если результаты показывают, что ваша система уязвима, вам следует обновить Intel ME. Если этот инструмент не обнаружил уязвимости, обновлять Intel ME не нужно. Однако вы можете проверить наличие обновления. Если обновление доступно, вы можете установить его.
Обратите внимание, что вы можете загрузить последнее обновление для Intel ME только с официального сайта производителя вашего компьютера. В Интернете могут быть веб-сайты, предлагающие последний патч для Intel ME. Но вам следует избегать загрузки последнего исправления с ненадежных или неавторизованных веб-сайтов.
Надеюсь, это поможет.
Читать далее: Как обновить драйвер Intel Graphics в Windows.
Intel ME Manufacturing Mode — скрытая угроза, или что стоит за уязвимостью CVE-2018-4251 в MacBook


Принцип «безопасность через неясность» не один год критикуется специалистами, но это не мешает крупным производителям электроники под предлогом защиты интеллектуальной собственности требовать подписания соглашений о неразглашении для получения технической документации. Ситуация ухудшается из-за возрастающей сложности микросхем и интеграции в них различных проприетарных прошивок. Это фактически делает невозможным анализ таких платформ для независимых исследователей, что ставит под удар как обычных пользователей, так и производителей оборудования.
Примером может служить технология Intel Management Engine (Intel ME), а также ее версии для серверных (Intel SPS) и мобильных (Intel TXE) платформ (подробнее об этой технологии см. [5], [6]. В этой статье мы расскажем, как используя недокументированные команды (если термин «документированный» вообще применим к Intel ME), можно перезаписать память SPI flash и реализовать самый страшный сценарий — локальную эксплуатацию уязвимости в ME (INTEL-SA-00086). Корнем данной проблемы оказался недокументированный режим работы Intel ME — Manufacturing Mode.
Что такое Manufacturing Mode
Intel ME Manufacturing Mode — сервисный режим работы, предназначенный для конфигурирования, настройки и тестирования конечной платформы на стадии производства; он обязательно должен быть отключен перед поступлением оборудования в продажу и отгрузкой пользователю. Ни этот режим, ни его потенциальные риски не описаны в публичной документации Intel. Обычный пользователь не имеет возможности выключить его самостоятельно, так как утилита для управления им из пакета Intel ME System Tools официально не доступна. Отметим, что никакие программные средства защиты не способны защитить пользователя, в случае если этот режим оказался включенным, или хотя бы оповестить его об этом. Даже утилита Chipsec [2], которая специально предназначена для выявления ошибок конфигурации чипсета и процессора на уровне прошивки UEFI (в частности, неправильного конфигурирования прав доступа к регионам SPI flash), ничего не знает об Intel Manufacturing Mode.
Этот режим позволяет задавать критически важные параметры платформы, хранящиеся в однократно записываемой памяти (FUSES). Примером таких параметров, которые «зашиваются» во FUSES, являются параметры BootGuard (режим, политики, контрольная сумма ключа цифровой подписи для модулей ACM и UEFI). Часть из них называются FPF (Field Programmable Fuses). Список FPF, которые могут быть записаны в FUSES (неполный, на самом деле ряд FPF нельзя задать напрямую), можно получить через утилиту FPT (Flash Programming Tool) из пакета Intel ME System Tools.

Рис 1. Результат работы опции –FPFs утилиты FPT
Следует отметить, что на долю FPFs приходится лишь часть общего массива FUSE, а большая часть этой памяти используется самой Intel для хранения множества параметров платформы. Например, часть пространства этого массива называется IP Fuses и предназначена для хранения конфигурационных параметров отдельных аппаратных модулей (Intelligent Property). Так, специальное устройство DFx Aggregator хранит во FUSE признак того, является ли платформа серийной или тестовой.
Помимо FPF, в Manufacturing Mode производитель оборудования имеет возможность задавать параметры прошивки Intel ME, которые хранятся во внутренней файловой системе прошивки — MFS, на носителе SPI flash. Эти параметры могут быть изменены в случае перепрограммирования SPI flash. Они носят название CVARs (Configurable NVARs, Named Variables).
За установку CVARs отвечает модуль прошивки Intel ME — mca_server. MCA — это аббревиатура Manufacture-Line Configuration Architecture, общего названия процесса конфигурации платформы на этапе производства. CVARs, так же как и FPF, могут быть заданы и прочитаны с использованием FPT.

Рис 2. Список CVARs, выводимых утилитой FPT для платформы Broxton P
Список переменных CVARs зависит от платформы и версии прошивки Intel ME. Для чипсетов, поддерживающих технологию Intel AMT, одной из таких переменных является пароль для входа в MEBx (ME BIOS Extension).
Установка FPFs и практически всех переменных CVARs возможна только в том случае, если прошивка Intel ME функционирует в Manufacturing Mode. Сам процесс установки FPFs разделен на два этапа: задание значений FPFs (которые сохраняются во временную память) и перенос значений FPFs в массив фьюзов. При этом первый этап возможен только в Manufaturing Mode, а реальный «прожиг» происходит автоматически, после выхода из Manufacturing Mode, если во время работы в этом режиме производитель задал значения FPF и при этом соответствующий диапазон в массиве фьюзов еще никогда не записывался. Таким образом, если система функционирует в Manufacturing Mode, переменные FPF, скорее всего, не инициализированы.
Признак отключения Manufacturing Mode хранится в файле /home/mca/eom на MFS, таким образом при перезаписи SPI flash прошивкой c базовой файловой системой (подробнее в [9]) платформа имеет возможность опять функционировать в Manufacturing Mode (но перезаписать FUSES уже не получится).
iOS 16.4 обновление! Что нового в iOS 16.4? Скорость, батарея, фишки iOS 16.4. Полный обзор iOS 16.4
OEM public key
Таким образом, процедура конфигурации платформ Intel довольно сложна и состоит из нескольких этапов. Если производитель оборудования нарушил или изменил последовательность, то платформа подвергается серьезному риску. Даже если Manufacturing Mode завершен, производитель мог не записать FUSES, что даст возможность злоумышленнику сделать это за него, записав свои значения вместо ключа для подписи стартового кода модулей BootGuard (AСM) и UEFI и таким образом позволив загружаться платформе только с его вредоносным кодом, причем на постоянной основе. Это приведет к безвозвратной потере оборудования, так как мошеннический ключ будет прописан в постоянную память, навсегда (подробности этой атаки можно найти в исследовании Александра Ермолова «Safeguarding rootkits: Intel BootGuard» [8]).
В новых системах (Apollo Lake, Gemini Lake, Cannon Point) в FPF хранится не только ключ для BootGuard, но и открытый ключ OEM (вернее, SHA-256 от RSA OEM public key), на который опираются сразу несколько механизмов защиты ME. Например, в специальном разделе SPI flash, называемом Signed Master Image Profile (SMIP), хранятся заданные производителем PCH Straps (аппаратная конфигурация PCH). Этот раздел подписан на ключе, SHA-256 от которого помещен в специальный файл на SPI flash. Этот файл называет oem.key, находится в разделе FTPR и содержит разные публичные ключи, поставляемые OEM, для подписи самых разных данных. Приведем полный список наборов данных, которые подписываются производителем, каждый на уникальном ключе, для платформы Cannon Point:

Рис 3. Список подписываемых OEM данных платформы CNP
Сам файл oem.key подписан общим корневым ключом OEM, хеш-сумма которого должна быть записана в FPFs.

Рис 4. OEM Signing
Обход блокировки записи в ME-регион
До недавнего времени (до Intel Apollo Lake) прошивка Intel ME находилась в отдельном SPI-регионе, который имел независимые права доступа для CPU, GBE и ME. Таким образом, при правильной конфигурации атрибутов доступа со стороны CPU (основной системы) невозможно было ни прочитать, ни записать прошивку ME. Однако современные SPI-контроллеры чипсетов Intel, имеют специальный механизм Master Grant. Эта технология закрепляет за каждым SPI-мастером строго определенную часть SPI flash, этот мастер является владельцем своего региона, вне зависимости от прав доступа указанных в SPI-дескрипторе. Каждый мастер имеет возможность предоставить доступ (на чтение или на запись) к своему (и только своему) региону другому мастеру, какому пожелает.

Рис 5. Отрывок документации Intel, описывающий SPI Master Grant
Таким образом, даже если в SPI-дескрипторе прописан запрет на доступ к SPI-региону ME со стороны хоста, ME может все равно предоставить доступ к своим данным. На наш взгляд, это сделано для возможности обновления прошивки Intel ME в обход стандартного алгоритма.
Host ME Region Flash Protection Override
В прошивке Intel ME реализована специальная HECI-команда, которая позволяет открыть доступ на запись к ME-региону SPI со стороны CPU. Она называется HMR FPO (Host ME Region Flash Protection Override). В одном из наших предыдущий исследований мы подробно описывали эту команду [5]. У нее есть несколько особенностей.
После получения команды HMR FPO прошивка откроет доступ к своему региону только после перезагрузки. В самом МЕ также предусмотрена защита: команда воспринимается только в период выполнения UEFI BIOS, до так называемого момента End of Post (EOP). EOP — это еще одна HECI-команда, которую посылает UEFI BIOS до передачи управления операционной системе (ExitBootServices). В некоторых BIOS Setup можно найти опцию, которая и обеспечивает отправку команды HMRFPO до EOP.
Рис 6. Открытие ME-региона в BIOS
После получения EOP прошивка ME игнорирует HMR FPO, возвращая соответствующий статус. Но это происходит только после завершения режима Manufacturing Mode. Таким образом, прошивка ME в Manufacturing Mode воспринимает HMR FPO в любое время, вне зависимости от End of Post. Если производитель не закрыл режим Manufacturing Mode, злоумышленник (формально говоря, для этого нужны права администратора, но ведь даже ядро ОС изначально не может перезаписывать прошивку ME) может в любое время изменить прошивку ME. На этом этапе атакующий может перезаписывать образ МЕ, например для эксплуатации уязвимости INTEL-SA-00086. При этом возникает необходимость перезагрузки, но это не является помехой на практически всех платформах, кроме MacBook. Именно на компьютерах Apple существует дополнительная проверка в UEFI, которая осуществляется в момент старта и блокирует запуск системы, если регион ME открыт с помощью HMRFPO. Однако, как мы покажем далее, этот механизм защиты преодолевается, если прошивка ME функционирует в Manufacturing Mode.
Перезагрузка ME без перезагрузки основного CPU
В современных компьютерах существует несколько вариантов перезагрузки платформы. Из них задокументированы: глобальная перезагрузка и перезагрузка только основного CPU (без перезагрузки ME). Однако, если существует способ перезагрузить МЕ без перезагрузки основного CPU (предварительно выполнив также команду HMRFPO), доступ к региону откроется, а основная система продолжит функционировать.

Рис 7. Управление типом перезагрузки
Исследовав внутренние модули прошивки ME, мы обнаружили, что существует HECI-команда («80 06 00 07 00 00 0b 00 00 00 03 00», подробнее об отправке команд см. [5]) для перезагрузки только (!) ядра Intel ME, которая в Manufacturing Mode может быть послана также в любое время, даже после EOP.

Рис 8. Листинг дизассемблера функции, выполняющей обработку HECI-команд перезагрузки ME
Таким образом, злоумышленник, послав эти две HECI-команды, открывает ME-регион и может писать туда любые данные, без перезагрузки платформы. При этом совершенно неважно, чтó содержит SPI-дескриптор, то есть правильные атрибуты защиты SPI-регионов не защищают прошивку ME от изменения, если система функционирует в Manufacturing Mode.
Практический случай: уязвимость CVE-2018-4251
Мы проанализировали несколько платформ разных производителей. Среди них были ноутбуки компании Lenovo и Apple MacBook Prо. В исследованных компьютерах из линейки Yoga и ThinkPad мы не нашли каких-либо проблем, связанных с Manufacturing Mode, зато ноутбуки компании Apple, основанные на чипсетах Intel, функционируют в Manufacturing Mode. После передачи этой информации в компанию Apple данная ошибка (CVE-2018-4251) была исправлена в обновлении ОС macOS High Sierra 10.13.5.
Локальная эксплуатация INTEL-SA-00086
Итак, используя уязвимость CVE-2018-4251, злоумышленник может записывать старые версии прошивки ME, содержащие уязвимость INTEL-SA-00086, и при этом ему не нужен ни SPI-программатор, ни доступ к перемычке HDA_SDO (то есть физический доступ). Таким образом реализуется самый опасный — локальный — вектор этой уязвимости (выполнение произвольного кода в прошивке ME). Примечательно, что в пояснениях к бюллетеню безопасности INTEL-SA-00086 Intel не упоминает открытый Manufacturing Mode как средство для эксплуатации данной уязвимости локально, без физического доступа, а говорит лишь о том, что локальная эксплуатация возможна только при неправильной настройке доступа к SPI-регионам, что не соответствует действительности. Для защиты пользователей мы решили описать, как проверить наличие Manufacturing Mode и как его отключить.
Как защититься
В пакет системных утилит для разработчиков оборудования на основе чипсетов и процессоров Intel (Intel System Tools) входит утилита MEInfo (TXEInfo, SPSInfo для мобильных и серверных платформ соответственно), которая предназначена для того, чтобы получить расширенную диагностическую информацию о текущем состоянии прошивки Management Engine и всей платформы в целом. Мы демонстрировали эту утилиту в одном из наших предыдущих исследований, посвященном отключению ME и недокументированному режиму HAP (High Assurance Platform) [6]. Эта утилита, вызванная с флагом –FWSTS, выдает подробное описание статусных HECI-регистров и сообщает статус Manufacturing Mode (установленный 4-й бит статусного регистра FWSTS сигнализирует о том, что Manufacturing Mode активен).

Рис 9. Пример вывода утилиты MEInfo
Мы также разработали программу [7], с помощью которого можно проверить статус Manufacturing Mode, если у пользователя по какой-либо причине нет доступа к Intel ME System Tools.

Рис 10. Пример работы скрипта mmdetect
Возникает вопрос, как самостоятельно завершить Manufacturing Mode, если оказалось так, что производитель не сделал этого. Для завершения Manufacturing Mode утилита FPT имеет специальную опцию, –CLOSEMNF, которая, кроме своего основного назначения, также позволяет установить рекомендуемые права доступа к регионам SPI flash в дескрипторе.

Рис 11. Результат работы утилиты FTP с опцией –CLOSEMNF
В данном примере мы использовали параметр NO опции –CLOSEMNF для того, чтобы не выполнять перезагрузку платформы, которая производится по умолчанию сразу после завершения Manufacturing Mode.
Заключение
Наше исследование показывает, что проблема Manufacturing Mode прошивки Intel ME существует и даже такие крупные производители, как Apple, способны ошибаться при конфигурации платформ Intel. Хуже всего, что нет никакой публичной информации на эту тему и конечные пользователи даже не догадываются о такой серьезной проблеме, способной привести к потере конфиденциальной информации, появлению неудаляемых руткитов и безвозвратному выводу оборудования из строя.
Кроме того, у нас есть подозрения, что возможность перезагружать ME без перезагрузки основного CPU может повлечь за собой и другие проблемы в безопасности из-за рассинхронизации состояний BIOS/UEFI и ME.
Авторы: Марк Ермолов и Максим Горячий
Похожие статьи
-
Intel management engine interface что это
* кстати с помощью DuckDuckGo вы можете шифровать поисковые запросы в Google, добавив в начале запроса слово !google. Ктонибудь может внятно сказать…
-
Intel management engine что это
Так продолжалось вплоть до 2017 года. И как раз в этом году один хакер выявил серьезную уязвимость в Intel Management Engine Components. Что это за…
-
Российская компания Positive Technologies (Дмитрий Скляров ) обнаружила, что версия 11 прошивки ME работает под управлением MINIX 3. Intel Management…