Zenbleed: все, что вам нужно знать об этой ошибке безопасности AMD

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

После того, как в 2018 году были обнародованы эксплойты ЦП Spectre и Meltdown, компьютерный мир стал довольно бдительным. о поиске ошибок безопасности и лазеек в процессорах, и за последние пять лет исследователи нашли массу. 24 июля был публично раскрыт еще один эксплойт, о котором впервые сообщалось в мае. На этот раз это касается процессоров AMD, построенных на архитектуре Zen 2, и называется «Зенблид". Вот все, что вам нужно знать о Zenbleed и о том, что он значит для мира.

Как работает Зенблид?

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

Источник: Тэвис Орманди.

Регистры ЦП могут хранить небольшой объем данных, обычно инструкцию, адрес памяти или любые другие небольшие данные. Регистры XMM в архитектуре x86_64 (то есть любой из затронутых процессоров Zen 2) могут использоваться только для вычислений с данными, а не для адресации памяти. Это расширено до 256 бит в случае регистров YMM и до 512 бит в регистрах ZMM. В этом случае XMM относится к младшим 128 битам общий 512 бит регистров ZMM.

Эти регистры невероятно полезны для множества разных вещей, включая стандартные функции C. Уязвимость использует спекулятивное выполнение и неправильные прогнозы ветвей, по сути выбрасывая случайный фрагмент данных из памяти, но эти данные могут быть из что-либо. Стандартные функции библиотеки C, такие как strlen, измеряющая длину строки, могут использовать эти регистры для перемещения данных. вокруг, и вполне возможно, что используемый вами пароль случайно попал в один из этих регистры.

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

Проблема возникает в инструкции vzeroupper, которая обнуляет биты в позиции 128 и выше регистров YMM и ZMM. Это делается особенно при переходе между AVX и устаревшим кодом SSE, поскольку это снижает производительность. штрафы, вызванные ложными зависимостями, при этом избегая эффекта, похожего на целочисленное продвижение в С.

Если процессор спекулятивно выполняет инструкцию vzeroupper, правильного отката не происходит. Однако затронутые процессоры Ryzen можно заставить восстановиться после него, хотя и неправильно. В этом состоянии программа, выполняющаяся в данный момент, может следить за этими регистрами в режиме реального времени, просматривая данные, проходящие по системе в любой момент времени.

На какие процессоры влияет Zenbleed и когда будут доступны исправления?

Как говорилось ранее, известно, что только процессоры AMD на базе архитектуры Zen 2 уязвимы для ошибки безопасности Zenbleed, но В архитектуре Zen 2 используются процессоры трёх серий, поэтому сложно определить, какие процессоры уязвимы, а какие нет. Вот таблица, которая должна все прояснить:

Затронутые процессоры

Серия Райзен 3000

Все, кроме APU (например, Ryzen 3 3200G)

Эпический Рим

Все

Серия Райзен 4000

Все

Серия Райзен 5000

Только 5300U, 5500U и 5700U.

Серия Райзен 7000

Только APU 7020 (например, Ryzen 3 7320U)

Это довольно большое количество процессоров AMD, и это только те, которые на данный момент подтверждены. Zen 2 также используется в процессорах Steam Deck, Xbox Series S и X и PS5. Мы так и не узнали, затронуты ли эти процессоры, но, судя по тому, как работает этот эксплойт, я был бы удивлён, если бы они тоже не пострадали. Кажется маловероятным, что AMD исправила эту проблему в Xbox и PS5, поскольку эта проблема также касается и более новых чипов серии 7020.

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

Что это означает для компьютеров, использующих уязвимые процессоры?

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

Однако ставки гораздо выше для центров обработки данных и важных людей, обрабатывающих конфиденциальную информацию на своих компьютерах. Есть причина, по которой AMD очень четко дала понять, что Epyc Rome был исправлен до того, как уязвимость была обнародована: множество конфиденциальных информация обрабатывается процессорами Epyc, и было бы катастрофой, если бы какие-либо процессоры, питающие крупномасштабные серверы, были успешно атаковали. Ядро Linux 6.4.6 уже выпущено и исправляет эту уязвимость, введя официальный патч микрокода от АМД. Кажется вероятным, что Microsoft включит нечто подобное в Windows.

С тревогой, Официальные патчи AMD для BIOS могут не появиться в течение нескольких месяцев, в этом случае есть "куриный кусочек", который вы можете установить, если вы используете машину с Linux или FreeBSD. На машинах с Linux вы можете использовать msr-tools и выполнить следующую команду.

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

Во FreeBSD вы также можете использовать следующее.

cpucontrol(8)

Отключения SMT недостаточно для устранения уязвимости.

Одна вещь, которая делает Zenbleed особенно плохой, это то, что Zen 2 была одной из самых популярных архитектур процессоров AMD. Это положило начало возвращению AMD в 2019 и 2020 годах, и многие люди, компании и организации по-прежнему используют компьютеры с процессорами Zen 2 в 2023 году, особенно Epyc Rome. процессоры. Это не так плохо, как Spectre (который затрагивает практически все процессоры Intel до 2019 года) и Meltdown (который затрагивает почти все процессоры Intel до 2019 года), но все же довольно неплохо. широко распространен.

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