Compania AMD a dezvăluit informații despre o nouă clasă de atacuri microarhitecturale asupra procesoarelor sale — TSA (Transient Scheduler Attack). Atacul permite unui atacator să ocolească mecanismele de izolare ale CPU-ului și să determine datele procesate în alte contexte, de exemplu, din spațiul utilizatorului să obțină informații procesate la nivel de kernel sau dintr-un sistem gazdă să afle date utilizate într-un alt sistem gazdă.
Vulnerabilitățile au fost descoperite în timpul dezvoltării unui instrument creat de cercetătorii de la Microsoft și de la ETH Zurich pentru testarea stresului microarhitecturii de izolare între diferite zone de delimitare a accesului, cum ar fi kernelul, mașinile virtuale și procesele.
Metoda de atac se bazează pe dependența timpului de execuție a anumitor instrucțiuni de starea structurilor microarhitecturale. Atunci când procesorul așteaptă finalizarea rapidă a unei instrucțiuni de citire a datelor din memorie (de exemplu, presupunând că datele sunt în cache-ul L1), dar nu reușește să obțină cu succes datele, apare starea de „finalizare falsă” (false completion). În acest moment, procesorul, înainte de a determina această stare, poate planifica execuția speculativă a altor operații care depind de rezultatul execuției instrucțiunii de încărcare din memorie.
Deoarece încărcarea s-a dovedit a nu fi finalizată, datele asociate acesteia sunt considerate invalide de către procesor, iar operațiunea de încărcare este repetată mai târziu. Operațiile dependente sunt de asemenea executate din nou după ce datele corecte devin disponibile. În acest proces, eliminarea din tubul de execuție (pipeline flush) după finalizarea instrucțiunii pentru care a fost înregistrată starea de „finalizare falsă” nu se efectuează, iar datele incorecte pot fi redirecționate către operațiile dependente.
Executarea unor astfel de operații nu modifică starea cache-ului și TLB-ului (Translation Lookaside Buffer), adică datele nu pot fi recuperate prin metode tradiționale de determinare a stării cache-ului. Totuși, aceste date influențează timpul de execuție al altor instrucțiuni. Analiza timpului de execuție poate fi utilizată ca sursă de scurgere a informațiilor din structurile microarhitecturale rămase după execuția speculativă a altor operații.
În funcție de sursa de extragere a datelor reziduale, au fost identificate două vulnerabilități:
- CVE-2024-36350 (TSA-SQ — TSA Store Queue) — o scurgere din buffer-ul de stocare temporară a operațiunilor de scriere (Store Queue), permițând determinarea rezultatului execuției instrucțiunilor de scriere în memorie.
- CVE-2024-36357 (TSA-L1 — TSA L1 Data Cache) — o scurgere prin cache-ul L1D.
Vulnerabilitățile se manifestă în familia de procesoare AMD (Fam19h) bazate pe microarhitecturile Zen 3 și Zen 4. De exemplu, problema este prezentă în seriile CPU AMD Ryzen 5000/6000/7000/8000, AMD EPYC Milan/Milan-X/Genoa/Genoa-X/Bergamo/Siena, AMD Instinct MI300A, AMD Ryzen Threadripper PRO 7000 WX, AMD EPYC Embedded 7003/8004/9004/97X4, AMD Ryzen Embedded 5000/7000/V3000.
Modificările necesare pentru a bloca vulnerabilitățile sunt incluse în actualizarea de microcod din decembrie și în firmware-urile PI (Platform Initialization), transmise producătorilor OEM. Patch-urile pentru protejarea împotriva vulnerabilității au fost livrate pentru a fi incluse în kernel-ul Linux (pentru a dezactiva protecția, care afectează negativ performanța, este disponibilă opțiunea de linie de comandă a kernel-ului „tsa=off”). De asemenea, corectarea a fost adăugată în hipervizorul Xen. Pentru a bloca vulnerabilitatea, este necesară atât actualizarea microcodului, cât și activarea modului de protecție la nivel de kernel sau hipervizor.
Sursa: opennet.ro
