VU Amsterdam laat Spectre terugkeren via JIT-compilers en leest root-hash uit Linux
Onderzoekers van VUSec, de securitygroep van de Vrije Universiteit Amsterdam, en de Italiaanse Scuola Superiore Sant'Anna hebben een nieuwe variant van Spectre v2 gedemonstreerd. De aanval heet Branch Target Reuse (BTR) en richt zich op just-in-time-compilers: de onderdelen die op het moment van uitvoeren machinecode genereren, in browsers, runtimes en de kernel.
Oude voorspellingen die te lang blijven hangen
Spectre-aanvallen misbruiken speculatieve uitvoering, waarbij een processor code al uitvoert voordat duidelijk is of dat nodig is. Bij de v2-variant wordt de branch predictor van de cpu getraind om speculatief naar een door de aanvaller gekozen adres te springen, waarna er via cachesporen data lekt.
Het nieuwe inzicht zit in wat er gebeurt als code zichzelf overschrijft. "While modern CPUs restore architectural code coherence after self-modification, they do not necessarily invalidate stale indirect branch prediction entries", schrijven de auteurs. In een JIT-engine kan zo'n verouderd sprongdoel de oorspronkelijke code dus overleven en later opnieuw gebruikt worden wanneer de code-cache met nieuwe code wordt gevuld. De onderzoekers noemen dat een speculatieve execute-after-free.
Dat is meer dan een detail. Sinds 2018 ging het vakgebied ervan uit dat dit soort aanvallen in de praktijk niet haalbaar was, juist omdat zelfmodificerende code de basis vormt van dynamische codegeneratie in gangbare JIT-engines. VUSec-onderzoeker Cristiano Giuffrida legt tegenover BleepingComputer uit dat BTR precies het tegendeel laat zien.
Root-hash uit een draaiend su-proces
De aanval is geëvalueerd tegen de klassieke BPF-implementatie in de Linux-kernel, Oracle GraalVM en SpiderMonkey, de JavaScript-engine van Firefox. Voor de proof of concept gebruikten de onderzoekers ongeprivilegieerde cBPF-programma's: eerst de voorspelling trainen, dan het programma vrijgeven, dan een ander programma in datzelfde stukje geheugen laten landen. Het verouderde sprongdoel zorgde er vervolgens voor dat de cpu speculatief instructies van de aanvaller uitvoerde op een verschoven offset, met een meetbaar cachespoor als gevolg.
Daarmee lokaliseerden ze een draaiend su-proces en lazen ze de hash van het rootwachtwoord uit het geheugen, met acht bytes per seconde. "We evaluated the end-to-end exploit on both Raptor Cove and Lion Cove, and leaked the password within 3 and 5 minutes on average, respectively", aldus de onderzoekers. Het paper beschrijft twee volledige exploits tegen cBPF: één op de standaardconfiguratie en één met de hardening-optie constant blinding aan. Volgens The Register omzeilt de techniek daarmee ook softwarematige verdedigingen als FineIBT.
Een hash is geen wachtwoord. Wat een aanvaller ermee kan, hangt af van het gebruikte hash-algoritme en de sterkte van het wachtwoord; kraken gebeurt offline of in de cloud.
Fixes, en een leverancier die het laat liggen
De onderzoekers — Sander Wiebing, Yuhui Zhu, Alessandro Biondi en Cristiano Giuffrida — hebben de betrokken partijen ingelicht. Er zijn twee identificatienummers uitgegeven, CVE-2026-64507 en CVE-2026-64508. De fixes zijn in de Linux-kernel gemerged en Oracle heeft maatregelen doorgevoerd.
Mozilla kiest een andere route en zet volgens de onderzoekers liever in op site isolation dan op het direct aanpakken van deze aanval. Zware mitigaties zoals IBPB werken wel, maar kosten complexiteit en prestaties. Het paper is aangenomen voor de ACM-conferentie CCS 2026, die van 15 tot 19 november in Den Haag wordt gehouden.