Vsi procesorji AMD Ryzen so dovzetni za nove napade »Inception«, ki uhajajo občutljive podatke

Nov napad, imenovan Inception, je mogoče uporabiti za uhajanje občutljivih podatkov iz katerega koli procesorja AMD.

Ključni zaključki

  • Raziskovalci z ETH Zurich so razvili nov napad s prehodno izvršitvijo, imenovan Training in Transient Execution (TTE), ki izkorišča špekulativno izvajanje za uhajanje pomnilnika jedra in dostop do občutljivih datotek, kot je /etc/shadow v Linuxu stroji.
  • Inception, izkoriščanje od konca do konca, zgrajeno z uporabo TTE, lahko uhaja do 39 bajtov na sekundo na AMD Zen 4 procesorjev in uspešno pridobiti zgoščena gesla uporabniških računov, shranjena v /etc/shadow v 40 minut.
  • Začetni napad se razlikuje od drugih napadov s prehodnim izvajanjem po tem, da v napovedovalec veje vstavi nove napovedi med prehodno okno, ki ustvarja zmogljivejša prehodna okna, ki jih je mogoče uporabiti za prepolnitev medpomnilnika povratnega sklada in pridobitev nadzora nad CPU. Zmanjšanje vpliva tega napada je očitno izziv.

V luči Zenbleed, so raziskovalci z ETH Zurich zasnovali nov razred napadov s prehodno izvršitvijo, ki so ga poimenovali Training in Transient Execution (TTE). Z uporabo TTE so raziskovalci zgradili celovito izkoriščanje, imenovano Inception. Na AMD Zen 4 lahko uhaja iz pomnilnika jedra s hitrostjo do 39 bajtov na sekundo, raziskovalcem pa je uspelo uhajati /etc/shadow na

Linux stroj v 40 minutah. Ta datoteka vsebuje zgoščena gesla uporabniških računov in je varovana s strani sistema, dostopna pa je samo uporabniku root. Z drugimi besedami, ta podvig je res slab.

Kako deluje Inception?

Tako kot pri Zenbleedu, Začetek (CVE-2023-20569, prek Bleeping Computer) zlorablja špekulativno izvršitev v tem, kako deluje. Predvidevanje veje in špekulativno izvajanje se na splošno nanašata na to, kdaj vaš računalnik izvaja operacije, ki še niso potrebne, vendar bodo verjetno potrebne v naslednjih ciklih. To se pogosto izvaja v času, ko ima vaš sistem prosta sredstva, saj pospeši celotno obdelavo, ko navodila ali podatki sicer še ne bi bili pripravljeni za CPE. Če opravljeno delo ni potrebno, se običajno zavrže in procesor lahko skoči nazaj tja, kjer mora, da izvede naslednje, pravilno navodilo. Ko to stori, se to imenuje napačna napoved veje.

Vendar pa obstaja veliko težav, ko gre za špekulativno izvajanje, in ranljivosti, kot sta Spectre in Zenbleed, so posledica tega. Ti raziskovalci so združili starejši podvig, imenovan "Phantom" (ki je vplival na arhitekturi Zen 1 in Zen 2) s svojim napadom TTE, da bi ustvarili Inception.

"Začetek" je referenca na istoimenski film, kjer se premisa filma opira na to, da nekomu, ko sanja, vsadi idejo v glavo. V tem primeru raziskovalci trdijo, da v CPE vnašajo "idejo", medtem ko je ta v nekem smislu "sanjati." To povzroči, da izvede napačna navodila, kar Inceptionu omogoči, da ugrabi nadzorni tok procesorja.

BTB je Branch Target Buffer in RSB je Return Stack Buffer. Povzeto po beli knjigi Inception:

"V prvem koraku usposabljanja T1 napadalec izvede vejo usposabljanja na TJ, ki trči z vnosom BTB vira PHANTOMJMP PJ. PJ, ki se nahaja v naslovnem prostoru jedra, je naslov, ki sproži rekurzivni PHANTOMCALL. Vrnjeni VR žrtve je dodeljen za PJ v kontrolnem toku. Cilj PHANTOMJMP je nastavljen na PC, pri katerem se bo sprožil rekurzivni PHANTOMCALL. V koraku usposabljanja T2 napadalec izvede klic usposabljanja na TC, ki trči v PC v BTB, kar bo vzpostavilo napoved za PHANTOMCALL. Cilj tega klica za usposabljanje na je nastavljen na PC, kar vzpostavlja rekurzivno napoved PHANTOMCALL. Po izvedbi PC-ja bo CPE tako rekurzivno vbrizgal napovedi RSB v pripomoček za razkrivanje G, katerega lokacija takoj sledi PHANTOMCALL-u v PC-ju. Ker je osebni računalnik v prostoru jedra, bosta učni veji TJ in TC sprožili napake strani, ki jih obnovimo."

Kjer se Inception razlikuje od večine napadov s prehodnim izvajanjem, je to, da med prehodnim oknom namesto tega vstavi nove napovedi v napovedovalec vej. Vsaka vstavitev ustvari dodatna prehodna okna, ki so lahko močnejša od prejšnjih. V primeru Phantoma (CVE-2022-23825), lahko prehodno okno ustvarite s poljubnimi navodili. To pomeni, da se navodila (kot je izključni ali ali XOR) lahko uporabijo kot navodilo za klic in ustvarijo nadaljnja prehodna okna. To se nato uporabi za prepolnitev medpomnilnika povratnega sklada.

Kaj lahko narediš?

Trenutno ne morete storiti veliko in tudi v primeru AMD je težko reči, kaj lahko dejansko storijo glede tega. Za popolno ublažitev njegovega vpliva bi moral AMD med preklapljanjem med konteksti izprazniti napovedovalec blagovne znamke, kar je lahko neverjetno drago.

AMD je predlagal drugačno ublažitev in tisto, ki omogoča, da se je AMD odločil za prisilno napačno napovedovanje vseh posrednih vej na benigno lokacijo. Dokler popravki ne bodo uvedeni, bo vaša strojna oprema dovzetna.

A papir o Inceptionu bomo predstavili na Varnost USENIX 2023 in a papir o fantomskih špekulacijah bo predstavljen na MIKRO 2023. Če želite izvedeti več o izkoriščanju, lahko preberete te članke.