Уязвимость в процессорах AMD Zen2, позволяющая определить содержимое регистров в других процессах
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Тэвис Орманди (Tavis Ormandy), исследователь безопасности из компании Google, выявил уязвимость (CVE-2023-20593) в процессорах AMD на базе микроархитектуры Zen2, которая может быть использована для отслеживания содержимого регистров во время выполнения других процессов на том же ядре CPU. Среди прочего атака может быть осуществлена из виртуальных машин и изолированных окружений.
Для демонстрации уязвимости, которой присвоено кодовое имя Zenbleed, подготовлен прототип эксплоита, позволяющий непривилегированному пользователю определить данные, обрабатываемые в инструкциях AES-NI или REP-MOVS (обычно применяется в функции memcpy), что может быть использовано для реконструкции ключей шифрования и паролей пользователей, обрабатываемых в других процессах, в том числе привилегированных. Производительность утечки данных при работе эксплоита составляет приблизительно 30КБ в секунду.
Проблема проявляется в сериях процессоров AMD Ryzen 3000, Ryzen PRO 3000, Ryzen Threadripper 3000, Ryzen 4000 с графикой Radeon, Ryzen PRO 4000, Ryzen 5000 с графикой Radeon, Ryzen 7020 с графикой Radeon и EPYC 7002. Уязвимость устранена на уровне обновления микрокода. Для ядра Linux подготовлен патч для загрузки исправленного микрокода. В случае невозможности обновить микрокод имеется обходной способ блокирования уязвимости, приводящий к снижению производительности - необходимо выставить в CPU управляющий бит DE_CFG[9], используя в Linux команду "wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))". Отключение режима SMP не блокирует уязвимость.
По своей сути проблема напоминает классические уязвимости 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.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://www.openwall.com/lists...)
- OpenNews: AMD опубликовал прототип openSIL, платформы для создания открытых прошивок
- OpenNews: Ошибка в CPU AMD EPYC 7002 приводит к зависанию после 1044 дней работы
- OpenNews: SQUIP - атака на процессоры AMD, приводящая к утечке данных по сторонним каналам
- OpenNews: Уязвимость в механизме спекулятивного выполнения инструкций процессоров AMD
- OpenNews: В процессорах AMD выявлена ещё одна уязвимость, допускающая атаки класса Meltdown
Похожие новости:
- В OpenBSD добавлена загрузка микрокода для процессоров AMD
- Ошибка в CPU AMD EPYC 7002 приводит к зависанию после 1044 дней работы
- Атака PMFault, позволяющая вывести из строя CPU на некоторых серверных системах
- AMD опубликовал код технологии суперсэмплинга FidelityFX Super Resolution 2.2
- Зависимость времени выполнения инструкций от данных на CPU ARM и Intel
- В ядре Linux найдена забытая заплата, влияющая на производительность CPU AMD
- Опубликована схема простого процессора, пригодного для домашнего повторения
- Опубликован код ядра и ряда GNU-утилит для платформы Эльбрус 2000
- SQUIP - атака на процессоры AMD, приводящая к утечке данных по сторонним каналам
- AEPIC Leak - атака, приводящая к утечке ключей из анклавов Intel SGX
Теги для поиска: #_amd, #_cpu
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 01:36
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Тэвис Орманди (Tavis Ormandy), исследователь безопасности из компании Google, выявил уязвимость (CVE-2023-20593) в процессорах AMD на базе микроархитектуры Zen2, которая может быть использована для отслеживания содержимого регистров во время выполнения других процессов на том же ядре CPU. Среди прочего атака может быть осуществлена из виртуальных машин и изолированных окружений. Для демонстрации уязвимости, которой присвоено кодовое имя Zenbleed, подготовлен прототип эксплоита, позволяющий непривилегированному пользователю определить данные, обрабатываемые в инструкциях AES-NI или REP-MOVS (обычно применяется в функции memcpy), что может быть использовано для реконструкции ключей шифрования и паролей пользователей, обрабатываемых в других процессах, в том числе привилегированных. Производительность утечки данных при работе эксплоита составляет приблизительно 30КБ в секунду. Проблема проявляется в сериях процессоров AMD Ryzen 3000, Ryzen PRO 3000, Ryzen Threadripper 3000, Ryzen 4000 с графикой Radeon, Ryzen PRO 4000, Ryzen 5000 с графикой Radeon, Ryzen 7020 с графикой Radeon и EPYC 7002. Уязвимость устранена на уровне обновления микрокода. Для ядра Linux подготовлен патч для загрузки исправленного микрокода. В случае невозможности обновить микрокод имеется обходной способ блокирования уязвимости, приводящий к снижению производительности - необходимо выставить в CPU управляющий бит DE_CFG[9], используя в Linux команду "wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))". Отключение режима SMP не блокирует уязвимость. По своей сути проблема напоминает классические уязвимости 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. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 01:36
Часовой пояс: UTC + 5