Опубликован декриптор микрокода Intel

6mhwqax7qdskn7gdhxmkkau-joq.png

Группа специалистов по безопасности uCode Research Team продолжает работу по реверс-инжинирингу процессоров Intel. Несколько дней назад исследователи опубликовали декриптор микрокода, с помощью которого можно расшифровать и изучить управляющий микрокод.

Микрокод работает внутри процессора x86. Начиная с микроархитектуры P6 в середине 90-х Intel добавила возможность программного обновления микрокода, чтобы исправлять уязвимости CPU после их выпуска. Это означает, что функциональность процессора можно произвольно изменять с помощью внешних апдейтов. Благодаря опубликованному декриптору можно проверить, как именно меняется функциональность CPU с очередным патчем.

В группу uCode Research Team входят Максим Горячий (h0t_max), Дмитрий Скляров (@_Dmit, известный по взлому защиты Adobe PDF) и Марк Ермолов (@_markel___).
Реверс-инжиниринг процессоров Intel исследователи начала несколько лет назад. В начале 2020 года они опубликовали детали техники Red Unlock, позволяющей извлечь микрокод Intel.

yedfhdartthsqykg2aypcibchmk.png

Специалисты смогли исследовать внутреннюю структуру микрокода и реализацию инструкций x86. Также они восстановили формат апдейтов микрокода, алгоритм и ключ шифрования RC4, используемый для защиты микрокода.

Затем они извлекли ключи шифрования для процессоров поколений Intel Gemini Lake (микроархитектура Goldmont Plus) и Intel Apolo Lake (микроархитектура Goldmont) (см. список совместимых CPU).

Расшифровка обновлений микрокода производится простой командой в консоли.

Для Apolo Lake CPU:

C:\microcode>py -3 dec_uUpd_Atom_apl.py cpu506C9_plat03_ver00000040_2020-02-27_PRD_2FC3D618_.bin
Hash matched at length 0x3E00 (15872)
Data entropy: 6.898306


Для Gemini Lake CPU:

C:\microcode>py -3 dec_uUpd_xu_Atom_glp.py cpu706A8_plat01_ver00000018_2020-06-09_PRD_1D9A5DFE.bin
Patch hash matched: enc size: 0x3480
Patch data entropy: 6.438890
XuCode hash matched: size: 0xed40
XuCode data entropy: 7.752765


oxhtktjxfo1xxlxkn5673mx0sos.png

nmofomyb9kxxchkbvhdppqy-95m.png

Более подробно о взломе CPU см. в презентации на OffensiveCon22.

Произвольная модификация


Год назад исследователи раскрыли информацию о двух недокументированных инструкциях x86, которые можно использовать для произвольной модификации микрокода.

Они опубликовали видео, как получить доступ к этим двум инструкциям, имея только привилегии root/admin. Для этого необходимо загрузить кастомный UEFI во флэш-память SPI, а затем перезагрузить систему.


Произвольное изменение микрокода даёт возможность запрограммировать CPU на любую функциональность. Обычно эта функция используется для исправления уязвимостей и других багов.

Производитель процессоров рассылает апдейты микрокода процессора в зашифрованном виде, а секретный ключ, с помощью которого их можно расшифровать, находится в самом процессоре. Доступ к этим двум инструкциям теоретически позволяет злоумышленнику обойти этот барьер. То есть каждый может собрать собственный патч микрокода для своего CPU:


По словам Ермолова, эти две инструкции декодируются во всех режимах работы процессора, включая user mode, но вызывают исключение типа «неопределённая инструкция» во всех состояниях CPU кроме особого «красного режима» (red mode). Это одно из четырёх возможных состояний DFx, задокументированных в чипсете Intel, наряду с зелёным, оранжевым и DAM. В то время как зелёное состояние используется для нормальной работы CPU, красное и оранжевое состояния дают отладочный доступ ко всем или некоторым IP-блокам.

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

© Habrahabr.ru