LVI — uus rünnakute klass spekulatiivse täitmise mehhanismile CPU-s

Avalikustatud infod uue rünnakute klassi kohta LVI (Load Value Injection, CVE-2020-0551) spekulatiivse täitmise mehhanismile Intel CPU-s, mida saab kasutada võtmete ja salajaste andmete lekke korraldamiseks Intel SGX-enklavides ja teistes protsessides.

Uus rünnakute klass põhineb manipulatsioonidel samade mikroarhitektuursete struktuuridega, nagu ka rünnakutes MDS (Mikroarhitektuurilised andmete proovivõtud), Spectre ja Meltdown. Uued rünnakud ei ole siiski kaitstud olemasolevate Meltdowni, Spectre'i, MDS-i ja muude sarnaste rünnakute kaitsemeetoditega. Efektiivseks kaitseks LVI eest on vajalikud muudatused CPU-s. Tarkvara lahenduste korraldamine, lisades kompilaatori poolt LFENCE käsku pärast iga mälu laadimisoperatsiooni ning asendades RET käsu POP, LFENCE ja JMP käskudega, toob endaga kaasa liiga suured ülejäägid — teadlaste hinnangul vähendab täielik tarkvaraline kaitse jõudlust 2-19 korda.

Osaliselt, probleemide blokeerimise raskust kompenseerib see, et praegu on rünnak rohkem teoreetiline kui praktiline (rünnak on teoreetiliselt võimalik, kuid väga keeruline ellu viia ja reprodutseeritav ainult sünteetilistes testides).
Intel omistas probleemile mõõduka ohu taseme (5,6 skaalal 10) ja välja andnud firmaregi värskendamise ja SDK SGX keskkonnas, kus püüti rünnakut ringi minna blokeerida. Pakutud rünnakumeetodid kehtivad praegu ainult Intel'i protsessoritele, kuid LVI kohandamise võimalus muudele protsessoritele, mille suhtes kehtivad Meltdown rünnakud, ei ole välistatud.

Probleemi tuvastas aprillis eelmise aasta uurija Jo Van Bulck Leuven'i ülikoolist, seejärel töötasid koos 9 uurijaga teistest ülikoolidest välja viis põhimõttelist rünnakumeetodit, millest igaühel on võimalus eksisteerida spetsiifilisemate variantide. Iseseisvalt tuvastasid veebruaris selle aasta uurijad ettevõttest Bitdefender ka leidnud üks rünnakuvõimalus LVI ja teavitati sellest Intelit. Rünnakuvõimalused erinevad erinevate mikroarhitektuuriliste struktuuride kasutamise järgi, nagu salvestusbuffer (SB, Store Buffer), tüübi täitmise buffer (LFB, Line Fill Buffer), konteksti vahetuse buffer FPU ja esimese taseme vahemälu (L1D), mida on varem kasutatud sellistes rünnakutes nagu ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow ja Meltdown.

LVI - uus rünnakute klass spekulatiivse täitmise mehhanismile CPU-s

Peamine erinevus LVI ja MDS rünnakute vahel on see, et MDS manipuleerib mikroarhitektuuriliste struktuuride sisu määratlemisega, mis jäävad vahemälusse pärast spekulatiivset töötlemist vigade (fault) või laadimise ja salvestamise operatsioonide ajal, samas kui
LVI rünnakud võimaldavad sissetungijatel asendada andmeid mikroarhitektuurilistes struktuurides, et mõjutada järgmiste rünnakute spekulatiivset koodi täitmist ohvri poolt. Nende manipuleerimiste abil saab sissetungija välja võtta kinnipeetud andmed teiste protsesside andmestruktuuridest, kui teatud kood joonealusel CPU tuumal.

LVI - uus rünnakute klass spekulatiivse täitmise mehhanismile CPU-s

Kuna probleemi ära kasutamisel ohvri protsessi koodis peavad olema spetsiaalsed koodijärjestused (vidinad), kuhu laaditakse ründaja kontrollitud väärtus, ja selle väärtuse laadimine toob kaasa erandeid (fault, abort või assist), mis viskavad tulemuse välja ja kordavad käsku. Erandi töötlemise ajal tekib spekulatiivne aken, mille jooksul lekib vidinas töödeldud andmed. Eelkõige hakkab protsessor spekulatiivsetes tingimustes käitama koodilõiku (vidinat), seejärel määrab, et eeldus ei õigustanud end ja tagastab toimingud algsesse olekusse, kuid spekulatiivse täitmise käigus töödeldud andmed jäävad L1D vahemälu ja mikroarhitektuuri puhverdamisse ning on kergesti kätte saadavad tuntud jääkandmete määramise meetodite kaudu kõrvalkanalite kaudu.

Erand «assist», erinevalt «fault»'ist, töödeldakse protsessoris ilma tarkvarapersonalide kutsumiseta. Assist võib tekkida näiteks siis, kui on vajalik värskendada A (Accessed) või D (Dirty) bitti mälu lehtede tabelis. Peamine väljakutse teistele protsessidele rünnaku korraldamisel seisneb selles, kuidas algatada assist'i tekkimist, manipuleerides ohvri protsessiga. Praegu ei eksisteeri usaldusväärseid viise selle tegemiseks, kuid tulevikus nende leidmine ei ole välistatud. Rünnaku võimaluse kinnitab seni vaid Intel SGX'e enklaavid, teised stsenaariumid on teoreetilised või reprodutseeritavad sünteetilistes tingimustes (koodis tuleb lisada teatud gadget'e).

LVI - uus rünnakute klass spekulatiivse täitmise mehhanismile CPU-s

LVI - uus rünnakute klass spekulatiivse täitmise mehhanismile CPU-s

Võimalikud rünnaku vektori:

  • Andmeleke tuum struktuuridest kasutaja taseme protsessidesse. Linuxi tuumas olemasolev kaitse Spectre 1 rünnakute vastu ning SMAP (Supervisor Mode Access Prevention) kaitsemehhanism vähendavad oluliselt LVI rünnaku tõenäosust. Tulevikus võib osutuda vajalikuks tuuma täiendav kaitse, kui tulevikus avastatakse lihtsamaid LVI rünnaku viise.
  • Andmete leke erinevate protsesside vahel. Rünnaku teostamiseks on vajalik teatud koodifragmente rakenduses ja erandi genereerimise meetodi määratlemine sihtprotsessis.
  • Andmete leke host-keskkonnast külalisüsteemi. Rünnak on klassifitseeritud liiga keeruliseks, vajades mitmesuguste keeruliste sammude ja süsteemi aktiivsuse ennustamise rakendamist.
  • Andmete leke protsesside vahel erinevates külalisüsteemides. Rünnaku vektor on sarnane andmete lekke korraldamisele erinevate protsesside vahel, kuid lisaks nõuab see keerukate manipulatsioonide teostamist külalisüsteemide vahelise isoleerimise ületamiseks.

Uurijad on avaldanud mitu prototüüpe rünnaku läbiviimise põhimõtete demonstreerimiseks, kuid need ei ole veel reaalseid rünnakuid teostamiseks sobivad. Esimene näide võimaldab suunata spekulatiivset koodi täitmist ohvri protsessis sarnaselt tagasivaatleva programmeerimisega (ROP, Return-Oriented Programming). Selles näites on ohvriks spetsiaalselt ette valmistatud protsess, mis sisaldab vajalikke seadmeid (rünnaku rakendamine reaalsele kolmanda osapoole protsessile on keeruline). Teine näide võimaldab sekkuda arvutustesse AES-i krüpteerimise ajal Intel SGX-i anklavis ja korraldada andmeleke spekulatiivsete käskude täitmise ajal, et taastada kasutatava krüpteerimisvõtme väärtus.


Vaata videot

Allikas: opennet.ru

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