Специалисты Лаборатории компьютерных наук и искусственного интеллекта Массачусетского технологического института (MIT CSAIL) разработали новую технику атак interrupt injection, которая позволяет обойти защиту от атак класса Spectre v2 на процессорах AMD и Intel. К примеру, в системе на базе AMD Zen 2 эксперты смогли прочитать произвольную память ядра Linux и извлечь содержимое /etc/shadow с хешами паролей.

Представленная экспертами техника относится к новому классу атак — TONTOU (Time-of-Neutralization to Time-of-Use), а в ее основе лежит особенность работы современных защит от Spectre v2. Такие механизмы, как eIBRS в процессорах Intel и Safe RET в AMD, призваны помешать злоумышленникам влиять на предсказание ветвлений и тем самым направлять спекулятивное выполнение по нужному им пути.

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

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

Для эксплуатации этой проблемы специалисты разработали технику interrupt injection (инъекция прерываний): непривилегированная программа в Linux может с высокой точностью спланировать аппаратные прерывания таким образом, чтобы они попадали именно в нужный временной промежуток.

Полноценный эксплоит исследователи продемонстрировали для системы на базе AMD Zen 2 под управлением Linux 6.14.0-37-generic с 16 Гбайт оперативной памяти. Эксплоит считывал произвольную память ядра со скоростью 5,47 байта/с и точностью 91,97%. Из десяти проведенных тестов содержимое /etc/shadow удалось найти и извлечь пять раз, и на одну попытку в среднем уходило 18 минут.

Чтобы прерывание попало в узкое временное окно после срабатывания защиты, исследователи использовали таймеры и многократно генерировали аппаратные прерывания. Кроме того, в атаках на процессоры AMD технику interrupt injection объединили с проблемой Inception (CVE-2023-20569), которая позволяет воздействовать на буфер стека возврата (Return Stack Buffer, RSB) и добиваться ошибочного предсказания адресов возврата при спекулятивном выполнении.

Также исследователи протестировали атаку на процессорах Intel. Ошибочные предсказания удалось вызвать на Arrow Lake и Cascade Lake Refresh, однако полноценную утечку данных там не продемонстрировали: для нее атакующему дополнительно понадобится подходящий disclosure gadget в ядре. Авторы работы считают, что это не является принципиальным препятствием и атака на процессоры Intel тоже возможна.

Разработчики AMD уже подготовили бюллетень безопасности AMD-SB-7061, в котором сообщается, что проблема затрагивает процессоры Zen 1–Zen 4. В компании связывают уязвимость с реализацией Safe RET в Linux. Исправление вошло в состав ядра Linux, и патч корректирует состояние регистров после прерывания, не позволяя выполнить RET при возврате из обработчика.

Представители Intel, напротив, не считают, что для защиты от interrupt injection необходимы какие-то дополнительные меры. По оценке компании, описанная исследователями техника относится к уже известным сценариям BHI/IMBTI, и такие проблемы уже учтены в существующих рекомендациях по защите от атак Spectre v2.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии