Direct naar de inhoud
Cybersecurity

Spectre v2 BTR: aanval lekt geheugen via Linux JIT

Spectre v2 BTR

Onderzoekers hebben een nieuwe cpu-variant binnen de bekende Spectre v2-familie openbaar gemaakt: Spectre v2 BTR. De kern van het probleem zit niet alleen in speculative execution, maar vooral in hoe indirect branch prediction zich gedraagt wanneer code dynamisch wijzigt in JIT-engines. Daardoor kan een aanvaller mogelijk geheugen lekken, zelfs wanneer bestaande verdedigingsmaatregelen aanwezig zijn.

De onderzoekers van VUSec en Scuola Superiore Sant’Anna laten zien dat de techniek raakvlakken heeft met webbrowser-JITs, taalruntimes én de Linux kernel. Na verantwoord disclosure zijn er inmiddels mitigaties in de Linux-kernel opgenomen.

Wat is Spectre v2 BTR?

Spectre v2 BTR (Branch Target Reuse) is ontworpen rond een specifieke observatie: moderne cpu’s herstellen weliswaar architecturale code-coherentie na self-modifying code, maar garanderen niet dat stale indirect branch prediction entries worden ongeldig gemaakt. Met andere woorden: een oude voorspelling kan blijven “hangen” in de branch prediction-structuren.

Die oude voorspelde doelen kunnen in een JIT-omgeving langer blijven bestaan dan de code waar ze oorspronkelijk naar verwezen. Zodra de runtime later nieuwe code genereert en de cache of codegebieden opnieuw worden gevuld, kan de cpu opnieuw naar het “oude” doel springen. Dat levert een transient execute-after-free-achtige mogelijkheid op: de aanval stuurt tijdelijk controleflow aan naar offsets die niet meer geldig zijn, waarna geheimen kunnen worden afgeleid via cachegedrag.

Waarom JIT-engines extra kwetsbaar zijn

JIT-engines (Just-In-Time) compilen of genereren code tijdens runtime. Daardoor veranderen geheugenlocaties, codeblokken en uitvoerbare structuren dynamisch. De aanval van Spectre v2 BTR profiteert van de combinatie van:

  • Self-modifying code (code die verandert of opnieuw wordt gebruikt),
  • indirect branch prediction (voorspellingen voor indirecte sprongen),
  • het moment waarop JIT-memory wordt vrijgegeven en later deels opnieuw wordt toegewezen.

Belangrijk is dat de branch predictor de “stale” voorspelling moet blijven gebruiken op het moment dat de oude code niet meer bestaat. Als het stale entry juist wordt invalidated of vervangen, verdwijnt de kans op een bruikbare transient control-flow.

Welke componenten zijn getest?

De onderzoekers evalueerden Spectre v2 BTR in meerdere omgevingen. Ze noemen expliciet dat het effect werd waargenomen bij:

  • SpiderMonkey, de JIT-engine van Mozilla Firefox,
  • GraalVM,
  • de Linux kernel via de cBPF JIT.

Volgens de publicatie hebben de aanvallen niet overal dezelfde praktische impact. De onderzoekers beschrijven dat exploitability en lekkingspercentages per omgeving duidelijk kunnen verschillen.

Hoe werkt de aanval op hoofdlijnen?

De onderzoekers schetsen de aanval als een reeks stappen waarin een aanvaller unprivileged code draait binnen het bereik van de JIT. De timing en het geheugenhergebruik zijn daarbij cruciaal. Op hoofdlijnen ziet het proces er zo uit:

  • De aanvaller lokt de JIT-engine uit om een training chunk toe te wijzen en stuurt een branch naar dit geheugen. Daarmee ontstaat een BTB-vermelding met een doelpunt naar de huidige entry.
  • Vervolgens dwingt de aanvaller het systeem om de training chunk vrij te geven.
  • Daarna triggert de aanvaller een nieuwe toewijzing: de target chunk wordt zodanig gekozen dat deze deels hetzelfde adresruimtegedrag opnieuw gebruikt.
  • Als de aanvaller het indirecte branchmechanisme opnieuw activeert, kan de cpu de nu verouderde BTB-entry gebruiken. Daardoor springt de cpu speculatief naar het oude training-entrypunt.

Het eindresultaat is control-flow hijacking op transient niveau én het uitlekken van gevoelige informatie. De techniek is daarmee niet alleen een “theoretisch” Spectre-verhaal, maar richt zich op een concrete route naar datadisclosure.

Proof-of-concept tegen de Linux-kernel

In een proof-of-concept tonen de onderzoekers twee end-to-end exploits voor de Linux kernel. Daarmee zouden aanvallen — zelfs op een volledig gepatchte Intel-omgeving met standaardbescherming ingeschakeld — in minuten de root password hash kunnen lekken en vervolgens kunnen terugwinnen.

Dat maakt duidelijk waarom Spectre v2 BTR relevant is voor beheerders: het gaat niet alleen om browser of taalruntime, maar kan ook raken aan kernelcomponenten die JIT-technieken toepassen.

Welke mitigaties zijn er in Linux?

Na responsible disclosure zijn er mitigaties ontwikkeld en samengevoegd in de Linux-kernel. In de publicatie worden daarbij twee CVE’s genoemd:

  • CVE-2026-64507
  • CVE-2026-64508

Daarnaast leggen de onderzoekers uit dat zij een kernmechanisme achter BTR behandelen: het probleem zit in het hergebruik van branch target informatie die niet op tijd ongeldig wordt. Door passende kernelwijzigingen kan het risico worden ingeperkt.

Let op: “mitigatie aanwezig” betekent niet automatisch “volledig immuun”. Het is daarom verstandig om niet alleen updates te installeren, maar ook runtime- en omgevingstechnieken te beoordelen.

Wat betekent dit voor Firefox en GraalVM?

De onderzoekers benoemen ook aanpakken bij andere ecosystems. Zo zegt de publicatie dat GraalVM region reuse tegenwerkt door JIT-code-cache locaties te randomiseren. Het doel hiervan is het patroon te doorbreken dat een aanvaller nodig heeft om stale targets praktisch bruikbaar te maken.

Voor Mozilla wordt vermeld dat er is gekeken naar mitigaties gebaseerd op IBPB (Indirect Branch Predictor Barrier). Tegelijkertijd geeft de publicatie aan dat Mozilla prioriteit legt bij het afronden en uitrollen van site isolation. Dat past in de strategie om de impact van runtime-lekken te beperken door scheiding tussen omgevingen.

Vergelijk met andere Spectre-v2 omzeilingen

Deze bekendmaking komt niet uit het niets. De publicatie verwijst naar eerder onderzoek naar een speculative execution-aanvalsmethode met de naam Interrupt Injection, die Spectre v2-defenses kan bypassen en arbitraire kernelmemory kan lekken op Intel- en AMD-gebaseerde Linux-systemen.

Als je dit soort dreigingen beoordeelt, helpt het om niet alleen naar één CVE te kijken, maar naar het bredere patroon: cpu- en microarchitectuur-aanvallen blijven evolueren, terwijl verdedigingslagen soms tijd nodig hebben om volledig uitgerold te worden. Voor verdere context over dit soort aanvallen kun je ook lezen over hoe aanvallers zich door platforms heen bewegen, zoals in zaken waar supply chain en runtime-gebruik misbruikt worden—ook al gaat dat over een ander aanvallenpad, het laat wel zien hoe snel runtime-context een rol kan spelen.

Praktische stappen voor organisaties

Moet je direct alles omgooien? Waarschijnlijk niet, maar je kunt wél gericht actie ondernemen rondom Spectre v2 BTR:

  • Update de Linux-kernel naar releases waarin de genoemde mitigaties (CVE-2026-64507 en CVE-2026-64508) zijn meegenomen.
  • Beperk blootstelling van JIT-omgevingen waar mogelijk. Denk aan het beperken van mogelijkheden voor onbetrouwbare code om JIT te triggeren.
  • Herzie hardening en isolatiebeleid rondom browsergebruik en runtime-omgevingen (bijvoorbeeld site isolation of vergelijkbare scheidingsmaatregelen waar relevant).
  • Monitor op updates in tooling zoals Java runtimes of andere platforms met JIT-componenten. De snelheid waarmee mitigaties landen verschilt per leverancier.

Door deze stappen combineer je patching met risicobeperking: je verkleint niet alleen de kans dat een specifieke variant werkt, maar ook de speelruimte van aanvallers in het algemeen.

Conclusie

Spectre v2 BTR laat zien dat speculative execution niet alleen draait om “voorspellingen die te vroeg lopen”, maar ook om wat cpu’s onthouden en wanneer die informatie wordt hergebruikt. Doordat JIT-engines dynamisch code opbouwen en geheugen vrijgeven, kan stale branch prediction een route bieden naar transient control-flow en datalekken.

De goede kant: mitigaties zijn inmiddels in de Linux-kernel opgenomen (met verwijzing naar CVE-2026-64507 en CVE-2026-64508). De uitdaging: blijf bij, want microarchitectuur-aanvallen ontwikkelen mee. Door updates door te voeren én JIT-gerelateerde blootstelling te beperken, houd je de risico’s van dit soort CPU-varianten beter onder controle.

Bron: https://thehackernews.com/2026/09/new-spectre-v2-btr-attack-leaks-linux.html