SLAM — rünnak Intel, AMD ja ARM CPU-dele, mis võimaldab määrata mälu sisu

Amsterdam Free University teadlaste rühm tutvustas uut SLAM (Spectre Linear Address Masking) rünnetehnoloogiat, mis pakub uut viisi Spectre klassi mikroarhitektuursete haavatavuste ärakasutamiseks, kus andmeleke toimub mittekanoniliste aadresside tõlkimise käigus, ning kanonilisuse kontrollide ületamiseks kasutatakse uusi protsessoreid, mis pakuvad lineaarsete aadresside maskeerimise täiendusi. Teadlased on avaldanud tööriistakomplekti meetodi rakendusega ja pakutud demonstratsiooni, näidates, kuidas on võimalik mälust välja tõmmata andmeid, mis vastavad teatud maskile (näidatud on, kuidas Ubuntu all saab mõne kümne sekundi jooksul tuvastada kernelimälu aadressil asuva root kasutaja paroolihäši).

Vaata videot

Rünne võib toimuda Intel protsessoritega süsteemides, mis toetavad LAM (Linear Address Masking) täiendust, AMD protsessoritega, mis toetavad UAI (Upper Address Ignore) täiendust, ning ARM protsessoritega, mis toetavad TBI (Top Byte Ignore) täiendust. Need täiendused võimaldavad kasutada osa 64-bitiste näidikute bittidest, et salvestada adresseerimisega mitte seotud metaandmeid (tavapärastel programmide puhul ei ole vaja nii palju mälu, et 64-bitiseid näidikuid adresseerida, seega võivad ülemised bitid olla kaasatud näiteks turvalisuse tagamisega seotud kontrollidesse). Huvi pakub, et Intel, AMD ja ARM protsessorid, mis toetavad LAM, UAI ja TBI, on alles ainult välja kuulutatud, kuid mitte massiliselt toodetud, mis teeb SLAMi esimeseks spekulatiivseks rünnakuks tulevastele CPU-dele. Rünne võib samuti aset leida vanematel AMD Zen+ ja Zen 2 CPU-del, mis on haavatavad CVE-2020-12965 haavatavuste suhtes.

Sarnaselt Spectre haavatavuste ärakasutamisega nõuab SLAM rünne, et tuum sisaldaks teatud juhiste (gadgetite) järjestusi, mis viivad juhiste spekulatiivse täitmiseni. Sellised juhised põhjustavad spekulatiivset andmete lugemist mälust sõltuvalt välistest tingimustest, millele ründaja võib mõju avaldada. Kui vale prognoos on tuvastatud, visatakse spekulatiivse täitmise tulemus kõrvale, kuid töödeldud andmed jäävad vahemällu ja neid saab hiljem välja tõmmata kolmanda osapoole kanalite analüüsi abil. Teadlased kasutasid vahemälus setitud andmete välja tõmbamiseks meetodit Evict+Reload, mis põhineb tingimuste loomisel, et andmed vahemälust kõrvaldada (näiteks tekitatakse aktiivsus, mis täidab vahemälu tüüpiliste sisudega) ja operatsioonide teostamisel, mille täitmise aeg võimaldab järeldada, kas andmed on protsessori vahemälus olemas.

SLAM rünnaku jaoks kasutatakse koodigadgeteid, kus ründaja kontrollitavad andmed (alla on muutujaks "secret") kasutatakse osutina. Näiteks: void unmasked_gadget(long **secret) { **secret; }

Tuleb märkida, et selliseid koodimustreid kasutatakse sageli programmides, näiteks on Linuxi tuumas tuvastatud kümneid tuhandeid selliseid gadgete, millest vähemalt paar sada on kasutatavad eksploitide koostamiseks. Andmeleke saab blokeerida, lisades sellistele gadgetidele täiendavaid juhiseid, mis blokeerivad spekulatiivset täitmist. Intel kavatseb pakkuda tarkvara meetodit lekkimise blokeerimiseks enne protsessorite, mis toetavad LAM, tarnimist. AMD soovitas kasutada olemasolevaid Spectre v2 rünnakute blokeerimise meetodeid. Linuxi tuuma arendajad otsustasid rünnaku kaitseks vaikimisi LAM-i toe välja lülitada, kuni Intel pakub soovitusi haavatavuste blokeerimiseks.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS-kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS-kaitsega, VPS VDS serverid | ProHoster