Исследователи безопасности Google обнаружили существенную уязвимость, известную как EntrySign, которая затрагивает все процессоры AMD на архитектурах Zen от Zen 1 до Zen 4. Эта уязвимость позволяет злоумышленникам с привилегиями локального администратора обходить систему криптографической проверки AMD и устанавливать пользовательские обновления микрокода на затронутые процессоры.
Уязвимость возникает из-за использования AMD AES-CMAC в качестве хэш-функции в процессе проверки подписи, что является критической криптографической ошибкой. AES-CMAC разработан как код аутентификации сообщений, а не как безопасная хэш-функция, что делает его непригодным для этой цели.
Исследователи обнаружили, что AMD использовала общедоступный пример ключа из документации NIST с Zen 1, что позволяло им подделывать подписи и развертывать произвольные модификации микрокода. Эти модификации могут изменить поведение процессора на фундаментальном уровне, позволяя проводить сложные атаки, которые сохраняются до следующей перезагрузки системы. Например, исследователи продемонстрировали изменение инструкции RDRAND для последовательного возврата предопределенных значений, что фактически ставит под угрозу генерацию случайных чисел процессором.

Для содействия дальнейшему исследованию группа безопасности Google выпустила zentool, набор инструментов для джейлбрейка с открытым исходным кодом, который позволяет исследователям создавать, подписывать и развертывать пользовательские исправления микрокода на уязвимых процессорах. Он включает возможности для разборки микрокода, создания исправлений с ограниченной поддержкой сборки и функции криптографической подписи.
Набор инструментов предоставляет исследователям платформу для изучения пользовательских обновлений микрокода и разработки функций безопасности, аналогичных тем, которые доступны для процессоров Intel.
AMD отреагировала выпуском обновлений микрокода, которые заменяют скомпрометированную процедуру проверки на пользовательскую защищенную хэш-функцию. Эти исправления используют AMD Secure Processor для обновления процедуры проверки до того, как ядра x86 смогут обработать потенциально измененный микрокод. Хотя атака требует доступа локального администратора и не сохраняется при циклах питания, она представляет значительные риски для конфиденциальных вычислительных сред, использующих такие технологии, как SEV-SNP и DRTM.
Современные процессоры на архитектуре x86, в том числе от AMD и Intel, используют микрокод для реализации сложных инструкций. Эти обновления имеют решающее значение для исправления аппаратных ошибок без необходимости дорогостоящей переделки оборудования.
В случае процессоров AMD Zen обновления микрокода дважды проверяются по серии строк и ключей, подписанных AMD, и подтверждаются по жестко закодированному открытому ключу в ЦП. Уязвимость EntrySign работает, потому что AMD использовала AES-CMAC, чтобы позволить исследователям проводить обратную разработку ключей безопасности, не давая конечным пользователям отправлять неподписанные обновления микрокода.

