V procesorjih AMD, ki temeljijo na mikroarhitekturah Zen+ in Zen 2, so odkrili ranljivost razreda Meltdown

Skupina raziskovalcev s Tehnične univerze v Dresdnu je odkrila ranljivost (CVE-2020-12965) v procesorjih AMD, ki temeljijo na mikroarhitekturah Zen+ in Zen 2, kar omogoča napad razreda Meltdown. Sprva se je domnevalo, da procesorji AMD Zen+ in Zen 2 niso dovzetni za ranljivost Meltdown, vendar so raziskovalci identificirali funkcijo, ki vodi do špekulativnega dostopa do zaščitenih pomnilniških območij pri uporabi nekanoničnih virtualnih naslovov.

Arhitektura AMD64 uporablja le prvih 48 bitov virtualnega naslova in ignorira preostalih 16 bitov. Določeno je, da morajo biti od 48 do 63 vedno kopirati vrednost bita 47 (razširitev značnega bita). Če je ta pogoj kršen in se poskusi dostopati do naslova s ​​poljubnimi vrednostmi zgornjih bitov, procesor ustvari izjemo. Ponavljajoče polnjenje zgornjih bitov povzroči, da se razpoložljivi naslovni prostor razdeli na dva bloka - spodnjega (od 0 do 00007FFFFFFFFFFFFF), v katerem so zgornji biti nastavljeni na 800000000000, in zgornjega (od FFFF1 do FFFFFFFFFFFFFFFFFF), v katerem vsi zgornji biti so nastavljeni na XNUMX.

Naslovi, ki spadajo v podane bloke, se imenujejo kanonični, nepravilni naslovi s poljubno vsebino zgornjih bitov pa nekanonični. Spodnji obseg kanoničnih naslovov je običajno dodeljen za podatke o procesu, zgornji obseg pa se uporablja za podatke jedra (dostop do teh naslovov iz uporabniškega prostora je blokiran na ravni ločevanja privilegijev).

Klasična ranljivost Meltdown temelji na dejstvu, da lahko procesor med špekulativnim izvajanjem navodil dostopa do zasebnega podatkovnega območja in nato zavrže rezultat, ker nastavljeni privilegiji prepovedujejo tak dostop uporabnikovemu procesu. V programu je špekulativno izveden blok ločen od glavne kode s pogojno vejo, ki se v realnih pogojih vedno sproži, vendar zaradi dejstva, da pogojni stavek uporablja izračunano vrednost, ki je procesor ne pozna med preventivnim izvajanjem kodo, se vse možnosti podružnic izvajajo špekulativno.

Ker špekulativno izvedene operacije uporabljajo isti predpomnilnik kot običajno izvedena navodila, je med špekulativnim izvajanjem mogoče nastaviti oznake v predpomnilniku, ki odražajo vsebino posameznih bitov v zasebnem pomnilniškem območju, nato pa v običajno izvedeni kodi določiti njihovo vrednost s časovnim merjenjem. analiza dostopov do predpomnjenih in nepredpomnjenih podatkov.

Značilnost nove ranljivosti, ki vpliva na procesorje AMD Zen+ in Zen 2, je, da procesorji dovoljujejo špekulativne operacije branja in pisanja, ki dostopajo do pomnilnika z uporabo neveljavnih nekanoničnih naslovov, pri čemer preprosto ignorirajo zgornjih 16 bitov. Tako procesor med špekulativnim izvajanjem kode vedno uporablja samo spodnjih 48 bitov, veljavnost naslova pa se preverja posebej. Če je pri prevajanju nekanoničnega virtualnega naslova v fizični naslov v medpomnilniku asociativnega prevajanja (TLB) zaznano ujemanje v kanoničnem delu naslova, bo operacija špekulativnega nalaganja vrnila vrednost brez upoštevanja vsebine zgornjih 16 bitov, kar omogoča izogibanje delitvi pomnilnika med nitmi. Pozneje bo operacija obravnavana kot neveljavna in zavržena, vendar bo dostop do pomnilnika zaključen in podatki bodo končali v predpomnilniku.

Med eksperimentom so raziskovalci s tehniko določanja vsebine predpomnilnika FLUSH+RELOAD lahko organizirali kanal za skriti prenos podatkov s hitrostjo 125 bajtov na sekundo. Poleg čipov AMD težava zadeva tudi vse procesorje Intel, ki so dovzetni za klasično ranljivost Meltdown. Iste tehnike, ki pomagajo blokirati napade Meltdown, kot je uporaba navodil LFENCE, lahko uporabite za zaščito pred to novo vrsto napada. Na primer, če procesor Intel vključuje zaščito strojne opreme pred Meltdown ali ima sistem omogočeno zaščito programske opreme, potem takšne konfiguracije niso dovzetne za novo različico napada.

Hkrati raziskovalci ugotavljajo, da v primerjavi s procesorji Intel arhitektura procesorjev AMD omejuje možnost izvajanja resničnih napadov, vendar ne izključuje uporabe nove metode v kombinaciji z drugimi mikroarhitekturnimi napadi za povečanje njihove učinkovitosti. Zlasti predlagani napad ne dovoljuje določanja vsebine pomnilniških območij jedra in drugih procesov, ampak je omejen na možnost dostopa do drugih niti istega programa, ki se izvajajo v istem navideznem pomnilniškem prostoru.

Ker ima program brez ranljivosti možnost dostopa do svojih niti, je metoda s praktičnega vidika zanimiva za izogibanje izolaciji peskovnika in organiziranje motenj v delu drugih niti v programih, ki omogočajo izvajanje tretjih oseb. kodo, kot so spletni brskalniki in motorji JIT. Raziskovalci so preučili ranljivost motorja SpiderMonkey JavaScript in jedra Linuxa za napad, vendar niso našli ranljivih zaporedij kode, ki bi jih lahko uporabili za izvedbo napada. Poleg napadov na aplikacije je mogoče metodo uporabiti tudi za vsiljevanje nesprejemljivih podatkovnih tokov med mikroarhitekturnimi elementi procesorja ob izkoriščanju drugih mikroarhitekturnih ranljivosti.

Vir: opennet.ru

Dodaj komentar