Branch Target Reuse (BTR) è una tecnica Spectre-v2 che sfrutta predizioni obsolete dei salti indiretti quando il codice JIT viene liberato e la memoria viene riutilizzata. VUSec riferisce due proof of concept end-to-end per il kernel Linux; nell’exploit cBPF descritto, la fuga di dati raggiunge 8 byte al secondo su CPU Intel moderne.
Che cos’è Branch Target Reuse (BTR)
Il JIT, o compilazione just-in-time, traduce il codice durante l’esecuzione. La CPU può registrare in un buffer dei bersagli di salto (BTB, dall’inglese Branch Target Buffer) dove dirigere i salti indiretti. BTR sfrutta la possibilità che una vecchia voce del BTB resti dopo che il codice a cui puntava è stato liberato.
Se una nuova porzione di codice JIT riutilizza quell’area di memoria e la CPU seleziona la vecchia voce, l’esecuzione speculativa può raggiungere il nuovo codice da un punto disallineato. L’esecuzione speculativa è il lavoro che il processore avvia in anticipo mentre prevede quale percorso seguirà il programma. Perché la tecnica funzioni, l’attaccante deve poter eseguire codice non privilegiato in un motore JIT e la predizione obsoleta deve sopravvivere ed essere selezionata.
Che cosa riferisce VUSec sul cBPF di Linux
VUSec riferisce di aver realizzato due proof of concept end-to-end contro il kernel Linux. La ricerca descrive nel dettaglio un exploit basato sul JIT del cBPF, la versione classica del Berkeley Packet Filter: il tasso di fuga dichiarato per questo exploit è di 8 byte al secondo su CPU Intel moderne.
In una dimostrazione, i ricercatori hanno recuperato dal processo su l’hash della password di root, caricato in memoria dopo l’esecuzione di su root. Si tratta di un risultato della dimostrazione, distinto dal tasso di fuga descritto per l’exploit cBPF.
I risultati distinti di SpiderMonkey e GraalVM
VUSec riferisce che gli attacchi contro SpiderMonkey, il motore JavaScript di Firefox, erano praticabili e che era stato realizzato un proof of concept. La ricerca stima una fuga nell’ordine di decine di byte al secondo su CPU Intel, ma per un exploit completo end-to-end nel browser serve ulteriore lavoro.
Per GraalVM, VUSec descrive riusi stabili degli indirizzi e un accesso speculativo oltre un’operazione di mascheramento. Negli esperimenti descritti, la compilazione e la garbage collection cancellavano le voci del BTB prima che potessero essere usate. La risposta attribuita a Oracle consiste nel randomizzare le posizioni della cache di codice JIT, ostacolando il riuso delle regioni.
VUSec riferisce inoltre che Mozilla aveva valutato misure basate su IBPB e indicava come priorità il completamento e la distribuzione dell’isolamento dei siti.
La mitigazione Linux descritta da VUSec
VUSec riferisce che gli sviluppatori del kernel Linux hanno integrato nel ramo principale una mitigazione x86 per il riuso delle regioni JIT cBPF/eBPF. Quando un programma cBPF riutilizza una regione già eseguita da cBPF o eBPF, la mitigazione invia una barriera alla predizione dei salti indiretti (IBPB) su tutti i core e scoraggia quel riuso.
Secondo VUSec, l’intervento vale sia con IBT attivo sia con IBT disattivato. La sigla indica l’Indirect Branch Tracking, il tracciamento dei salti indiretti. VUSec associa gli interventi ai CVE-2026-64507 e CVE-2026-64508.