The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Google опубликовал инструментарий для анализа и изменения микрокода AMD

06.03.2025 15:41

Инженеры из компании Google раскрыли детали уязвимости (CVE-2024-56161), позволяющей обойти механизм проверки цифровой подписи при обновлении микрокода в процессорах AMD на базе 1-4 поколений микроархитектуры Zen. Одновременно под лицензией Apache 2.0 опубликован инструментарий Zentool, разработанный в процессе исследования методов работы с микрокодом в процессорах AMD. Также подготовлено руководство по микроархитектуре RISC86, применяемой в микрокоде AMD, и заметка по созданию собственного микрокода. Показано как можно создавать собственные процессорные инструкции, реализуемые на микрокоде RISC86, менять поведение существующих инструкций и загружать изменения микрокода в процессор.

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

В текущем виде в состав Zentool входят такие команды, как "zentool edit" - редактирует параметры файлов с микрокодом, изменяет микрокод и заменяет отдельные инструкции; "zentool print" - выводит информацию о структурах и параметрах микрокода; "zentool load" - загружает микрокод в CPU; "zentool resign" - корректирует цифровую подпись с учётом добавленных в микрокод изменений. В состав также входят утилиты mcas и mcop с реализациями ассемблера и дизассемблера для микрокода.

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

Загрузка собственных патчей для микрокода процессоров AMD Zen 1-4 стала возможна благодаря уязвимости, вызванной использованием в процессе верификации алгоритма имитовставки CMAC вместо надёжной хэш-функции. Компания AMD устранила уязвимость в декабрьском обновлении микрокода путём замены CMAC на криптографически стойкую хэш-функцию.

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

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

В CPU AMD Zen задействован стандартный алгоритм цифровой подписи RSASSA-PKCS1-v1_5, но вместо использования рекомендованных хэш-функций применён алгоритм CMAC, не рассчитанный на подобные операции и не защищённый от подбора коллизий. CMAC не является хэш-функцией, а реализует имитовставку (Message Authentication Code), зависящую от ключа шифрования. Работа AES-CMAC сводится к использованию криптографического алгоритма AES и объединению результата его применения со следующим блоком данных при помощи операции XOR.

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

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

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

  1. Главная ссылка к новости (https://bughunters.google.com/...)
  2. OpenNews: Уязвимость в загрузчике микрокода в CPU AMD, позволяющая обойти изоляцию SEV-SNP
  3. OpenNews: Обход защиты от атак Spectre и эксплоит для извлечения данных из памяти другого процесса
  4. OpenNews: Sinkclose - уязвимость в CPU AMD, позволяющая получить доступ к SMM
  5. OpenNews: В ядрe Linux 6.6 убрана возможность сборки без поддержки загрузки микрокода для систем x86
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62838-zentool
Ключевые слова: zentool, microcode, amd, google
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 16:37, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И кстати, в прошлом году Google представили свой arm-процессор Axion:
    https://cloud.google.com/products/axion
     
  • 1.3, Neon (??), 16:51, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > Исследователи обнаружили, что в поколениях процессоров c Zen 1 по Zen 4 для шифрования AES-CMAC использован известный ключ, взятый из примера, упомянутого в рекомендациях по использованию блочных шифров NIST SP 800-38B

    Мда, просто одаренные, сильно одаренные, альтернативно)))

     
     
  • 2.28, Ivan_83 (ok), 18:40, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вы просто не понимаете процессов :)

    Скорее всего цели надёжно запереть процесс не стояло в принципе и это использовали как средство чтобы совсем мусор не загружали.

    Где то на этапе проектирования это отдали в работу со словами: "надо как то верифицировать микрокод", и кто то не сильно напрягаясь по простому и быстрому это сделал.
    Аудит проводить не стали.

    Я не исключаю и того что изначально стояла возможность сделать так, чтобы можно было грузить любой микрокод и потом правдопобно отрицать авторство/одобрение АМД.

     
     
  • 3.31, DeerFriend (?), 18:58, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Более вероятно, что сидящему отдельно от разработчиков безопаснику была поставлена задача сделать безопасно, как в NIST SP 800-38B.
    Ну он взял и сделал всё по инструкции.
     
  • 3.34, Аноинм (-), 19:26, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    да куль они, вообще, в оупен-сорс прошивки процессов/материнок/видюх не выкинут - убили бы сразу этот штеуд, с завистью на пару
     
     
  • 4.45, Ivan_83 (ok), 19:52, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Убивать нельзя, иначе придёт антимонопольная служба и заставить отпилить себе ногу вместе с половиной попы.
    Да и для потребителя будет так себе - амд в монопольной позе будет не лучше интела с их одноразовыми сокетами, и креативным порезанием фич, когда купить ты хочешь камень за не дорого а при просмотре сравнений поднимаешься до самого топа через 10 мелких шагов.
     

  • 1.4, Аноним (4), 16:56, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    AMD все для людей делает. Даже можно менять поведение инструкций и загружать изменения в микрокод. Вот она - открытость! Шах и мат интелбои! =)
     
     
  • 2.13, Аноним (13), 17:39, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Обычные люди с Intel, этим и не заморачиваются.
    Пользуются и ладно.
     
     
  • 3.24, Афроним (?), 18:34, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот, зачем так маркетоулха пнул,а?
     
     
  • 4.26, Аноним (13), 18:38, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну это, пепси или кола. Кола против пепси.
     
  • 3.32, DeerFriend (?), 19:00, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Обычные люди с Intel, этим и не заморачиваются.

    у вас в слове apple ошибка

     
  • 2.23, Афроним (?), 18:33, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Позволит из в1 сделать в3 или что, чем это поможет хомячку? Эти АМД днем с огнем в магазине не найдешь, как они всем нужны оказывается.
     

  • 1.5, Шарп (ok), 16:58, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Наконец то открытый микрокод. Теперь Столлману можно переходить на амуде.
     
     
  • 2.7, Аноним (1), 17:13, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Приходите в мой дом, мои двери открыты... (с) Лиза Су
     
     
  • 3.17, Аноним (-), 18:21, 06/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.29, Аноним (13), 18:40, 06/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.35, Аноинм (-), 19:27, 06/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.6, Zulu (?), 17:02, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > вместо псевдослучайных последовательностей только число 4

    Почему 4? Надо было 9...
    https://imgur.com/random-number-generator-bwFWMqQ

     
     
  • 2.11, Аноним (11), 17:30, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Классика же: https://imgs.xkcd.com/comics/random_number.png
     
     
  • 3.36, Аноинм (-), 19:28, 06/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.8, Аноним (8), 17:16, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Изменение микрокода может привести к увеличению хешрейта?
     

  • 1.9, Аноним (9), 17:22, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Инженеры из компании Google раскрыли, что они занимаются снижением капитализации AMD, чтобы потом выкупить её с потрохами вместе с Intel.
     
     
  • 2.14, Аноним (1), 17:44, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Денег у них и правда очень много, данные за 2024:
    >Consolidated Alphabet revenues in Q4 2024 increased 12% year over year to $96.5 billion

    https://abc.xyz/2025-0204/
    Но выкупить кого-то из топ-10 это вряд ли:
    https://3dnews.ru/assets/external/illustrations/2025/02/05/1117756/gartner_01.

     
  • 2.30, Афроним (?), 18:47, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Просто закопать хотят и все. 164 лярда немного синих денег одна частная компания по производству чипов инвесирует в Трампанию,наверное что-то знают.
     

  • 1.12, Анонимище (?), 17:37, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Этим инженером из Google был Ричард Столлман
     

  • 1.16, Аноним (16), 18:19, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > задействован стандартный алгоритм цифровой подписи RSASSA-PKCS1-v1_5, но вместо использования рекомендованных хэш-функций применён алгоритм CMAC, не рассчитанный на подобные операции и не защищённый от подбора коллизий

    Ну явная же закладка...

     
     
  • 2.21, Анонимище (?), 18:25, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И давно Google стал зуб точить на американские спецслужбы? Или может сами признаете глупость такой версии?
     
     
  • 3.40, Аноинм (-), 19:33, 06/03/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

  • 1.18, Аноним (18), 18:21, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Теперь на этом микрокоде можно реализовать arm-инструкции. Получится arm-десктоп.
     
     
  • 2.20, Аноним (20), 18:23, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зрите в корень! На этом получится импортозамещение (E2K).
     
  • 2.22, Анонимище (?), 18:33, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я не больно спец по процам, но там же наверняка устройство процессора всё другое. ARM-программы рискуют сильно подофигеть от такого "ARM" процессора, они наверняка созданы из других представлений об том как устроен процессор на котором они должны работать
     
  • 2.25, Афроним (?), 18:38, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Дум и Квик потянет?
     
  • 2.37, Аноним (18), 19:28, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Или risc-v сделать
     
  • 2.41, Аноинм (-), 19:34, 06/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.27, Songo (ok), 18:38, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Статья называется: Покупайте Zen 5.
    p.s. Когда выйдет Zen 6, то в Zen 5 тоже найдут уязвимость эту или другую.
     

  • 1.33, Аноним (33), 19:23, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А я как дурак всё думаю, прошивать мне новые микрокоды на проц и уефи или посидеть на дырявых? Прошьешь новье - залатают дыры, и уже не прошить свободное/открытое
     
     
  • 2.43, Аноинм (-), 19:35, 06/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.46, Анонимище (?), 19:53, 06/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Есть компьютеры на открытом IBM-ском Power ISA. Стоят правда 10 000 долларов и нет совместимости с x86, но если есть деньги и готовность переехать на другую архитектуру, то как вариант
     

  • 1.39, Аноним (39), 19:32, 06/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чисто теоретический вопрос. Насколько быстрее может работать проц, если из него убрать прослойку микрокода и сделать по старинке - прямо на железе?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру