Nov napad na mikroarhitekturne strukture procesorjev Intel in AMD

Skupina raziskovalcev z Univerze v Virginiji in Univerze v Kaliforniji je predstavila novo vrsto napada na mikroarhitekturne strukture procesorjev Intel in AMD, odkritih med obratnim inženiringom nedokumentiranih zmogljivosti CPU. Predlagana metoda napada vključuje uporabo vmesnega predpomnilnika mikro operacij v procesorjih, ki se lahko uporablja za pridobivanje informacij, nabranih med špekulativnim izvajanjem navodil.

Za namene optimizacije začne procesor izvajati nekatera navodila v špekulativnem načinu, ne da bi čakal na dokončanje predhodnih izračunov, in če nato ugotovi, da napoved ni bila upravičena, povrne operacijo v prvotno stanje, vendar podatki, obdelani med špekulativna izvedba se shrani v predpomnilnik, katerega vsebino je mogoče določiti.

Opozoriti je treba, da nova metoda bistveno prekaša napad Spectre v1, napad otežuje zaznavanje in ni blokiran z obstoječimi metodami zaščite pred napadi stranskih kanalov, namenjenimi blokiranju ranljivosti, ki jih povzroči špekulativno izvajanje navodil (na primer uporaba navodil LFENCE blokira uhajanje v zadnjih fazah špekulativnega izvajanja, vendar ne ščiti pred uhajanjem skozi mikroarhitekturne strukture).

Metoda vpliva na modele procesorjev Intel in AMD, izdane od leta 2011, vključno s serijama Intel Skylake in AMD Zen. Sodobni procesorji razčlenijo zapletena navodila procesorja v enostavnejše mikrooperacije, podobne RISC, ki so shranjene v ločenem predpomnilniku. Ta predpomnilnik se bistveno razlikuje od predpomnilnikov višje ravni, ni neposredno dostopen in deluje kot tokovni medpomnilnik za hiter dostop do rezultatov dekodiranja navodil CISC v mikronavodila RISC. Vendar pa so raziskovalci našli način, kako ustvariti pogoje, ki nastanejo, ko je dostop do predpomnilnika v konfliktu, in omogočiti presojo vsebine predpomnilnika mikrooperacij z analizo razlik v času izvajanja določenih dejanj.

Nov napad na mikroarhitekturne strukture procesorjev Intel in AMD

Predpomnilnik mikro operacij v procesorjih Intel je segmentiran glede na niti CPU (Hyper-Threading), medtem ko procesorji AMD Zen uporabljajo skupni predpomnilnik, kar ustvarja pogoje za uhajanje podatkov ne samo znotraj ene izvajalne niti, temveč tudi med različnimi nitmi v SMT (možno uhajanje podatkov med kodo, ki se izvaja na različnih logičnih jedrih CPU).

Raziskovalci so predlagali osnovno metodo za zaznavanje sprememb v predpomnilniku mikrooperacij in več scenarijev napadov, ki omogočajo ustvarjanje skritih kanalov za prenos podatkov in uporabo ranljive kode za uhajanje zaupnih podatkov, oboje znotraj enega samega procesa (na primer za uhajanje podatkov procesa pri izvajanju kodo tretjih oseb v motorjih z JIT in v virtualnih strojih) ter med jedrom in procesi v uporabniškem prostoru.

Pri organiziranju različice napada Spectre z uporabo mikrooperacijskega predpomnilnika so raziskovalci uspeli doseči zmogljivost 965.59 Kbps s stopnjo napake 0.22% in 785.56 Kbps pri uporabi popravka napak v primeru organiziranja puščanja znotraj istega naslova. prostor in raven privilegijev. Z uhajanjem, ki zajema različne ravni privilegijev (med jedrom in uporabniškim prostorom), je bila zmogljivost 85.2 Kbps z dodanim popravkom napak in 110.96 Kbps s stopnjo napake 4 %. Pri napadu na procesorje AMD Zen in ustvarjanju puščanja med različnimi logičnimi jedri CPE je bila zmogljivost 250 Kbps s stopnjo napak 5.59 % in 168.58 Kbps s popravkom napak. V primerjavi s klasično metodo Spectre v1 je bil novi napad 2.6-krat hitrejši.

Pričakuje se, da bo zaščita pred napadom predpomnilnika mikro operacij zahtevala spremembe, ki bodo bolj zmanjšale zmogljivost, kot če bi omogočili zaščito pred napadi Spectre. Kot optimalen kompromis je predlagano blokiranje takih napadov ne z onemogočanjem predpomnjenja, temveč na ravni spremljanja anomalij in prepoznavanja stanj predpomnilnika, ki so značilna za napade.

Tako kot pri napadih Spectre tudi organiziranje uhajanja iz jedra ali drugih procesov zahteva izvajanje določenega zaporedja ukazov (pripomočkov) na strani procesov žrtve, kar vodi do špekulativnega izvajanja navodil. V jedru Linuxa je bilo najdenih približno 100 podobnih pripomočkov, ki bodo odstranjeni, vendar se občasno najdejo rešitve za njihovo ustvarjanje, na primer povezane z izvajanjem posebej zasnovanih programov BPF v jedru.

Vir: opennet.ru

Dodaj komentar