Исследователи из MIT CSAIL показали, что атака TONTOU умеет обходить актуальные защиты Spectre v2 на процессорах Intel и AMD и в реальном Linux-окружении вытягивать данные из ядра, включая хэши паролей из /etc/shadow. На тестовом AMD Zen 2 утечка шла со скоростью 5,47 байта в секунду при точности 91,97%. Для команд, которые держат Linux-серверы, CI-раннеры и рабочие станции с чужим кодом, новость неприятная: даже свежие смягчения для одного из самых известных классов CPU-атак оказались не финальной точкой.
Как пишет BleepingComputer, технику нашли аспирант Даниэль Трухильо и доцент MIT CSAIL Мэнцзя Янь. 6 августа они представили результаты на Black Hat USA, а 27-29 октября собираются подробно разбирать их на USENIX Security 2026. Речь идет о Spectre v2, он же Branch Target Injection: атакующий влияет на предсказатель косвенных переходов, процессор спекулятивно уходит по неверному пути, а побочные эффекты этой ошибки потом превращаются в канал утечки. Старый добрый Spectre снова напоминает неприятную истину: в мире микроспекуляции фраза «защита включена» часто означает лишь то, что закрыт вчерашний сценарий, а не весь класс атак.
В этот раз исследователи бьют не в саму идею Spectre v2, а в логику новых защит. На Intel и AMD используются так называемые neutralization-based mitigations: Intel опирается на eIBRS, AMD на Safe RET. Смысл этих механизмов в том, чтобы очистить или изолировать состояние предсказателя переходов перед выполнением чувствительной ветки в ядре. TONTOU расшифровывается как Time-of-Neutralization to Time-of-Use и ловит короткий зазор между двумя событиями: предсказатель уже нейтрализовали, но нужная ветка ядра еще не успела им воспользоваться. В это окно атака TONTOU успевает заново отравить микроархитектурное состояние и вернуть атакующему контроль над спекулятивным маршрутом.
Ключевой прием называется Interrupt Injection. Непривилегированная программа выставляет таймеры так, чтобы аппаратные прерывания попадали прямо во время исполнения ядра. Ядро уходит в обработчик прерывания, а уже внутри этого окна исследователи переписывают нужное состояние предсказателя. Авторам пришлось решить несколько неприятных задач сразу: точно совместить прерывание с постнейтрализационным окном, перенаправить поток управления ядра и отравить именно ту запись предсказателя, которая связана с целевой косвенной веткой. Для этого они использовали частую инъекцию прерываний и сочетали активные и пассивные методы отравления. Отдельно они показали, что через прерывания можно загрязнять и Return Stack Buffer, влияя на спекулятивные возвраты из функций.
Дальше начинается часть, где теория перестает быть конференционным слайдом. На машине с AMD Zen 2, Linux 6.14.0-37-generic и 16 ГБ оперативной памяти исследователи показали утечку произвольной памяти ядра со скоростью 5,47 байта в секунду при точности 91,97%. В демонстрации им удалось добраться до /etc/shadow, где лежат хэши паролей. Из десяти запусков файл был найден и извлечен в пяти, среднее время одной успешной попытки составило 18 минут. На Intel сценарий тоже работает, но авторы отдельно оговаривают, что там задача заметно сложнее из-за дополнительных программных требований.
Медленная скорость тут не должна убаюкивать. Когда добыча это хэши из /etc/shadow или другие компактные секреты ядра, речь идет не о потоковой эксфильтрации гигабайтов, а о точечных артефактах с высокой ценностью. Именно поэтому атака TONTOU важна не только как академический трюк для Black Hat, но и как вполне практичный постэксплуатационный инструмент. Если злоумышленник уже получил возможность исполнять на хосте непривилегированный код, дальше CPU начинает играть на его стороне. И это ровно тот этап атаки, который многие команды до сих пор считают неприятным, но локальным и потому якобы терпимым.
AMD в день публикации выпустила advisory и аккуратно связала проблему с Linux-реализацией механизма Safe RET. Это важная оговорка: перед нами не просто история про сломанную железку, а сбой на стыке архитектурной защиты и того, как ее доводят до рабочего состояния в ОС. Для Linux-экосистемы это плохой сигнал, потому что атака TONTOU бьет по допущению, на котором держались последние смягчения Spectre v2: будто между очисткой предсказателя и его использованием у атакующего нет полезного времени. Оказалось, есть. И если это окно можно стабильно ловить через прерывания, то вопрос уже не только в конкретной заплатке, а в самой модели защиты от спекулятивных побочных каналов.
Для разработчиков, SRE, продактов и IT-директоров вывод довольно приземленный. Shared-среды, сборочные серверы, Linux-хосты с плагинами, агентами и пользовательскими задачами, а также рабочие станции, где запускается много чужого кода, теперь выглядят чуть менее уютно. Одних слов про включенные eIBRS или Safe RET уже недостаточно, если риск-модель допускает локальный запуск без привилегий. Следующий большой вопрос для производителей CPU, ядра Linux и дистрибутивов звучит без всякой романтики: удастся ли закрыть это окно без заметного удара по производительности, или защита от Spectre окончательно превратится в бесконечную игру в микросекунды.