Spectre-v2 BTR: новая атака на JIT утекает память Linux на полностью пропатченной системе

Исследователи из VUSec и Scuola Superiore Sant'Anna описали новый вариант атаки Spectre-v2, получивший имя Branch Target Reuse (BTR). Он эксплуатирует устаревшие записи предсказания косвенных переходов, которые остаются в процессоре после того, как JIT-движок освободил и переиспользовал память под сгенерированный код.

Под удар попадают JIT-движки в браузерах, языковых средах исполнения и ядре операционной системы — на процессорах разных производителей. Уязвимость задевает SpiderMonkey (JIT-движок Mozilla Firefox), GraalVM и cBPF JIT в ядре Linux, причём с заметно разной эксплуатируемостью и скоростью утечки.

Как работает Branch Target Reuse

Ключевая идея BTR — рассинхронизация между архитектурным состоянием кода и записями предсказателя переходов. Современные процессоры восстанавливают когерентность кода после его самомодификации, но не обязательно инвалидируют устаревшие записи косвенных переходов (branch targets).

В JIT-движках такие «мёртвые» цели могут пережить исходный код и быть переиспользованы, когда кэш кода заполняется заново. Это даёт примитив временного execute-after-free: атакующий перехватывает спекулятивное управление потоком на новый код по устаревшим смещениям, обходя программные защиты или добираясь до невыровненных гаджетов.

Последовательность действий выглядит так:

  1. Атакующий заставляет JIT-движок выделить тренировочный чанк и направляет ветвление жертвы на него, создавая запись в Branch Target Buffer (BTB), ссылающуюся на текущую точку входа.
  2. Тренировочный чанк освобождается, а на его место выделяется целевой чанк, частично переиспользующий тот же адрес.
  3. Косвенное ветвление запускается снова, процессор берёт устаревшую запись BTB и спекулятивно прыгает на старую точку входа тренировочного чанка.
  4. Итог — перехват потока управления и раскрытие секретных данных.

«Перенаправляя поток управления на архитектурно невалидную точку входа, атакующий может обойти смягчения Spectre или выполнить невыровненные инструкции, в конечном счёте раскрывая секретные данные», — поясняют авторы работы Сандер Вибинг, Юхуэй Чжу, Алессандро Бьонди и Кристиано Джуффрида.

Атака предполагает, что злоумышленник уже может исполнять непривилегированный код в JIT-движке и пытается вытащить чувствительные данные из хост-окружения. Критично, что устаревшая запись BTB не должна быть инвалидирована или вытеснена после освобождения тренировочного чанка, а предсказатель должен выбрать именно её.

Что удалось украсть

В качестве proof-of-concept исследователи собрали два сквозных эксплойта против ядра Linux. На полностью пропатченной системе с процессором Intel и включёнными по умолчанию защитами они позволяют утечь и восстановить хеш root-пароля за считаные минуты.

Сам класс Spectre известен с 2017 года: он использует спекулятивное исполнение — механизм, при котором процессор предугадывает и выполняет инструкции заранее. Злоумышленник заставляет CPU выполнить спекулятивные операции над чувствительными данными, а затем восстанавливает их по изменениям состояния кэша. Spectre v2 эксплуатирует предсказание косвенных переходов: атакующий «отравляет» предсказатель, жертва уходит по неверной ветке, а результат мисспрогноза, хотя и отбрасывается, оставляет следы в кэше.

Патчи и позиция вендоров

После ответственного раскрытия смягчения для BTR выпущены и влиты в ядро Linux — им присвоены CVE-2026-64507 и CVE-2026-64508.

GraalVM, по словам исследователей, затрудняет переиспользование регионов за счёт рандомизации расположения кэша JIT-кода. Mozilla рассматривала смягчения на основе IBPB (Indirect Branch Predictor Barrier), но сейчас приоритет отдан завершению и развёртыванию site isolation.

Публикация BTR вышла примерно через два месяца после того, как исследователи MIT CSAIL Даниэль Трухильо и Мэнджи Янь раскрыли технику спекулятивного исполнения Interrupt Injection, обходящую защиты Spectre v2 и позволяющую читать произвольную память ядра на Linux-системах с процессорами Intel и AMD.

Что делать администратору

Практический вывод для тех, кто держит Linux-серверы и рабочие станции: обновить ядро до версии, содержащей исправления CVE-2026-64507 и CVE-2026-64508. BTR относится к классу атак, которые не оставляют следов в логах, — их нельзя выявить по сигнатурам или аномалиям трафика, поэтому единственная надёжная мера — закрыть уязвимость патчем.

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

Смежные материалы по теме: 14-летняя уязвимость ядра Linux, дающая root и побег из Docker, и четыре уязвимости повышения привилегий до root в ядре Linux.

Частые вопросы

Кого касается эта атака?

Всех, кто использует Linux на процессорах затронутых производителей — в первую очередь серверы и рабочие станции. Также под удар попадают JIT-движки браузеров и языковых сред: SpiderMonkey в Firefox, GraalVM и cBPF JIT в ядре Linux.

Что именно может украсть атакующий?

В proof-of-concept против ядра Linux исследователи за считаные минуты извлекали хеш root-пароля с полностью пропатченной системы Intel с защитами по умолчанию. Дальше этот хеш можно попытаться вскрыть перебором.

Это работает, если все патчи Spectre уже установлены?

Да, авторы подчёркивают, что эксплойты сработали на полностью пропатченной системе с включёнными по умолчанию защитами. BTR обходит существующие смягчения Spectre за счёт устаревших записей BTB.

Какие CVE закрывают эту уязвимость?

Смягчения влиты в ядро Linux под номерами CVE-2026-64507 и CVE-2026-64508. Обновление ядра до версии с этими исправлениями — основная мера защиты.

Mozilla и GraalVM уже выпустили патчи?

GraalVM снижает риск за счёт рандомизации расположения JIT-кэша. Mozilla рассматривала смягчения на базе IBPB, но сейчас сосредоточена на завершении и развёртывании site isolation.

Можно ли засечь эксплуатацию BTR по логам?

Нет. Это спекулятивная атака через тайминг кэша, она не оставляет характерных записей. Обнаружить её по журналам или сетевому трафику нельзя — защищаться нужно патчем.

Нужен ли атакующему физический доступ к машине?

Нет. Достаточно возможности исполнять непривилегированный код в JIT-движке на целевой системе — например, через браузер или разделяемую среду исполнения.

Чем BTR отличается от обычного Spectre v2?

Классический Spectre v2 отравляет предсказатель переходов, чтобы жертва ушла по ложной ветке. BTR использует другой механизм: он опирается на устаревшие записи BTB, которые переживают освобождение и переиспользование памяти JIT-движком, давая временный execute-after-free.

Источник: thehackernews.com