Интересная статья о реверс-инжиниринге микрокода процессоров AMD K8 и K10:
https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-koppe.pdf
В отличие от Intel, компания AMD первое время не подписывала и не шифровала обновления микрокода для своих процессоров (хотя и применяла обфускацию микроинструкций). Опираясь на отрывочную информацию из патентов обоих компаний, на послойное сканирование ПЗУ микроопераций процессора электронным микроскопом, а также на хитрый способ подмешивания случайного шума в таблицу микроопераций с помощью программных обновлений микрокода, эта команда исследователей смогла установить соответствие между макроинструкциями и интервалами адресов в таблице микроопераций, а далее разобраться в формате и номенклатуре самих микроопераций, внутренних регистров процессора и т.п. Для повторяемости экспериментов по изменению поведения макроинструкций была реализована небольшая ОС (которая задействует все аппаратные возможности процессора), а сам процесс фаззинга был автоматизирован с помощью Raspberry Pi.
Напоследок они реализовали образцы разного вредоносного микрокода, например слив внутреннего состояния генератора псевдослучайных чисел криптографической библиотеки, такой как OpenSSL. Было показано, что закладка в микрокоде может быть активирована удалённо, например передачей через Javascript хитрых констант в инструкцию целочисленного деления. Чтобы не нарушать логические и арифметические правила, результаты своей работы вредоносный микрокод может сливать через вариацию времени исполнения макроинструкций, что тоже было продемонстрировано авторами статьи.
https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-koppe.pdf
В отличие от Intel, компания AMD первое время не подписывала и не шифровала обновления микрокода для своих процессоров (хотя и применяла обфускацию микроинструкций). Опираясь на отрывочную информацию из патентов обоих компаний, на послойное сканирование ПЗУ микроопераций процессора электронным микроскопом, а также на хитрый способ подмешивания случайного шума в таблицу микроопераций с помощью программных обновлений микрокода, эта команда исследователей смогла установить соответствие между макроинструкциями и интервалами адресов в таблице микроопераций, а далее разобраться в формате и номенклатуре самих микроопераций, внутренних регистров процессора и т.п. Для повторяемости экспериментов по изменению поведения макроинструкций была реализована небольшая ОС (которая задействует все аппаратные возможности процессора), а сам процесс фаззинга был автоматизирован с помощью Raspberry Pi.
Напоследок они реализовали образцы разного вредоносного микрокода, например слив внутреннего состояния генератора псевдослучайных чисел криптографической библиотеки, такой как OpenSSL. Было показано, что закладка в микрокоде может быть активирована удалённо, например передачей через Javascript хитрых констант в инструкцию целочисленного деления. Чтобы не нарушать логические и арифметические правила, результаты своей работы вредоносный микрокод может сливать через вариацию времени исполнения макроинструкций, что тоже было продемонстрировано авторами статьи.