Тэвис Орманди (Tavis Ormandy), исследователь из Google Information Security, сообщил сегодня о новой уязвимости, которую он обнаружил в процессорах AMD с архитектурой Zen 2. Уязвимость Zenbleed охватывает весь ассортимент чипов на Zen 2 и позволяет украсть защищённую информацию, включая ключи шифрования и логины пользователей. Атака не требует физического доступа к компьютеру и может быть выполнена даже через вредоносный JS-скрипт на веб-странице.Орманди сообщил об этой проблеме в AMD 15 мая 2023 года. По его словам, AMD уже выпустила патчи для уязвимых систем, но эксперты пока не подтвердили наличие в последних выпущенных прошивках нужных исправлений. Также пока отсутствуют рекомендации по безопасности от AMD с подробным описанием проблемы. Компания обещала опубликовать эту информацию сегодня, но пока не прокомментировала статус исправлений.
Уязвимость зарегистрирована как CVE-2023-20593 и позволяет осуществлять кражу данных со скоростью 30 Кбайт на ядро в секунду, что обеспечивает достаточную пропускную способность для кражи конфиденциальной информации, проходящей через процессор. Эта атака работает со всем программным обеспечением, запущенным на процессоре, включая виртуальные машины, песочницы, контейнеры и процессы. Способность этой атаки считывать данные между виртуальными машинами особенно опасна для поставщиков и пользователей облачных услуг.
По словам Орманди, затронуты все процессоры Zen 2, включая серверные EPYC Rome:
Процессоры AMD Ryzen 3000;
Процессоры AMD Ryzen PRO 3000;
Процессоры AMD Ryzen Threadripper 3000;
Процессоры AMD Ryzen 4000 с графикой Radeon;
Процессоры AMD Ryzen PRO 4000;
Процессоры AMD Ryzen 5000 с графикой Radeon;
Процессоры AMD Ryzen 7020 с графикой Radeon;
Процессоры AMD EPYC Rome.
Атака может быть осуществлена посредством выполнения непривилегированного произвольного кода. Орманди опубликовал репозиторий исследований безопасности и код эксплойта. При атаке используется функция оптимизации слияния XMM регистра с последующим его переименованием. В результате происходит ошибка предсказания vzeroupper. Основные операции, такие как strlen, memcpy и strcmp, будут использовать векторные регистры, поэтому злоумышленник может эффективно отслеживать эти операции, происходящие в любом месте системы, неважно, в других виртуальных машинах, песочницах, контейнерах или процессах.
«Это работает, потому что регистровый файл используется всеми на одном физическом ядре. На самом деле два гиперпотока даже используют один и тот же файл физического регистра», — говорит Орманди. Он пояснил, что ошибка может быть исправлена с помощью патчей, но это может привести к снижению производительности, поэтому Орманди настоятельно рекомендует обновить микрокод. Доступность обновлённых прошивок пока официально не подтверждена.