Исследователи из Нидерландов и Италии нашли новую уязвимость класса Spectre v2 — Branch Target Reuse (BTR). Она затрагивает чипы Intel, AMD и Arm и бьёт по JIT-компиляторам в ядрах ОС, браузерах и средах исполнения.
Причина в том, что после самомодификации кода процессоры могут сохранять устаревшие записи предсказания косвенных переходов.
В JIT-движках такие записи живут дольше исходного кода и срабатывают, когда по тем же адресам записан новый код: спекулятивное выполнение уходит на него по старым смещениям.
Для ядра Linux создали два эксплойта через классический BPF (cBPF). В отличие от eBPF, он доступен непривилегированным программам и используется в Seccomp, фильтрации сокетов и пакетов, Docker и Chrome.
На современных процессорах Intel эксплойт читает произвольные данные из памяти в обход активных защит. Даже при 8 байт/с, отслеживая цепочки указателей, удалось получить хеш пароля root после его загрузки в память.
В Oracle GraalVM атака спекулятивно обходит маскировку памяти, защищающую от Spectre. Компиляция и сборка мусора стирают записи о ветвлении раньше, но это ограничение, по мнению авторов, не фундаментально.
В Firefox атака идёт через вредоносный сайт с JavaScript. Изоляция сайтов в Mozilla ещё не развёрнута, поэтому данные всех вкладок могут оказаться в одном адресном пространстве с кодом атакующего.
В SpiderMonkey на процессорах Intel устаревшие записи сохраняются достаточно долго: утечка может достигать нескольких десятков байт в секунду. Полноценного эксплойта для браузера пока нет.
Защита потока управления (IBT на x86, BTI на Arm) усложняет атаку, но не устраняет её: старые чипы Intel спекулятивно исполняют код до завершения проверки IBT. Это исчезло лишь в Lion Cove (Arrow Lake, Lunar Lake).
Даже без «обгона» IBT защиту можно обойти, если отключена маскировка констант.
Программно угрозу нейтрализует барьер предсказания косвенных переходов (IBPB). Реакция разработчиков:
Linux: для x86 IBPB запускается, когда cBPF размещается в памяти, ранее занятой кодом BPF
Oracle: защитные меры развёрнуты
Mozilla: сосредоточилась на изоляции сайтов
AMD: новых уязвимостей нет, BTR закрывается рекомендациями против Spectre v2
Intel и Arm: комментариев пока нет
