Den Kern des Angriffs beschreiben Sander Wiebing, Yuhui Zhu, Alessandro Biondi und Cristiano Giuffrida in ihrer Arbeit so: Moderne Prozessoren stellen nach selbstmodifizierendem Code zwar die architekturelle Code-Kohärenz wieder her, verwerfen dabei aber nicht zwangsläufig veraltete Einträge der indirekten Sprungvorhersage, also alte Sprungziele. In JIT-Engines können diese veralteten Ziele den ursprünglichen Code überdauern und später wiederverwendet werden, wenn der Code-Cache neu befüllt wird. Daraus entsteht ein transientes „Execute-after-free"-Primitiv: Angreifer können den transienten Kontrollfluss zu neu erzeugtem Code an obsoleten Offsets umlenken, Software-Härtung umgehen oder fehlausgerichtete Gadgets erreichen.

Spectre bezeichnet eine 2017 erstmals beschriebene Klasse von CPU-Schwachstellen, die spekulative Ausführung ausnutzen – jene Optimierung, mit der Prozessoren Befehle vorhersagen und vorab ausführen. Angreifer bringen die CPU dazu, spekulativ auf sensible Daten zuzugreifen, und schließen anschließend über einen Cache-Timing-Seitenkanal auf deren Inhalt. Spectre v2 missbraucht dafür gezielt die indirekte Sprungvorhersage: Die Vorhersage wird vergiftet, das Opferprogramm führt einen indirekten Sprung aus, die CPU verzweigt falsch und führt spekulativ vom Angreifer kontrollierten Code oder ein Gadget aus. Die Ergebnisse der Fehlvorhersage werden zwar verworfen, über Veränderungen im Cache-Zustand lassen sich die zugegriffenen Daten aber ableiten.

„BTR nimmt JIT-Engines ins Visier und entsteht aus dem Zusammenspiel von selbstmodifizierendem Code und indirekter Sprungvorhersage", schreiben die Forscher; JIT-Engines böten damit erstmals durch selbstmodifizierenden Code ausgelöste, ausnutzbare Gelegenheiten für transiente Ausführung.

Vorausgesetzt wird ein Angreifer, der unprivilegierten Code in einer JIT-Engine ausführen kann und sensible Daten aus der Host-Umgebung auslesen will. Der Ablauf gliedert sich in mehrere Schritte:

  • Der Angreifer bringt die JIT-Engine dazu, einen Trainings-Chunk zu allozieren, und zwingt den Opfer-Sprung dazu, dorthin zu springen – damit entsteht ein BTB-Eintrag, der auf den aktuellen Einstiegspunkt verweist.
  • Er erzwingt die Freigabe des Trainings-Chunks und die Allokation eines Ziel-Chunks, der dieselbe Adresse teilweise wiederverwendet.
  • Er löst den indirekten Sprung erneut aus; die CPU nutzt den nun veralteten Eintrag im Branch Target Buffer (BTB) und springt spekulativ zum alten Einstiegspunkt des Trainings-Chunks.

Ergebnis ist die Übernahme des Kontrollflusses und die Preisgabe geheimer Daten. „Indem der Angreifer den Kontrollfluss auf einen architekturell ungültigen Einstiegspunkt umlenkt, kann er Spectre-Härtungsmaßnahmen umgehen oder fehlausgerichtete Instruktionen ausführen und so letztlich geheime Daten offenlegen", erläutern die Forscher. Entscheidend ist dabei, dass der veraltete BTB-Eintrag nach dem Freigeben des Trainings-Chunks nicht invalidiert oder ersetzt wird und dass die Sprungvorhersage genau diesen Eintrag für ihre Prognose heranzieht.

Getestet wurde BTR gegen SpiderMonkey, die JIT-Engine von Mozilla Firefox, gegen GraalVM sowie gegen den cBPF-JIT des Linux-Kernels. Alle drei erwiesen sich als betroffen, allerdings mit „deutlich unterschiedlichen Ausnutzbarkeitseigenschaften und Leckraten". Als Machbarkeitsnachweis entwickelten die Forscher zwei durchgängige Exploits gegen den Linux-Kernel.

Giuffrida ordnet den Angriff als ersten praktischen „In-Place"-Spectre-v2-Angriff ein, bei dem derselbe indirekte Sprung sowohl zum Trainieren als auch zum Auslesen dient. „Die gängige Annahme war immer, dass sich das kaum umsetzen lässt, weil klassische Spectre-v2-Angriffe ‚räumliche’ Zielverletzungen ausnutzen – also das Ziel eines indirekten Sprungs auf ein anderes umbiegen – und das für einen einzelnen Sprung intuitiv schwierig erscheint, da man ‚räumlich’ nur von einem gültigen Ziel desselben Sprungs zu einem anderen gelangen kann", sagte er. BTR zeige, dass diese Annahme falsch sei, sobald man „zeitliche" Spectre-v2-Angriffe durchführen könne: Sprung und Ziel bleiben gleich, aber die Bedeutung des Ziels – der dahinterliegende Code – ändert sich.

Damit unterläuft die Variante auch bestehende Gegenmaßnahmen dieser Angriffslinie, darunter jene gegen Training Solo (CVE-2024-28956 und CVE-2025-24495). Einschränkend gilt laut Giuffrida, dass der Wirkungsbereich auf JIT-Engines begrenzt ist. „BTR nutzt überhaupt keine räumlichen Verletzungen aus", sagte er. „Ein indirekter Sprung und ein Ziel genügen für Spectre-v2-Angriffe, solange der zugrundeliegende Code seine Bedeutung auf vom Angreifer kontrollierte Weise ändert – und genau das ist in verbreiteten JIT-Engines machbar." Da Betriebssystemkerne heute JIT-Engines wie cBPF betreiben, sei die Reichweite am Ende ähnlich wie bei Training Solo. Grundsätzlicher lege BTR einen Fehler in der Art offen, wie moderne CPUs selbstmodifizierenden beziehungsweise JIT-kompilierten Code behandeln: Zwar synchronisieren sie mikroarchitekturelle Strukturen wie Instruktions- und Datencaches neu, wenn Code umgeschrieben wird – BTR zeige, dass das nicht ausreicht und dass ein veralteter Zustand der indirekten Sprungvorhersage erhebliche Sicherheitsfolgen hat.

Nach koordinierter Offenlegung wurden Gegenmaßnahmen veröffentlicht und in den Linux-Kernel übernommen; sie werden unter CVE-2026-64507 und CVE-2026-64508 geführt. GraalVM erschwert die Wiederverwendung von Speicherregionen, indem die Lage des JIT-Code-Caches randomisiert wird. Mozilla erwog Gegenmaßnahmen auf Basis von IBPB (Indirect Branch Predictor Barrier), priorisiert derzeit aber den Abschluss und die Ausrollung der Site Isolation.

Die Forscher ziehen drei Schlüsse aus der Entdeckung:

  • In-Place-Spectre-v2-Angriffe sind im „zeitlichen" Bereich praktikabel.
  • JIT-Engines müssen entweder Isolationsmechanismen nach Art der Site Isolation einsetzen oder spezifische Gegenmaßnahmen gegen BTR ergreifen, etwa die IBPB-Maßnahme bei cBPF.
  • Moderne CPUs synchronisieren beim Umschreiben von Code nicht den gesamten nötigen mikroarchitekturellen Zustand neu – und es gibt dafür keine einfache Lösung, da eine vollständige Synchronisation teuer wäre. Weitere BTR-ähnliche Probleme könnten daher künftig auftauchen.

Die Veröffentlichung erfolgt knapp zwei Monate, nachdem die MIT-CSAIL-Forscher Daniël Trujillo und Mengjia Yan eine Angriffstechnik auf spekulative Ausführung namens Interrupt Injection beschrieben hatten, mit der sich Spectre-v2-Abwehrmaßnahmen umgehen und beliebiger Kernelspeicher aus Linux-Systemen mit Intel- und AMD-Prozessoren auslesen lässt.