Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
ptsecurity.com
Intel ME Manufacturing Mode — скрытая угроза
Максим Горячий
Марк Ермолов
О нас
Марк Ермолов
Исследователь по безопасности
Twitter: @_markel___
e-mail: mermolov[at]ptsecurity[dot]com
Максим Горячий
Исследователь по безопасности
Twitter: h0t_max
e-mail: mgoryachy[at]ptsecurity[dot]com
Мотивация и немного истории
Мы обнаружили уязвимость
в Intel ME 11,
которая позволяет выполнять
произвольный код
(INTEL-SA-00086)*
*How to Hack a Turned-Off Computer, or Running Unsigned Code in Intel Management Engine
Для успешной эксплуатации
необходим доступ на запись к
региону МЕ
Мы начали искать способ добиться
записи в регион МЕ…
Мы нашли несколько
недокументированных HECI команд,
которые позволяют перезаписать
регион МЕ
Содержание
Обзор Intel-SA-00086
Обход защиты записи МЕ региона
Интерфейс HECI
Manufacturing Mode
Перезагрузка платформы
Как защититься
Обзор Intel-SA-00086
Intel ME
• Недокументированная технология с закрытой прошивкой
• «Root of trust» для многих технологий, связанных с безопасностью
• Имеет полный доступ к аппаратуре
• Может перехватывать пользовательские данные с помощью встроенных устройств
• Контролирует все стадии работы платформы
Уязвимость Intel-SA-00086
• CVSSv3: AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H (8.2 High )
• Атакующему необходим доступ на запись в МЕ регион
• Уязвимы Intel® Management Engine (ME), Intel® Server Platform Services (SPS), and Intel® Trusted Execution Engine (TXE)
Уязвимые платформы
• 6th, 7th & 8th Generation Intel® Core™ Processor Family
• Intel® Xeon® Processor E3-1200 v5 & v6 Product Family
• Intel® Xeon® Processor Scalable Family
• Intel® Xeon® Processor W Family
• Intel® Atom® C3000 Processor Family
• Apollo Lake Intel® Atom Processor E3900 series
• Apollo Lake Intel® Pentium™
• Celeron™ N and J series Processors
Intel-SA-00086: PoC
JTAG PoC для Gigabyte Brix GP-BPCE-3350C
github.com/ptresearch/IntelTXE-PoC
Обход защиты от записи
Как можно перезаписать ME регион
• Ошибки в конфигурации в дескрипторе SPI flash
• Через недокументированное сообщение HMR-FPO HECI
Manufacture mode
Атаки на переменные UEFI
DMA attack
• Перемычка Security Descriptor Override
• SPI программатор
SPI-Flash Layout
DESC
GBE
BIOS
ME
SPI-Flash Region Access Permissions
SPI-Flash Access Control: хороший случай
DESC BIOS ME GBE
DESC NA NA NA NA
BIOS R R/W -/- -/-
ME R R R/W R
GBE -/- -/- -/- R/W
FROMTO
SPI-Flash Access Control: плохой случай
DESC BIOS ME GBE
DESC R/W NA NA NA
BIOS R/W R/W R/W R/W
ME R/W R/W R/W R/W
GBE R/W R/W R/W R/W
FROM
TO
ME-Region Permissions: реальный мир
Model Read Write
ASUS Z170-A - -
Gigabyte Brix 3350C + +
Gigabyte Brix 6300 + +
Gigabyte Z97M + +
Gigabyte B360 + +
Lenovo Yoga - -
Lenovo ThinkPad x260 - -
Apple + -
Intel NUC - -
«Магическая» перемычка
ME FW Overwrite
Интерфейс HECI
Management Engine Interface (MEI)
• HECI (Host-Embedded Communication Interface)
• PCI устройство с BDF 0:22:0(1)
• Реализует кольцевой буфер, доступный через MMIO регистры MEI
• Приложение ME взаимодействует с приложениями хоста через MEI, используя уникальные идентификаторы клиентов
• Каждый идентификатор клиента определяет структуру сообщений, проходящих через MEI
HMR FPO Enable MKHI Command
• HMR FPO — Host ME Region Flash Protection Override
• MKHI command ID 0x01, из группы MKHI_GROUP_ID_HMRFPO (0x05)
• Команда целиком: 0x800c0007 0x00000105 0x00000000 0x00000000
• Обрабатывается только до End of Post
• Разрешает доступ регионам после перезагрузки
• Если команда отработала, ME регион SPI может быть перезаписан, игнорируя настройки доступа
HMR FPO Enable MKHI Command
• HMR FPO - Host ME Region Flash Protection Override
• MKHI command ID 0x01, из группы MKHI_GROUP_ID_HMRFPO (0x05)
• Команда целиком: 0x800c0007 0x00000105 0x00000000 0x00000000
• Обрабатывается только до End of Post (???)
• Разрешает доступ регионам после перезагрузки
• Если команда отработала, ME регион SPI может быть перезаписан, игнорируя настройки доступа
Загрузка системы
Reset
VectorMemory Init
CPU
ME
Loading Kernel Start CPU Waiting DID
Module
Waiting EOP
Send EOPDXE
ModuleModule
Start OSSend DID DXEDXE
Lock
Configuration
Reset
Vector
Загрузка системы (на самом деле)
Reset
VectorMemory Init
Reset
Vector
CPU
ME
Loading Kernel Start CPU Waiting DID
Module
Waiting EOP
Send EOPDXE
ModuleModule
Start OSSend DID DXEDXE
Lock
Configuration
MMode
is active
No
Yes
HMR FPO Enable MKHI Command
• HMR FPO - Host ME Region Flash Protection Override
• MKHI command ID 0x01, из группы MKHI_GROUP_ID_HMRFPO (0x05)
• Команда целиком: 0x800c0007 0x00000105 0x00000000 0x00000000
• Обрабатывается только до End of Post
• Разрешает доступ регионам после перезагрузки
• Если команда отработала, ME регион SPI может быть перезаписан, игнорируя настройки доступа
Manufacturing Mode
ME FW Manufacture mode
• Инициализационный режим ME Firmware, разработан для производителей платформ*
• Позволяет задавать конфигурацию BootGuard, ISH и ряда других настроек PCH
• Можно определить по 4-му биту of HFS MEI регистре (+0x40 MEI config space offset)
• Intel добавила функцию автоматического отключения для ME 11+
• На некоторых платформах хранится в энергонезависимой памяти (FUSEs)
home/mca/[5]
1: iF=070 m=dN---Irwxr-x--- u=0046 g=00EE s=1DEF2070.4A32.D29AC77F . <dir> Non-I
2: iF=008 m=dN---Ir-xr-xr-x u=0000 g=0000 s=10000008.0000.00000000 .. <dir> Non-I
3: iF=071 m= N---Irw-r----- u=0000 g=00EE s=137D3071.06F6.9D4401C2 eom 1 Non-I
4: iF=072 m= N---Irw-r--r-- u=0046 g=00EE s=1E234072.6FE5.A11D54CB manuf_lock 1 Non-I
5: iF=03B m= N---Irwxr----- u=0000 g=00EE s=10B0E03B.1A3B.17744312 deploy 32 Non-I
Flash Descriptor: unlock
Read HECI
Message
write(/susram/hmrfpo, 1)
Lock = True
Is EOPIs MM Active?
Is HMR_FPO
Starthmrfpo = read(/susram/hmrfpo)
Lock = Falsehmrfpo == 0 Set R/W Access
Lock == False
End
Мы обнаружили, что ноутбуки Apple
на чипсетах Intel функционируют в
Manufacturing Mode
Еще одна проблема
Компьютеры Apple имеют
дополнительную проверку в UEFI,
которая выполняется в момента
старта и блокирует дальнейшую
загрузку, если регионы SPI flash
открыты на запись
Перезагрузка платформы
Platform Reset: CPU Side
https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/100-series-chipset-datasheet-vol-2.pdf
Platform Reset Type
ME CPU
Global Reset + +
Soft Reset - +
??? + -
ME Rest HECI Command
• MKHI command ID 0x0b, из группы 00
• MEI команда целиком : 0x80060007 0x00000b00
0x00000300
• Может быть отправлена в любой момент, даже после
EOP
Обход защиты от записи
/susram/hmrfpo := 1 send ME_RESET*
If (/susram/hmrfpo==1)
set R\W access
send HMR_FPO*
rewrite ME-region**
Attacker: Step 1 ME
ME
Attacker: Step 2
Attacker: Step 3
*Need access to HECI device
**Need access to SPI device
Демо
CVE-2018-4251
INTEL-SA-00086 + CVE-2018-4251
Локальный вектор эксплуатации для
INTEL-SA-00086, который позволяет
выполнить произвольный код в Intel ME
Отдаленные последствия
Как защититься
Detection: MEInfo
Detection: CHIPSEC
github.com/chipsec/chipsec/releases/tag/v1.3.6
Disabling Manufacturing Mode
fitw64.exe –closemnf no
Наши публикации
1. JTAG в каждый дом: полный доступ через USB: habr.com/ru/company/pt/blog/341946/;
2. Как взломать выключенный компьютер или выполнить код в Intel ME — habr.com/ru/company/pt/blog/346974/;
3. Inside Intel Management Engine, 34c3;
4. Intel ME: Security keys Genealogy, Obfuscation and other Magic;
5. Intel ME Manufacturing Mode: obscured dangers and their relationship to Apple MacBook vulnerability CVE-2018-4251.
ptsecurity.com
Спасибо за внимание!