EntrySign: уязвимость, затрагивающая процессоры AMD Zen

Логотип уязвимости EntrySign

Недавно Инженеры Google объявили подробности о критической уязвимости, идентифицированной как CVE-2024-56161. Крещен под именем входзнак, эта неудача позволяет обойти механизм проверки цифровой подписи во время обновления микрокода на процессорах AMD с использованием первых четырех поколений микроархитектуры Zen.

входзнак влияет на широкий спектр процессоров, позволяет злоумышленнику обойти средства безопасности, обеспечивающие целостность микрокода, что потенциально открывает путь для вредоносных изменений в поведении оборудования.

Об уязвимости

Причина этой уязвимости кроется в использовании алгоритма AES-CMAC. при проверке цифровой подписи вместо доверенной хэш-функции. AMD использовала этот алгоритм для подписи микрокода, используя закрытый ключ RSA и добавляя открытый ключ к патчу.

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

CMAC основан на алгоритме AES и использует операции XOR для объединения блоков данных, но поскольку он не предназначен для защиты от коллизий, он позволяет злоумышленнику, знающему ключ шифрования, вычислять промежуточные значения, которые компенсируют изменения во входных данных, оставляя результат операции неизменным.

И Intel, и AMD разработали уникальные наборы инструкций микрокода на основе RISC, оба недокументированные, но концептуально схожие с другими наборами инструкций RISC, такими как ARM или RISC-V. Как и в случае с программным обеспечением, правильная реализация сложного оборудования является сложной задачей; Исторически это приводило к многочисленным известным ошибкам, таким как ошибка FDIV компании Intel в Pentium в 1994 году.

AMD предоставляет единый ключ шифрования для AES-CMAC во всех процессорах от Zen 1 до Zen 4, что означает, что если кто-то извлечет этот ключ из одного ЦП, он сможет применить его ко всем остальным. Фактически, исследователи обнаружили, что эти процессоры используют известный ключ, взятый из примера в рекомендациях NIST SP 800-38B.

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

EntrySign, уязвимость CVE-2024-56161, позволяющая злоумышленникам обходить средства безопасности

Чтобы решить эту проблемуЧтобы изучить новые способы манипулирования микрокодом в процессорах AMD, инженеры Google Они разработали Zentool, набор комбинированных инструментов для проверки исправлений микрокода, включая ограниченный дизассемблирование, создание исправлений микрокода с использованием ограниченного объема обратной инженерной сборки.

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

Например, команда «zentool edit» позволяет редактировать параметры в файлах микрокода, а «zentool print» отображает подробную информацию о внутренних структурах микрокода. Также «zentool load» загружает микрокод в ЦП, а «zentool resign» пересчитывает цифровую подпись с учетом внесенных изменений. Кроме того, в пакет входят такие утилиты, как mcas и mcop, которые предоставляют функциональность ассемблера и дизассемблера для непосредственной работы с микрокодом.

Возможности Zentool позволяет разработчикам подготавливать и применять собственные исправления на процессорах AMD Zen. В качестве наглядного примера подготовлен патч, изменяющий логику инструкции RDRAND. После применения этого патча инструкция RDRAND прекращает генерацию псевдослучайных последовательностей и начинает последовательно возвращать число 4, тем самым демонстрируя мощь модификации микрокода и изменения ожидаемого поведения процессора.

Стоит отметить, что Zentool поставляется с подробным руководством о микроархитектуре RISC86, используемой в микрокоде AMD, а также инструкция, объясняющая, как создать собственный микрокод. В руководстве, помимо прочего, показано, как разрабатывать новые инструкции процессора, изменять поведение существующих инструкций и загружать эти изменения непосредственно в ЦП.

Наконец, если вы хотите узнать больше об этом, вы можете ознакомиться с подробностями в по следующей ссылке.