Група изследователи от VUSec и Scuola Superiore Sant'Anna разкриха подробности за нов вариант на CPU уязвимостта Spectre, който засяга JIT (Just-In-Time) компилаторите в уеб браузъри, среди за изпълнение на езици за програмиране и ядрото на операционната система при множество производители на процесори.

Новият вариант на Spectre-v2 получи кодовото име Branch Target Reuse (BTR).

„Ключовият извод е, че докато съвременните процесори възстановяват архитектурната кохерентност на кода след самомодификация, те не непременно отстраняват остарели записи за предсказване на индиректни разклонения (т.е. цели на разклонението)“, посочват изследователите Сандер Вибинг, Юхуей Джу, Алесандро Бионди и Кристиано Джуфрида в съпътстващия научен доклад.

„При JIT средите тези остарели цели могат да надживеят оригиналния код и по-късно да бъдат използвани повторно, когато кешът за код се попълни отново, създавайки примитив за преходно изпълнение след освобождаване (transient execute-after-free). Това позволява на атакуващите да пренасочват преходния контролен поток към новогенериран код на остарели офсети, заобикаляйки защитите на софтуера или достигайки до несъосечени инструкции (misaligned gadgets).“

BTR е оценен срещу SpiderMonkey (JIT енджина на Mozilla Firefox), GraalVM и cBPF JIT в ядрото на Linux, като всички те са засегнати, макар и с „значително различни характеристики на възможност за експлоатация и скорост на изтичане на данни“.

Като концептуално доказателство (proof-of-concept) са разработени два цялостни експлойта срещу ядрото на Linux, които могат да се използват за извличане и възстановяване на хеша на root паролата в рамките на минути от напълно актуализирана Intel система с включени защити по подразбиране.

Spectre се отнася до клас уязвимости в сигурността на процесорите, открити за първи път през 2017 г., които експлоатират спекулативното изпълнение — техника за оптимизация на производителността, използвана от съвременните процесори за предварително предсказване и изпълнение на инструкции.

Атакуващ може да експлоатира тази вратичка, за да подведе процесора да извърши спекулативни операции, които осъществяват достъп до чувствителни данни, и след това да ги извлече чрез страничен канал за анализ на времето на кеша (cache timing side channel).

Spectre v2 е конкретен тип атака от клас Spectre, която злоупотребява с предсказването на индиректни разклонения в съвременните процесори за постигане на същите цели. По-специално, тя заразява механизма за предсказване на разклонения в процесора, за да накара целевата програма да изпълни индиректно разклонение, което от своя страна кара процесора да сгреши в предсказанието и спекулативно да изпълни контролиран от атакуващия код или инструкция.

Въпреки че резултатите от грешното предсказване се отхвърлят, атакуващ може да установи до какво е имало достъп спекулативното изпълнение, като се възползва от промените в състоянието на кеша и ги измери.

„BTR е насочена към JIT среди и възниква от взаимодействието между самомодифициращия се код (Self-Modifying Code - SMC) и предсказването на индиректни разклонения“, съобщават изследователите, като добавят: „За първи път JIT средите разкриват възможности за преходно изпълнение, предизвикани от SMC, които могат да бъдат експлоатирани.“

Атаката предполага, че атакуващият е в състояние да изпълнява непривилегирован код в JIT среда и цели разкриване на чувствителни данни от хост средата. Пълната последователност от действия е следната -

  • Атакуващият кара JIT средата да задели обучаващ блок (training chunk) и принуждава целевото разклонение да скочи към него, като по този начин вмъква запис в BTB, рефериращ към текущата входна точка.
  • Атакуващият предизвиква освобождаване на обучаващия блок и заделяне на целевия блок (target chunk), който частично използва повторно същия адрес.
  • Атакуващият активира отново индиректното разклонение, при което процесорът използва вече остарелия запис в буфера за цели на разклонението (BTB) и спекулативно скача към старата входна точка на обучаващия блок.
  • Крайният резултат е пренасочване на контролния поток и разкриване на поверителни данни.

„Чрез пренасочване на контролния поток към архитектурно невалидна входна точка, атакуващият може да заобиколи защитните механизми срещу Spectre или да изпълни несъосечени инструкции, което в крайна сметка води до разкриване на тайни данни“, обясняват изследователите.

Ключов аспект, от който зависи BTR, е, че остарелият BTB запис не трябва да бъде инвалидиран или заменен, след като JIT средата освободи обучаващия блок, и модулът за предсказване на разклонения трябва да избере именно този остарял BTB запис за предсказанието.

След отговорно разкриване на уязвимостта, корекции за сигурност за BTR вече са издадени и внедрени в ядрото на Linux (CVE-2026-64507 и CVE-2026-64508).

„GraalVM вместо това възпрепятства повторното използване на региони чрез рандомизиране на адресите в кеша за JIT код“, посочват изследователите. „Mozilla разгледа възможността за защити, базирани на IBPB [Indirect Branch Predictor Barrier], но в момента приоритетно завършва и внедрява пълно изолиране на сайтовете (site isolation).“

Разкриването идва близо два месеца след като изследователите Даниел Трухильо и Мънджия Ян от MIT CSAIL разкриха техника за атака чрез спекулативно изпълнение, наречена Interrupt Injection, която може да заобикаля защитите срещу Spectre v2 и да извлича произволна памет от ядрото при Linux системи с процесори Intel и AMD.