Исследователи выявили технику атаки TONTOU с эксплуатацией микроархитектурных уязвимостей класса Spectre v2

Исследователи из Массачусетского технологического института представили технику атаки TONTOU (Time‑of‑Neutralization to Time‑of‑Use). Она предлагает новый способ эксплуатации микроархитектурных уязвимостей класса Spectre v2. 

В ходе атаки хакеры получают возможность определить содержимое памяти ядра при выполнении эксплойта в пространстве пользователя. 

Исследователями продемонстрирована атака со стороны локального непривилегированного пользователя для определения хэша пароля пользователя root, хранимого в файле /etc/shadow и загруженного в память при выполнении аутентификации в системе. Они добились утечки данных из памяти ядра с производительностью 5.47 байт в секунду и точностью 91.97%. 

Из 10 тестовых запусков эксплойта, продолжительность которых в среднем составила 18 минут, в половине случаев удалось успешно определить наличие в памяти файла /etc/shadow и извлечь его содержимое.

Эксплоит показывали на системах с процессорами AMD, он может применяться с CPU AMD семейств Zen 1–4. На системах Intel атаку можно осуществить, но её эксплуатация сложнее. 

Для защиты от переполнения стека адресов возврата и блокирования уязвимости SRSO (Speculative Return Stack Overflow) в процессорах AMD применяется механизм защиты Safe‑RET, который очищает буфер предсказания переходов после каждого использования и сужает окно проведения атаки до 2 инструкций, выполняемых несколько десятков наносекунд. Чтобы обойти защиту и для расширения окна совершения атаки реализована техника замедления CPU. Она выполняет подстановку прерывания в нужный момент для перенаправления потока выполнения в ядре и использования обработчика прерывания для искажения записи в буфере предсказания переходов. 

Для эксплуатации уязвимости SRSO хакер может создать условия, когда блок предсказания переходов спекулятивно выполнит большое число некорректно предсказанных вызовов CALL, чтобы переполнить стек адресов возврата и перезаписать корректно предсказанные точки возврата, размещённые в начале стека. Начальные элементы стека могут быть перезаписаны на выбранные атакующим значения и применяться при спекулятивном выполнении инструкции RET в контексте другого процесса.

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

Для блокировки уязвимости в код ядра Linux 5 уже приняли изменения 5 августа. Их включили в состав выпусков 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 и 5.10.263.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев