Исследователи VUSec и Высшей школы Святой Анны обнаружили новую разновидность side-channel-атаки Spectre v2 под названием Branch Target Reuse (BTR). Она позволяет извлекать секреты из памяти, используя JIT-движки браузеров, рантаймов и ядра операционной системы. На практике специалисты продемонстрировали два рабочих эксплоита для Linux, способные похитить хеш root-пароля за несколько минут.
Суть уязвимости кроется в рассинхронизации между текущим кодом в памяти и предсказателем ветвлений процессора. Когда JIT-движок освобождает область памяти и затем размещает по тому же адресу новый код, предсказатель может сохранить старую цель косвенного перехода. В результате CPU спекулятивно выполняет фрагмент нового кода, который находится по адресу старой цели перехода. Исследователи назвали эту технику «спекулятивным execute-after-free» — она позволяет вынудить процессор выполнить нужный атакующему код и извлечь данные по стороннему каналу.
Для демонстрации на Linux создали два PoC-эксплоита с использованием cBPF. Первый предназначен для систем с настройками по умолчанию, второй — для систем с включенной защитой constant blinding. В обоих случаях работающий эксплуатационный процесс создавал две cBPF-программы: первая «обучала» предсказатель ветвлений, затем удалялась, и вторая размещалась в той же области памяти. Предсказатель при этом сохранял старую цель косвенного перехода, позволяя процессору спекулятивно выполнить нужный код.
На системах без дополнительной защиты атака позволяла читать произвольные данные из памяти со скоростью 8 байт в секунду. Исследователи успешно извлекли хеш root-пароля из памяти запущенного процесса su. На системах с включенным constant blinding хеш удалось извлечь менее чем за пять минут, хотя защита кодировала контролируемые инструкции в смещениях переходов. На процессорах Raptor Cove атака занимала в среднем три минуты, на Lion Cove — пять минут.
Исследователи также протестировали BTR против SpiderMonkey в Firefox и Oracle GraalVM. В SpiderMonkey устаревшие предсказания сохранялись при повторном использовании памяти, но создать полноценный браузерный эксплоит не удалось. В GraalVM удалось спекулятивно обойти механизм маскирования памяти, защищающий песочницу от Spectre-подобных атак, однако полноценный эксплоит не получился — внутренняя активность GraalVM быстро очищала устаревшие записи предсказателя.
Уязвимость подтверждена на всех протестированных процессорах Intel, AMD и Arm. В Linux проблемам присвоили идентификаторы CVE-2026-64507 и CVE-2026-64508, исправления уже добавили в ядро. Oracle представила собственные меры защиты, Mozilla сосредоточилась на внедрении изоляции сайтов (site isolation). Более жесткие защитные механизмы вроде Indirect Branch Predictor Barrier (IBPB) усложняют проведение атаки, но снижают производительность системы.
Исследователи отмечают, что современные процессоры не способны постоянно синхронизировать состояние предсказателя ветвлений с изменяющимся кодом. Полностью устранить этот класс атак смогут только изменения на уровне аппаратного обеспечения.
