Interrupt Injection обходит защиту Spectre v2 на процессорах AMD и Intel

Исследователи MIT CSAIL Даниэль Трухильо и Мэнцзя Янь представили технику Interrupt Injection, которая позволяет обойти часть защит Spectre v2 на процессорах AMD и Intel. На системе с AMD Zen 2 и Linux 6.14 при включённых стандартных мерах защиты исследователи получили утечку произвольной памяти ядра со скоростью 5,47 байта в секунду и точностью 91,97%.
Атака не требует привилегий, но предполагает возможность выполнить локальный код. В пяти из десяти попыток авторы смогли обнаружить и прочитать файл /etc/shadow, где Linux хранит хеши паролей. Поэтому наибольшее значение сценарий имеет для многопользовательских и совместно используемых систем на затронутых процессорах.
Прерывание попадает в окно защиты
Защиты от Spectre v2 очищают или изолируют состояние предиктора ветвлений, чтобы ранее обученный атакующим процессор не направил выполнение кода ядра по ошибочному пути. Intel применяет такие механизмы при входе в ядро, включая eIBRS и очистку branch history buffer либо управление BHI_DIS_S. AMD использует механизм saferet непосредственно перед возвратом из ядра.
Авторы назвали класс проблемы TONTOU — Time-of-Neutralization to Time-of-Use. Его суть в том, что между нейтрализацией состояния предиктора и использованием этого состояния может выполниться обработчик аппаратного прерывания. Linux позволяет непривилегированному процессу планировать прерывания с наносекундной точностью, что делает такое окно практически значимым.
На AMD Zen 2 исследователи работали с окном в две инструкции, или шесть байтов. Чтобы повысить шанс попадания, они вытесняли эти инструкции из кешей L1 и L2 с помощью соседнего потока Hyper-Threading. Прерывания попадали в окно в 5–12% случаев, а примерно в 2% случаев атакующий контролировал два регистра, использованных при вызове write.
Какие процессоры затронуты
AMD 6 августа опубликовала бюллетень AMD-SB-7061 «Safe RET Interrupt Vulnerability». В нём перечислены процессоры Zen 1–Zen 4. Компания указывает, что точное внедрение прерывания может нарушить Safe RET, ослабить защиту и привести к раскрытию информации. Демонстрация была проведена на Zen 1 и Zen 2; Zen 3 и Zen 4 отмечены как потенциально затронутые.
По данным MIT, обновление ядра с исправлением уже поставляется в обычных обновлениях ОС, однако в бюллетене нет номера патча, коммита ядра или CVE. Проверять состояние защиты SRSO Linux предлагает через файл /sys/devices/system/cpu/vulnerabilities/spec_rstack_overflow, но на момент публикации его документация не описывала влияние прерываний.
На Intel исследователи зафиксировали ошибочные предсказания на Arrow Lake и Cascade Lake Refresh, но сквозную утечку не демонстрировали. Intel, согласно статье, не считает дополнительную защиту необходимой и ссылается на существующие рекомендации. Предложенное авторами исправление состоит в повторной нейтрализации состояния при выходе из обработчика прерывания — например, в заполнении буфера адресов возврата перед iret.
Сценарий дополняет картину локальных угроз Linux, в которой уже встречались Linux-руткиты и уязвимости инфраструктурного ПО с уязвимостями в ядре и инфраструктурном ПО. Для бизнеса практический шаг — своевременно устанавливать обновления ядра от поставщика ОС и отдельно контролировать статус мер Spectre v2 на серверах с совместным доступом пользователей.

