Google представляет Zentool: Новый инструментарий для анализа и модификации микрокода процессоров AMD Zen

Google выпустила открытый инструмент под названием Zentool, лицензированный по Apache 2.0. Этот инструмент предназначен для анализа и модификации микрокода процессоров AMD, основанных на архитектуре Zen первого — четвертого поколений. Эксперты компании разместили документацию по микроархитектуре RISC86, используемой в микрокоде AMD, а также выложили материалы о создании пользовательского микрокода, ориентированные на исследователей и любителей.

В проекте Zentool используется уязвимость CVE-2024–56161, позволяющая обойти систему проверки цифровой подписи при обновлении микрокода процессоров AMD. Это обход системы безопасности AMD SEV (Secure Encrypted Virtualization). Согласно данным Google, чтобы загрузить вредоносный микрокод, злоумышленнику необходимо иметь административные права на системе. Установлено, что для механизма AES-CMAC AMD использовала общий ключ шифрования, применяемый для всех процессоров с Zen 1 до Zen 4. Таким образом, достаточно извлечь этот ключ из любого CPU AMD, чтобы он стал действительным для остальных процессоров. Исследователи Google также выяснили, что для шифрования AES-CMAC в процессорах с Zen 1 по Zen 4 использовался известный ключ из примера, приведенного в рекомендациях NIST SP 800-38B по применению блочных шифров. В декабре AMD устранила уязвимость CVE-2024–56161 в обновлении микрокода, заменив CMAC на криптографически стойкую хэш-функцию.

Google продемонстрировала, что Zentool работает не только с серверными процессорами AMD EPYC, но и с потребительским процессором AMD Ryzen 9 7940HS. В компании показали, как использовать патч для того, чтобы генератор случайных чисел RDRAND на процессоре AMD всегда возвращал одно и то же число, например 4, вместо псевдослучайных последовательностей.

В инструментарий Zentool входят команды, такие как zentool edit (для редактирования параметров файлов микрокода и изменения отдельных инструкций), zentool print (для вывода информации о структуре и параметрах микрокода), zentool load (для загрузки микрокода в CPU), и zentool resign (для корректировки цифровой подписи с учетом внесенных изменений в микрокод).

Кроме того, в проекте Zentool присутствуют утилиты mcas и mcop, реализующие ассемблер и дизассемблер для микрокода. На данный момент возможностей Zentool уже достаточно, чтобы самостоятельно подготовить и загрузить в процессор свои патчи с микрокодом на свой страх и риск. Разработчики Google планируют расширить функциональность инструмента и создать аналог binutils, но специально для микрокода процессоров AMD.