Branch Target Reuse (BTR) е новооткрит вариант на атаката Spectre-v2, който използва остарели данни за предсказване на разклоненията (branch prediction) в процесора за извличане на чувствителна информация от паметта на Linux, включително хешове на root пароли.

Тази атака е насочена конкретно към компилаторите „в движение“ (JIT - just-in-time), намиращи се в ядрото на Linux, уеб браузърите и различни среди за изпълнение на езици за програмиране.

BTR се възползва от уязвимост, която се появява при повторно използване на памет за код, което води до разминаване с буфера за целите на разклонението (branch target buffer) на процесора.

Когато JIT софтуерът изтрие предварително генериран код и по-късно разпредели различен код в същата област от паметта, съвременните процесори все още могат да запазят стари предсказания за непреки разклонения.

Даден атакуващ може да използва тези остарели предсказания, за да задейства спекулативно изпълнение на остаряло местоположение, оставяйки наблюдаеми микроархитектурни следи като активност в кеша, дори след като процесорът отхвърли грешния път.

Нова CPU атака извлича хешове на root паролата в Linux

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

BTR експлоатира остарели записи в BTB ( 1-5 ): Train, Jump, Free, Reuse, Leak (източник : vusec )
BTR експлоатира остарели записи в BTB ( 1-5 ): Train, Jump, Free, Reuse, Leak (източник: VUsec )

При оценката на атаката BTR изследователите са я тествали срещу класическия Berkeley Packet Filter (cBPF) в Linux, JavaScript енджина SpiderMonkey на Mozilla Firefox и GraalVM на Oracle.

Те успешно са разработили два концептуални експлойта (proof-of-concept) срещу cBPF JIT компилатора на ядрото на Linux, включително експлойт, който работи дори при налична защита чрез заслепяване на константи (cBPF constant blinding).

В демото за Linux локален процес без привилегии първоначално е обучил непрекo разклонение към cBPF код, генериран от JIT. След това атакуващият е премахнал този кодов блок и е организирал повторното използване на част от същата JIT памет от друга cBPF програма.

Когато непрекото разклонение е било задействано отново, процесорът е използвал остарялото предсказание за целта и спекулативно е изпълнил контролирани от атакуващия байтове при изместен офсет.

Изследователите са демонстрирали, че могат да извличат произволна памет от ядрото със скорост около 8 байта в секунда при съвременни процесори Intel.

Забележително е, че те са обходили списъка с задачи на ядрото на Linux, идентифицирали са работещ процес su, инспектирали са неговата памет и успешно са извлекли хеша на root паролата, след като той е бил зареден в паметта.

Тестовете на VUSec показват, че хешът може да бъде възстановен за средно около три минути при системи с Raptor Cove и пет минути при системи с Lion Cove.

BTR експлойт с cBPF в Linux ядрото (източник : vusec )
BTR експлойт с cBPF в Linux ядрото (източник: VUSec)

Тази атака е особено обезпокоителна, тъй като успява да заобиколи активираните защити в тестваните Linux конфигурации. Въпреки това тя изисква атакуващият да изпълнява локален код и да манипулира JIT-компилирани cBPF програми, което означава, че не е директна отдалечена атака по мрежата.

BTR е от съществено значение за JIT механизми, които често разпределят, освобождават и използват повторно изпълнима памет. Въпреки че използването на eBPF без привилегии е ограничено, класическият BPF все още се използва за филтриране със seccomp, сокет филтри, изолирани среди (sandboxes) на браузъри, контейнери и задачи за обработка на пакети.

Макар че SpiderMonkey не е бил напълно експлоатиран, той също е бил идентифициран като уязвим поради възможността остарели предсказания да се запазят при повторно използване на кеша за код.

заобикаляне на cBPF constant-blinding чрез jump офсети (източник : vusec
заобикаляне на cBPF constant-blinding чрез jump офсети (източник: Vusec )

За намаляване на рисковете от тази атака разработчиците на ядрото на Linux са издали корекции за сигурност, проследявани като CVE-2026-64507 и CVE-2026-64508.

Тези обновления включват бариера за предсказване на непреки разклонения (Indirect Branch Prediction Barrier - IBPB) за изчистване на остарелите предсказания по време на повторно използване на BPF JIT памет.

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