Een groep academici van VUSec en Scuola Superiore Sant’Anna hebben details bekendgemaakt van een nieuwe Spectre CPU-kwetsbaarheidsvariant die van invloed is op Just-In-Time (JIT)-engines die aanwezig zijn in webbrowsers, taalruntimes en de kernel van het besturingssysteem, bij meerdere CPU-leveranciers.
De nieuwe Spectre-v2-variant heeft de codenaam gekregen Branchedoelhergebruik (BTR).
“Het belangrijkste inzicht is dat, hoewel moderne CPU’s de samenhang van de architecturale code herstellen na zelfmodificatie, ze niet noodzakelijkerwijs verouderde indirecte vertakkingsvoorspellingsgegevens (dwz vertakkingsdoelen) ongeldig maken”, zeiden onderzoekers Sander Wiebing, Yuhui Zhu, Alessandro Biondi en Cristiano Giuffrida in een begeleidend artikel.
“In JIT-engines kunnen deze verouderde doelen de originele code overleven en later opnieuw worden gebruikt wanneer de codecache opnieuw wordt gevuld, wat een tijdelijke ‘execut-after-free’-primitief oplevert. Hierdoor kunnen aanvallers de tijdelijke controlestroom naar nieuw gegenereerde code kapen met verouderde offsets, waarbij softwareverharding wordt omzeild of verkeerd uitgelijnde gadgets worden bereikt. “
BTR werd geëvalueerd aan de hand van SpiderMonkey (de JIT-engine van Mozilla Firefox), GraalVM en de cBPF JIT van de Linux-kernel, die allemaal getroffen bleken te zijn, hoewel met “aanzienlijk verschillende exploiteereigenschappen en lekkagepercentages”.
Als proof-of-concept zijn er twee end-to-end exploits tegen de Linux-kernel bedacht die kunnen worden gebruikt om de root-wachtwoord-hash binnen enkele minuten te lekken en te herstellen vanaf een volledig gepatcht Intel-systeem met standaardbeveiliging ingeschakeld.
Spectre verwijst naar een klasse CPU-beveiligingsproblemen die voor het eerst in 2017 werden ontdekt en die misbruik maken van speculatieve uitvoering, een prestatie-optimalisatietechniek die moderne processors gebruiken om instructies vooraf te voorspellen en uit te voeren.
Een aanvaller kan deze maas in de wet misbruiken om een CPU te misleiden om speculatieve bewerkingen uit te voeren die toegang krijgen tot gevoelige gegevens, en die gegevens vervolgens af te leiden via een zijkanaal voor cachetiming.
Spectre v2 is een specifiek type Spectre-aanval dat misbruik maakt van indirecte branch-voorspellingen in moderne processors om dezelfde doelen te bereiken. Concreet vergiftigt het het vertakkingsvoorspellingsmechanisme van de CPU om ervoor te zorgen dat een slachtofferprogramma een indirecte vertakking uitvoert, wat er op zijn beurt voor zorgt dat de CPU de vertakking verkeerd inschat en speculatief door de aanvaller bestuurde code of een gadget uitvoert.
Hoewel de resultaten van de verkeerde voorspelling worden genegeerd, kan een aanvaller afleiden waartoe de speculatieve uitvoering van het slachtoffer toegang heeft gekregen door gebruik te maken van de cachestatusveranderingen en de cacheveranderingen te meten.
“BTR richt zich op JIT-engines en komt voort uit de wisselwerking tussen Self-Modifying Code (SMC) en indirecte branch-voorspelling”, aldus de onderzoekers, en voegde eraan toe: “JIT-engines leggen voor het eerst exploiteerbare tijdelijke uitvoeringsmogelijkheden bloot die door SMC worden veroorzaakt.”
Bij de aanval wordt ervan uitgegaan dat een aanvaller onbevoegde code in een JIT-engine kan uitvoeren en gevoelige gegevens uit de hostomgeving wil vrijgeven. De volledige reeks acties is als volgt:
- De aanvaller verleidt de JIT-engine om een trainingsblok toe te wijzen en dwingt de slachtoffertak ernaartoe te springen, waardoor een BTB-invoer wordt ingevoegd die verwijst naar het huidige toegangspunt.
- De aanvaller forceert een toewijzing van het trainingsdeel en een toewijzing van het doeldeel dat gedeeltelijk hetzelfde adres gebruikt.
- De aanvaller activeert de indirecte branch opnieuw, de CPU gebruikt de nu verouderde branch target buffer (BTB)-invoer en springt speculatief naar het oude training-chunk-invoerpunt.
- Het eindresultaat is het kapen van de controlestroom en het vrijgeven van geheime gegevens.
“Door de controlestroom om te leiden naar een architectonisch ongeldig toegangspunt, kan de aanvaller de verhardingsbeperkingen van Spectre omzeilen of verkeerd uitgelijnde instructies uitvoeren, waardoor uiteindelijk geheime gegevens openbaar worden gemaakt”, leggen de onderzoekers uit.
Een belangrijk aspect van BTR is echter dat de verouderde BTB-invoer niet ongeldig mag worden gemaakt of vervangen nadat de JIT-engine het trainingsdeel heeft vrijgegeven, en dat de vertakkingsvoorspeller de verouderde BTB-invoer moet selecteren voor voorspelling.
Na verantwoorde bekendmaking zijn er beperkende maatregelen voor BTR vrijgegeven en samengevoegd in de Linux-kernel (CVE-2026-64507 en CVE-2026-64508).
“GraalVM belemmert in plaats daarvan het hergebruik van regio’s door JIT-codecachelocaties willekeurig te maken”, aldus de onderzoekers. “Mozilla heeft op IBPB (Indirect Branch Predictor Barrier) gebaseerde oplossingen overwogen, maar geeft momenteel prioriteit aan de voltooiing en implementatie van site-isolatie.”
De onthulling komt bijna twee maanden nadat MIT CSAIL-onderzoekers Daniël Trujillo en Mengjia Yan een speculatieve uitvoeringsaanvaltechniek hebben onthuld, genaamd Interrupt Injection, die de Spectre v2-verdediging kan omzeilen en willekeurig kernelgeheugen kan lekken uit Intel- en AMD-gebaseerde Linux-systemen.