Разработчики: | AMD |
Дата последнего релиза: | 2023/07/25 |
Отрасли: | Информационные технологии |
Технологии: | Процессоры |
Содержание |
2023: Выявление уязвимости, позволяющей определить содержимое регистров в других процессах
Тэвис Орманди (Tavis Ormandy), исследователь безопасности из компании Google, выявил уязвимость (CVE-2023-20593) в процессорах AMD на базе микроархитектуры Zen2, которая может быть использована для отслеживания содержимого регистров во время выполнения других процессов на том же ядре CPU. Среди прочего атака может быть осуществлена из виртуальных машин и изолированных окружений. Об этом стало известно 25 июля 2023 года.
Для демонстрации уязвимости, которой присвоено кодовое имя Zenbleed, подготовлен прототип эксплоита, позволяющий непривилегированному пользователю определить данные, обрабатываемые в инструкциях AES-NI или REP-MOVS (обычно применяется в функции memcpy), что может быть использовано для реконструкции ключей шифрования и паролей пользователей, обрабатываемых в других процессах, в том числе привилегированных. Производительность утечки данных при работе эксплоита составляет приблизительно 30КБ в секунду.
Уязвимость устранена на уровне обновления микрокода. Для Linux подготовлен патч для загрузки исправленного микрокода. В случае невозможности обновить микрокод имеется обходной способ блокирования уязвимости, приводящий к снижению производительности - необходимо выставить в CPU управляющий бит DE_CFG[9], используя в Linux команду "wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))". Отключение режима SMT не блокирует уязвимость.
Обходной способ блокирования уязвимости включён в состав обновлений ядра 6.4.6, 6.1.41, 5.15.122, 5.10.187, 5.4.250 и 4.19.289. Проследить за появлением защиты от уязвмости в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch, OpenBSD, FreeBSD, NetBSD. Проблема проявляется в сериях процессоров AMD Ryzen 3000, Ryzen PRO 3000, Ryzen Threadripper 3000, Ryzen 4000 с графикой Radeon, Ryzen PRO 4000, Ryzen 5000 с графикой Radeon, Ryzen 7020 с графикой Radeon и EPYC 7002.
По своей сути проблема напоминает классические уязвимости use-after-free, вызванные обращением к памяти после её освобождения. В процессорах для хранения содержимого регистров применяется регистровый файл (RF, Register File), представляющий собой массив, который совместно используется во всех задачах на том же ядре CPU. За прикрепление конкретных именованных регистров к ресурсам из регистрового файла отвечает таблица распределения регистров (RAT, Register Allocation Table). При этом хранение в регистре нулевого значения осуществляется не через сохранение пустого значения в регистровом файле, а через выставление флага z-bit в таблице RAT.
Уязвимость вызвана тем, что если z-bit установлен в ходе спекулятивного выполнения инструкций, недостаточно просто сбросить его в случае неверного предсказания ветвления, так как пространство в регистровом файле может быть перераспределено с момента спекулятивного выполнения. Выявленный эффект возникает при одновременном переименовании регистра, использовании инструкции, для которой применяется оптимизация слияния, и спекулятивном выполнении векторной инструкции VZEROUPPER, которая выставляет z-bit и высвобождает ресурсы из регистрового файла. Если предсказание ветвления не оправдалось и выполнен откат спекулятивной операции VZEROUPPER в исходное состояние, может произойти повреждение содержимого векторных регистров, так как z-bit откатывается, но освобождённый ресурс остаётся не отброшен.Метавселенная ВДНХ
Через манипуляции с инструкцией VZEROUPPER можно добиться управляемой утечки данных, обрабатываемых в векторных регистрах YMM, используемых в режимах AVX (Advanced Vector Extensions) и SSE (Streaming SIMD Extensions). Указанные регистры активно применяются в функциях копирования памяти и обработки строк, например, в библиотеке Glibc они задействованы в функциях memcpy, strcmp и strlen[1].
2020: AMD представила первый компьютерный процессор на новой архитектуре Zen 3
8 октября 2020 года Advanced Micro Devices представила следующее поколение процессоров, которые создаются на базе Zen 3 - Ryzen серии 5000. Новинки отличаются значительными улучшениями производительности и новой архитектурой. Подробнее здесь.
2018: Анонс Zen 2
В ноябре 2018 года AMD представила свою новую процессорную архитектуру Zen 2, которая ляжет в основу решений как для персональных компьютеров, так и для серверов. В компании обещают существенный прирост производительности по сравнению с первой версией Zen.
Zen 2 привносит кардинальные изменения в процессорную архитектуру AMD для многоядерных чипов. Так, северный мост процессора будет разнесен на несколько блоков, чтобы сделать подсистему ввода-вывода данных более гибкой и лучше приспособленной для работы с большим числом ядер.
Серверные чипы AMD с архитектурой Zen 2 получили кодовое обозначение Rome. Их отличительной особенностью является модульная конструкция, тогда как предшественники состояли из четырех одинаковых кристаллов, содержащих по восемь x86-совместимых ядер Zen.
На одном текстолите было размещено восемь 7-нм модулей, каждый из которых содержит по восемь ядер Zen 2. По центру расположился 14-нанометровый кристалл I/O, сообщающийся с моделями через шину Infinity Fabric. В его состав входит 8-канальный контроллер памяти DDR4, контроллер интерфейса PCI Express 4.0 на 128 линий, а также иная периферия и небольшой объем кэш-памяти.
В AMD отмечают, что в Zen 2 удалось добиться 29-процентного превосходства в числе выполняемых инструкций за такт (IPC) по сравнению с микроархитектурой прошлого поколения. Также утверждается, что общая производительность серверов на разъем будет удвоена, а производительность в задачах с плавающей запятой вырастет вчетверо.
В ноябре 2018 года AMD приступила к поставкам пробных версий процессоров Zen 2, а серийный выпуск продукции намечен на 2019 год. Заявлена полная совместимость с предыдущими решениями Epyc Naples и будущими процессорами AMD Milan с архитектурой Zen 3.[2]
Примечания
Подрядчики-лидеры по количеству проектов
Т1 Интеграция (ранее Техносерв) (4)
МЦСТ (4)
Микрон (Mikron) (4)
Lenovo (4)
ИНЭУМ им. И.С. Брука (3)
Другие (48)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
МЦСТ (8, 22)
Микрон (Mikron) (2, 9)
Oracle (1, 7)
Nvidia (Нвидиа) (17, 6)
Intel (36, 5)
Другие (193, 15)
Байкал Электроникс (Baikal Electronics) (1, 2)
Микрон (Mikron) (1, 1)
Intel (1, 1)
Huawei (1, 1)
Nvidia (Нвидиа) (1, 1)
Другие (0, 0)
Распределение систем по количеству проектов, не включая партнерские решения
Микрон Интегральные микросхемы MIK - 9
Эльбрус - 8
Oracle SPARC - 7
Intel Xeon Scalable - 5
Эльбрус 4.4 - 4
Другие 23
Baikal-M - 2
Intel Xeon Scalable - 1
Микрон Интегральные микросхемы MIK - 1
Huawei Kunpeng (процессоры) - 1
Nvidia Tesla - 1
Другие 0