SLAM — atac asupra CPU-urilor Intel, AMD și ARM care permite determinarea conținutului memoriei

Un grup de cercetători de la Universitatea Liberă din Amsterdam a prezentat o nouă tehnică de atac SLAM (Spectre Linear Address Masking), care oferă un mod inovator de a exploata vulnerabilitățile microarhitecturale din clasa Spectre, în care scurgerile de date apar în timpul traducerii adreselor necanonice, iar pentru a ocoli verificările canonice se folosesc extensiile de mască a adreselor liniare furnizate de noile procesoare. Cercetătorii au publicat un instrumentar cu implementarea metodei și au propus o demonstrație, care arată cum se pot extrage date din memoria nucleului corespunzătoare unei anumite măști (ilustrat cum în câteva zeci de secunde în Ubuntu se extrage o linie cu hash-ul parolei utilizatorului root din memoria nucleului).

Redați video

Atacul poate fi realizat pe sisteme cu procesoare Intel care suportă extensia LAM (Linear Address Masking), procesoare AMD cu extensia UAI (Upper Address Ignore) și procesoare ARM cu extensia TBI (Top Byte Ignore). Aceste extensii permit utilizarea unei părți din biții pointerilor pe 64 de biți pentru stocarea de metadate nespecificate pentru adresare (pentru programele obișnuite nu este nevoie de atâta memorie cât să poată utiliza pointeri pe 64 de biți, astfel că biții superiori pot fi folosiți, de exemplu, pentru verificări legate de securitate). Interesant este că procesoarele Intel, AMD și ARM care suportă LAM, UAI și TBI sunt încă doar anunțate, dar nu sunt fabricate pe scară largă, ceea ce face ca SLAM să fie prima atac spekulativ asupra viitoarelor CPU-uri. Atacul poate fi realizat, de asemenea, și pe CPU-urile mai vechi AMD Zen+ și Zen 2, afectate de vulnerabilitatea CVE-2020-12965.

Analog cu exploatarea vulnerabilităților Spectre, atacul SLAM necesită în kernel anumite secvențe de instrucțiuni (gadgets) care conduc la execuția speculativă a instrucțiunilor. Aceste instrucțiuni conduc la citirea speculativă a datelor din memorie, în funcție de condițiile externe asupra cărora atacatorul poate influența. După determinarea unei prognoze greșite, rezultatul execuției speculative este respins, dar datele procesate rămân în cache și pot fi apoi extrase prin analiza canalelor externe. Pentru a extrage datele acumulate în cache, cercetătorii au utilizat metoda Evict+Reload, bazată pe crearea de condiții pentru eliminarea datelor din cache (de exemplu, se creează o activitate care umple uniform cache-ul cu conținut standard) și executarea de operații a căror durată permite judecarea existenței datelor în cache-ul procesorului.

Pentru a efectua atacul SLAM, se folosesc gadgets pe baza codului în care datele controlate de atacator (mai jos variabila „secret”) sunt utilizate ca pointer. De exemplu: void unmasked_gadget(long **secret) { **secret; }

Se remarcă faptul că astfel de șabloane de cod sunt frecvent utilizate în programe, de exemplu, în kernel-ul Linux au fost identificate zeci de mii de astfel de gadgets, dintre care cel puțin câteva sute sunt adecvate pentru utilizare în exploații. Scurgerea poate fi blocată prin adăugarea de instrucțiuni suplimentare în astfel de gadgets, care blochează execuția speculativă. Compania Intel intenționează să ofere o metodă software pentru blocarea scurgerii înainte de livrarea procesorului cu suport pentru LAM. Compania AMD a recomandat utilizarea metodele existente pentru blocarea atacurilor de tip Spectre v2. Dezvoltatorii kernel-ului Linux, pentru a se proteja împotriva atacului, au decis să dezactiveze implicit suportul pentru LAM până la publicarea recomandărilor Intel pentru blocarea vulnerabilității.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster