LVI on uus protsessori spekulatiivse täitmismehhanismi rünnakute klass

avalikustatud teavet uue rünnakuklassi kohta LVI (laadimisväärtuse süstimine, CVE-2020-0551) Inteli protsessorite spekulatiivse täitmismehhanismi kohta, mida saab kasutada võtmete ja salaandmete lekitamiseks Intel SGX enklaavidest ja muudest protsessidest.

Uus rünnakute klass põhineb manipuleerimisel samade mikroarhitektuursete struktuuridega, mida kasutatakse rünnakutes MDS (Mikroarhitektuuriandmete proovivõtt), Spectre ja Meltdown. Samal ajal ei blokeeri uusi rünnakuid olemasolevad kaitsemeetodid Meltdowni, Spectre, MDS ja muude sarnaste rünnakute eest. Tõhus LVI kaitse nõuab protsessori riistvara muutmist. Kaitse programmiliselt korraldamisel, lisades pärast iga mälust laadimistoimingut kompilaatori poolt LFENCE käsu ja asendades RET käsu POP, LFENCE ja JMP-ga, salvestatakse liiga palju üldkulusid - teadlaste sõnul toob täielik tarkvarakaitse kaasa jõudlus 2-19 korda.

Osa raskusi probleemi blokeerimisel kompenseerib asjaolu, et rünnak on hetkel pigem teoreetiline kui praktiline (rünnak on teoreetiliselt võimalik, kuid väga raskesti teostatav ja reprodutseeritav vaid sünteetilistes testides).
Intel omastatud probleem on mõõduka ohutasemega (5.6 10-st) ja vabastati püsivara ja SDK värskendamine SGX-keskkonna jaoks, milles see üritas rünnakut tõkestada, kasutades selleks lahendust. Kavandatud ründemeetodid on praegu rakendatavad ainult Inteli protsessoritele, kuid ei saa välistada võimalust kohandada LVI-d teistele protsessoritele, mille puhul on rakendatavad Meltdown-klassi rünnakud.

Probleemi tuvastas mullu aprillis Leuveni ülikooli teadlane Jo Van Bulck, misjärel töötati 9 teiste ülikoolide teadlase osalusel välja viis põhilist ründemeetodit, millest igaüks võimaldab eksisteerida spetsiifilisemaid ründemeetodeid. valikud. Sõltumatult selle aasta veebruaris ka Bitdefenderi teadlased avastatud üks LVI ründevariantidest ja teatas sellest Intelile. Rünnakuvariandid eristuvad erinevate mikroarhitektuursete struktuuride kasutamise poolest, nagu varem kasutatud salvestuspuhver (SB, Store Buffer), täitepuhver (LFB, Line Fill Buffer), FPU kontekstilüliti puhver ja esimese taseme vahemälu (L1D). rünnakutes nagu ZombieLoad, RIDL, Radioaktiivne tolm, LazyFP, Eelvaade и Meltdown.

LVI on uus protsessori spekulatiivse täitmismehhanismi rünnakute klass

Peamine autasud MDS-rünnakute vastane LVI seisneb selles, et MDS manipuleerib vahemällu jäävate mikroarhitektuuristruktuuride sisu määratlemisega pärast spekulatiivset erandite käsitlemist (tõrge) või laadimis- ja salvestamisoperatsioone.
LVI rünnakud võimaldavad sisestada ründaja andmed mikroarhitektuuristruktuuridesse, et mõjutada ohvri koodi hilisemat spekulatiivset täitmist. Neid manipuleerimisi kasutades saab ründaja siht-CPU tuumas teatud koodi käivitamisel eraldada privaatsete andmestruktuuride sisu teistes protsessides.

LVI on uus protsessori spekulatiivse täitmismehhanismi rünnakute klass

eest ekspluateerimise probleem ohvriprotsessi koodis peaks kohtuma spetsiaalsed koodijadad (vidinad), millesse laaditakse ründaja juhitud väärtus ja selle väärtuse laadimine põhjustab erandite (viga, katkestamine või abi) loopimise, tulemusest loobumise ja käsu uuesti täitmise. Erandi töötlemisel ilmub spekulatiivne aken, mille käigus vidinas töödeldud andmed lekivad. Eelkõige hakkab protsessor täitma koodijuppi (vidinat) spekulatiivses režiimis, seejärel teeb kindlaks, et ennustus ei olnud põhjendatud ja veereb toimingud tagasi algsesse olekusse, kuid spekulatiivse täitmise käigus töödeldud andmed salvestatakse L1D vahemällu. ja mikroarhitektuursed puhvrid ning on saadaval nendest väljavõtmiseks, kasutades tuntud meetodeid jääkandmete määramiseks kolmandate osapoolte kanalite kaudu.

"Abi" erandit, erinevalt "vea" erandist, käsitleb protsessor sisemiselt, ilma tarkvaratöötlejaid kutsumata. Abi võib ilmneda näiteks siis, kui mälulehe tabelis olevat bitti A (juurdepääs) või D (määrdunud) on vaja värskendada. Peamine raskus teiste protsesside vastu suunatud ründe sooritamisel on see, kuidas algatada abi andmine, manipuleerides ohvriprotsessiga. Praegu pole selleks usaldusväärseid viise, kuid on võimalik, et tulevikus neid leitakse. Rünnaku teostamise võimalus on seni kinnitust leidnud vaid Intel SGX enklaavide puhul, muud stsenaariumid on teoreetilised või sünteetilistes tingimustes reprodutseeritavad (nõuab koodile teatud vidinate lisamist)

LVI on uus protsessori spekulatiivse täitmismehhanismi rünnakute klass

LVI on uus protsessori spekulatiivse täitmismehhanismi rünnakute klass

Võimalikud rünnakuvektorid:

  • Andmete leke kerneli struktuuridest kasutajatasandi protsessi. Linuxi kerneli kaitse Spectre 1 rünnakute eest, samuti SMAP (Supervisor Mode Access Prevention) kaitsemehhanism vähendavad oluliselt LVI rünnaku tõenäosust. Kernelile täiendava kaitse lisamine võib osutuda vajalikuks, kui tulevikus tuvastatakse lihtsamad LVI ründemeetodid.
  • Andmete lekkimine erinevate protsesside vahel. Rünnak nõuab teatud koodijuppide olemasolu rakenduses ja meetodi määratlemist sihtprotsessis erandi tegemiseks.
  • Andmete lekkimine hostkeskkonnast külalissüsteemi. Rünnak on klassifitseeritud liiga keeruliseks, mis nõuab erinevaid raskesti teostatavaid samme ja aktiivsuse ennustamist süsteemis.
  • Andmeleke protsesside vahel erinevates külalissüsteemides. Ründevektor on lähedane andmelekete korraldamisele erinevate protsesside vahel, kuid nõuab lisaks keerukaid manipuleerimisi, et külalissüsteemide vahelisest isolatsioonist mööda minna.

Teadlaste poolt välja antud mõned prototüübid rünnaku läbiviimise põhimõtete demonstratsiooniga, kuid päris rünnakute läbiviimiseks need veel ei sobi. Esimene näide võimaldab teil ohvriprotsessis spekulatiivse koodi täitmist ümber suunata, sarnaselt tagastamisele orienteeritud programmeerimisega (ROP,Tagasisuunatud programmeerimine). Selles näites on ohver spetsiaalselt ettevalmistatud protsess, mis sisaldab vajalikke vidinaid (ründe rakendamine reaalsetele kolmandate osapoolte protsessidele on keeruline). Teine näide võimaldab meil kiiluda arvutustesse AES-krüptimise ajal Intel SGX enklaavis ja korraldada andmelekke käskude spekulatiivse täitmise ajal, et taastada krüptimiseks kasutatud võtme väärtus.


Allikas: opennet.ru

Lisa kommentaar