LVI yra nauja atakų klasė, nukreipta prieš spekuliacinį vykdymo mechanizmą CPU

Paskelbta informacija apie naują atakų klasę LVI (Įkrovos vertės įpurškimas, CVE-2020-0551) apie spekuliacinį vykdymo mechanizmą „Intel“ procesoriuose, kurie gali būti naudojami raktams ir slaptiems duomenims nutekėti iš „Intel SGX“ anklavų ir kitų procesų.

Nauja atakų klasė yra pagrįsta manipuliavimu tomis pačiomis mikroarchitektūrinėmis struktūromis, kurios naudojamos atakose MDS (Mikroarchitektūrinių duomenų atranka), Šmėkla ir suirimas. Tuo pačiu metu naujų atakų neblokuoja esami apsaugos nuo Meltdown, Spectre, MDS ir kitų panašių atakų metodai. Veiksmingai LVI apsaugai reikia pakeisti procesoriaus aparatinę įrangą. Organizuojant apsaugą programiškai, pridėjus LFENCE komandą kompiliatoriaus po kiekvienos įkėlimo operacijos iš atminties ir pakeitus RET nurodymą POP, LFENCE ir JMP, įrašoma per daug pridėtinių išlaidų – tyrėjų teigimu, visa programinės įrangos apsauga sumažės našumas 2-19 kartų.

Dalį sunkumų blokuojant problemą kompensuoja tai, kad ataka šiuo metu yra labiau teorinė nei praktinė (ataka teoriškai įmanoma, tačiau labai sunkiai įgyvendinama ir atkuriama tik sintetiniuose testuose).
Intel pasisavinta problema yra vidutinio pavojingumo lygio (5.6 iš 10) ir paleistas SGX aplinkos programinės įrangos ir SDK atnaujinimas, kuriame ji bandė blokuoti ataką naudodama problemos sprendimą. Siūlomi atakos metodai šiuo metu taikomi tik „Intel“ procesoriams, tačiau negalima atmesti galimybės LVI pritaikyti kitiems procesoriams, kuriems taikomos Meltdown klasės atakos.

Problemą pernai balandį nustatė mokslininkas Jo Van Bulckas iš Leuveno universiteto, po kurio, dalyvaujant 9 mokslininkams iš kitų universitetų, buvo sukurti penki pagrindiniai atakos metodai, kurių kiekvienas leidžia egzistuoti konkretesnius. parinktys. Nepriklausomai, šių metų vasarį, mokslininkai iš Bitdefender taip pat atrado vieną iš LVI atakos variantų ir pranešė apie tai Intel. Atakos variantai išsiskiria skirtingų mikroarchitektūrinių struktūrų, tokių kaip saugojimo buferis (SB, Store Buffer), užpildymo buferis (LFB, Line Fill Buffer), FPU kontekstinio jungiklio buferis ir pirmojo lygio talpyklos (L1D), naudojimu. išpuoliuose, pvz „ZombieLoad“, RIDL, Fallout, LazyFP, Pranašas и Eros pabaiga.

LVI yra nauja atakų klasė, nukreipta prieš spekuliacinį vykdymo mechanizmą CPU

Pagrindinis pagyrimu LVI prieš MDS atakas yra ta, kad MDS manipuliuoja mikroarchitektūrinių struktūrų, likusių talpykloje po spekuliatyvaus išimčių tvarkymo (gedimo) arba įkėlimo ir saugojimo operacijų, turinio apibrėžimu.
LVI atakos leidžia užpuoliko duomenis įterpti į mikroarchitektūrines struktūras ir taip paveikti tolesnį spekuliacinį aukos kodo vykdymą. Naudodamas šias manipuliacijas, užpuolikas gali išgauti privačių duomenų struktūrų turinį kituose procesuose, vykdydamas tam tikrą kodą tiksliniame procesoriaus branduolyje.

LVI yra nauja atakų klasė, nukreipta prieš spekuliacinį vykdymo mechanizmą CPU

išnaudojimo problema nukentėjusiojo proceso kodekse turėtų susitikti specialios kodo sekos (programėlės), kuriose įkeliama užpuoliko valdoma reikšmė, o įkėlus šią reikšmę, išmetamos išimtys (gedimas, nutraukimas arba pagalba), rezultatas atmetamas ir instrukcija vykdoma iš naujo. Kai apdorojama išimtis, pasirodo spekuliacinis langas, kurio metu nuteka programėlėje apdoroti duomenys. Visų pirma, procesorius pradeda vykdyti kodo dalį (įtaisą) spekuliaciniu režimu, tada nustato, kad numatymas nebuvo pagrįstas, ir grąžina operacijas į pradinę būseną, tačiau spekuliacinio vykdymo metu apdoroti duomenys yra saugomi L1D talpykloje. ir mikroarchitektūrinius buferius ir galima iš jų gauti naudojant žinomus metodus likutiniams duomenims nustatyti trečiųjų šalių kanalais.

„Pagalbos“ išimtį, skirtingai nei „gedimo“ išimtį, viduje tvarko procesorius, neiškviesdamas programinės įrangos tvarkytojų. Pagalba gali atsirasti, pavyzdžiui, kai reikia atnaujinti A (prieiga) arba D (nešvarus) bitą atminties puslapio lentelėje. Pagrindinis sunkumas atakuojant kitus procesus yra tai, kaip inicijuoti pagalbos atsiradimą manipuliuojant aukos procesu. Šiuo metu patikimų būdų tai padaryti nėra, tačiau gali būti, kad ateityje jų bus rasta. Atakos vykdymo galimybė kol kas patvirtinta tik Intel SGX anklavuose, kiti scenarijai yra teoriniai arba atkuriami sintetinėmis sąlygomis (reikia į kodą įtraukti tam tikras programėles)

LVI yra nauja atakų klasė, nukreipta prieš spekuliacinį vykdymo mechanizmą CPU

LVI yra nauja atakų klasė, nukreipta prieš spekuliacinį vykdymo mechanizmą CPU

Galimi atakos vektoriai:

  • Duomenų nutekėjimas iš branduolio struktūrų į vartotojo lygio procesą. Linux branduolio apsauga nuo Spectre 1 atakų, taip pat SMAP (Supervisor Mode Access Prevention) apsaugos mechanizmas žymiai sumažina LVI atakos tikimybę. Jei ateityje bus nustatyti paprastesni LVI atakos metodai, gali prireikti pridėti papildomą branduolio apsaugą.
  • Duomenų nutekėjimas tarp skirtingų procesų. Ataka reikalauja, kad programoje būtų tam tikros kodo dalys ir apibrėžiamas metodas, kaip taikyti išimtį tiksliniame procese.
  • Duomenų nutekėjimas iš priimančiosios aplinkos į svečio sistemą. Ataka klasifikuojama kaip per sudėtinga, reikalaujanti įvairių sunkiai įgyvendinamų žingsnių ir sistemos veiklos numatymo.
  • Duomenų nutekėjimas tarp procesų skirtingose ​​svečių sistemose. Atakos vektorius yra artimas duomenų nutekėjimo tarp skirtingų procesų organizavimui, tačiau papildomai reikalauja sudėtingų manipuliacijų, kad būtų išvengta atskirties tarp svečių sistemų.

Išleido mokslininkai šiek tiek prototipai su puolimo vykdymo principų demonstravimu, tačiau realiems išpuoliams vykdyti jie dar netinka. Pirmasis pavyzdys leidžia nukreipti spekuliacinio kodo vykdymą aukos procese, panašiai kaip į grąžinimą orientuotą programavimą (R.O.P.,Į sugrįžimą orientuotas programavimas). Šiame pavyzdyje auka yra specialiai paruoštas procesas, kuriame yra būtinos programėlės (ataką pritaikyti tikriems trečiųjų šalių procesams sunku). Antrasis pavyzdys leidžia mums įsitraukti į skaičiavimus AES šifravimo metu Intel SGX anklave ir suorganizuoti duomenų nutekėjimą spekuliacinio komandų vykdymo metu, siekiant atkurti šifravimui naudojamo rakto vertę.


Šaltinis: opennet.ru

Добавить комментарий