Исследователи описали новый вариант атаки Spectre v2 – Branch Target Reuse (BTR). На компьютерах с процессорами Intel под управлением Linux он позволяет за несколько минут извлечь из памяти хеш пароля суперпользователя, причем для этого достаточно прав обычного пользователя.
Атака BTR использует устаревшие данные в механизме предсказания переходов процессора, которые сохраняются после того, как JIT-движок повторно использует участок памяти для нового кода.
Манипулируя этими оставшимися данными, злоумышленник может заставить процессор временно выполнить неправильные инструкции и таким образом потенциально получить доступ к конфиденциальной информации.
Новую атаку обнаружили исследователи из VUSec – группы системной и сетевой безопасности Амстердамского свободного университета – и Высшей школы Святой Анны. Они проверили, насколько атака применима на практике против JavaScript-движка Firefox SpiderMonkey, GraalVM и cBPF в ядре Linux.
Исследователь VUSec Кристиано Джуффрида (Cristiano Giuffrida) рассказал, что открытие остается важным, поскольку с 2018 года специалисты считали подобные атаки непрактичными. Предполагалось, что самомодифицирующийся код (SMC), который используется для динамической генерации кода в распространенных JIT-движках, делает такие атаки слишком сложными для реального применения.
BTR показывает обратное: атаки на основе временного выполнения с использованием SMC можно реализовать в реальных условиях. В частности, с их помощью исследователям удалось получить хеш root-пароля.
Исследователи уведомили затронутых разработчиков. Уязвимостям присвоили идентификаторы CVE-2026-64507 и CVE-2026-64508. Исправления уже добавили в ядро Linux.
BTR позволяет получить хеш root-пароля
В атаке Spectre v2 по стороннему каналу через спекулятивное выполнение процессор заставляют на короткое время выполнить инструкции по ошибочно предсказанному адресу перехода. В результате данные могут быть раскрыты через кеш процессора.
Вариант BTR использует тот же принцип, но повторно применяет старое предсказание после того, как код по этому адресу уже заменили, объясняют исследователи в технической статье.
Новая атака использует несоответствие между JIT-скомпилированным кодом и механизмом предсказания переходов процессора. Когда JIT-движок освобождает участок с кодом и размещает по тому же адресу новый код, процессор может продолжать хранить старую цель косвенного перехода.
При следующем переходе, когда процессор определяет, какую инструкцию выполнить дальше, он может на короткое время спекулятивно запустить новый код по устаревшему адресу перехода, хотя при обычном выполнении должен был перейти в другое место.
В тестах на Linux исследователи использовали непривилегированные программы classic BPF, чтобы обучить механизм предсказания переходов, затем освободили исходную программу и разместили в том же участке памяти другую.
Из-за устаревшей цели перехода процессор начинал выполнять подготовленные атакующим инструкции со смещенного адреса. Во время спекулятивного выполнения происходил доступ к данным, который оставлял измеримый след в кеше. По нему исследователи могли восстанавливать информацию байт за байтом.
Схема атаки на cBPF: сначала злоумышленник обучает предсказатель переходов и освобождает память, затем размещает на том же месте свой код и уводит спекулятивное выполнение к гаджету раскрытия данных. Источник: VUSec
Затем исследователи обнаружили запущенный процесс su и извлекли из его памяти хеш root-пароля со скоростью около восьми байт в секунду. Исследователи заявили:
Мы протестировали полноценную атаку на Raptor Cove и Lion Cove и в среднем получали пароль за 3 и 5 минут соответственно.
Это производительные ядра, которые используются в процессорах Intel Raptor Lake, а также Lunar Lake и Arrow Lake.
С практической точки зрения получение хеша пароля – не то же самое, что получение самого пароля в открытом виде. Однако злоумышленник может попытаться подобрать пароль по хешу офлайн или с помощью облачных вычислительных ресурсов. Успех такой атаки зависит от используемого алгоритма хеширования и сложности пароля.
В опубликованной технической статье исследователи продемонстрировали два полноценных варианта атаки на Linux cBPF: один при стандартной конфигурации, второй – с включенной защитой constant blinding.
Во втором случае исследователи адаптировали эксплойт так, чтобы кодировать контролируемые атакующим инструкции в смещениях переходов. Несмотря на включенную защиту, им все равно удалось извлечь хеш примерно за пять минут.
Исследователи также проверили, насколько BTR затрагивает два других JIT-движка – SpiderMonkey в Firefox и GraalVM от Oracle.
В случае SpiderMonkey созданный VUSec прототип показал, что устаревшие предсказания переходов сохраняются после повторного использования участка памяти с кодом. Однако полноценный эксплойт для браузера исследователи не создавали.
В GraalVM исследователи нашли способ спекулятивно обойти проверку песочницы. Однако активность самого движка очищала предсказания переходов раньше, чем удавалось довести атаку до конца.
Уязвимо большинство современных процессоров
Что касается практической угрозы, исследователи отмечают, что новому варианту BTR подвержено большинство современных процессоров. В VUSec пояснили:
Косвенное предсказание переходов является неотъемлемой частью современных процессоров, а BTR использует рассинхронизацию между механизмом предсказания переходов и фактическим состоянием кода.
Ни в одном современном процессоре нет механизма, который постоянно поддерживал бы их синхронизацию. Поэтому до тех пор, пока производители не добавят такую защиту, процессоры остаются уязвимыми.
Мы подтвердили такое поведение на всех протестированных процессорах Intel, AMD и ARM.
Пользователям рекомендуют устанавливать последние обновления операционной системы и прошивки. Пользователям Linux также советуют обновить ядро до актуальной версии.
Механизм предсказания переходов и раньше оказывался причиной уязвимостей: в мае 2025 года в процессорах Intel нашли Branch Privilege Injection – эта атака позволяла обходить границы привилегий и читать защищенные данные ядра.
Ранее VUSec уже публиковала исследования атак на спекулятивное выполнение и микроархитектуру процессоров, включая RIDL, BHI, SLAM и другие методы атак на современные процессоры.
