LVI on uusi hyökkäystyyppi CPU:n spekulatiivista suoritusmekanismia vastaan

Julkaistu tietoa uudesta hyökkäysluokasta LVI (latausarvon injektio, CVE-2020-0551) Intel-suorittimien spekulatiivisesta suoritusmekanismista, jota voidaan käyttää avainten ja salaisten tietojen vuotamiseen Intel SGX -enklaaveista ja muista prosesseista.

Uusi hyökkäysluokka perustuu hyökkäyksissä käytettyjen samojen mikroarkkitehtonisten rakenteiden manipulointiin MDS (Mikroarkkitehtuuritietojen otos), Spectre ja sulaminen. Samaan aikaan olemassa olevat suojausmenetelmät eivät estä uusia hyökkäyksiä Meltdown-, Spectre-, MDS- ja muita vastaavia hyökkäyksiä vastaan. Tehokas LVI-suojaus vaatii laitteistomuutoksia suorittimeen. Kun suojaus järjestetään ohjelmallisesti, lisäämällä kääntäjän LFENCE-käsky jokaisen lataustoiminnon jälkeen muistista ja korvaamalla RET-käsky POP:lla, LFENCE:llä ja JMP:llä, tallennetaan liikaa ylimääräisiä kustannuksia - tutkijoiden mukaan täydellinen ohjelmistosuojaus johtaa suorituskyky 2-19 kertaa.

Osa ongelman estämisen vaikeudesta korvataan sillä, että hyökkäys on tällä hetkellä enemmän teoreettinen kuin käytännöllinen (hyökkäys on teoriassa mahdollinen, mutta erittäin vaikea toteuttaa ja toistettava vain synteettisissä testeissä).
Intel anastettu ongelman vaarataso on kohtalainen (5.6/10) ja julkaisi laiteohjelmiston ja SDK:n päivittäminen SGX-ympäristöä varten, jossa se yritti estää hyökkäyksen kiertotavan avulla. Ehdotetut hyökkäysmenetelmät ovat tällä hetkellä sovellettavissa vain Intel-prosessoreihin, mutta ei voida sulkea pois mahdollisuutta sovittaa LVI muihin prosessoreihin, joihin Meltdown-luokan hyökkäyksiä voidaan soveltaa.

Ongelman tunnisti viime huhtikuussa Leuvenin yliopiston tutkija Jo Van Bulck, minkä jälkeen yhdeksän muiden yliopistojen tutkijan osallistuessa kehitettiin viisi perushyökkäysmenetelmää, joista jokainen mahdollistaa tarkemman olemassaolon. vaihtoehdot. Itsenäisesti tämän vuoden helmikuussa myös Bitdefenderin tutkijat löydetty yksi LVI-hyökkäysversioista ja ilmoitti siitä Intelille. Hyökkäysversiot erottuvat erilaisten mikroarkkitehtuurirakenteiden käytöllä, kuten aiemmin käytetty tallennuspuskuri (SB, Store Buffer), täyttöpuskuri (LFB, Line Fill Buffer), FPU-kontekstikytkinpuskuri ja ensimmäisen tason välimuisti (L1D). hyökkäyksissä, kuten ZombieLoad, RIDL, Laskeuma, LazyFP, enteillä и Sulaminen.

LVI on uusi hyökkäystyyppi CPU:n spekulatiivista suoritusmekanismia vastaan

Tärkein kunnianosoitukset LVI MDS-hyökkäyksiä vastaan ​​on se, että MDS manipuloi välimuistiin jääneiden mikroarkkitehtonisten rakenteiden sisällön määrittämistä spekulatiivisen viankäsittelyn tai lataus- ja tallennustoimintojen jälkeen.
LVI-hyökkäykset mahdollistavat hyökkääjän tietojen lisäämisen mikroarkkitehtuurirakenteisiin vaikuttamaan myöhempään uhrin koodin spekulatiiviseen suorittamiseen. Näitä manipulaatioita käyttämällä hyökkääjä voi poimia yksityisten tietorakenteiden sisällön muissa prosesseissa suorittaessaan tiettyä koodia kohdesuorittimen ytimessä.

LVI on uusi hyökkäystyyppi CPU:n spekulatiivista suoritusmekanismia vastaan

varten hyväksikäyttöongelma uhriprosessin koodissa pitäisi tavata erityisiä koodisarjoja (gadgeteja), joissa hyökkääjän ohjaama arvo ladataan, ja tämän arvon lataaminen aiheuttaa poikkeuksia (vika, keskeytys tai apu), jolloin tulos hylätään ja käsky suoritetaan uudelleen. Kun poikkeus käsitellään, näkyviin tulee spekulatiivinen ikkuna, jonka aikana gadgetissa käsitellyt tiedot vuotavat. Erityisesti prosessori alkaa suorittaa koodinpalaa (gadgetia) spekulatiivisessa tilassa, määrittää sitten, että ennustus ei ollut perusteltu ja palauttaa toiminnot alkuperäiseen tilaan, mutta spekulatiivisen suorituksen aikana käsitellyt tiedot tallennetaan L1D-välimuistiin. ja mikroarkkitehtuuripuskurit ja on saatavilla niistä haettavaksi tunnetuilla menetelmillä jäännösdatan määrittämiseksi kolmannen osapuolen kanavien kautta.

"Assist"-poikkeus, toisin kuin "vika"-poikkeus, käsitellään prosessorin sisällä ilman ohjelmistokäsittelijöiden kutsumista. Apua voi esiintyä esimerkiksi silloin, kun muistisivutaulukon A (Accessed) tai D (Dirty) -bitti on päivitettävä. Suurin vaikeus muita prosesseja vastaan ​​tehdyssä hyökkäyksessä on se, miten avun saaminen käynnistetään manipuloimalla uhriprosessia. Tällä hetkellä ei ole luotettavia tapoja tehdä tämä, mutta on mahdollista, että niitä löytyy tulevaisuudessa. Hyökkäyksen mahdollisuus on toistaiseksi vahvistettu vain Intel SGX -enklaaveille, muut skenaariot ovat teoreettisia tai synteettisissä olosuhteissa toistettavissa (vaatii tiettyjen gadgetien lisäämisen koodiin)

LVI on uusi hyökkäystyyppi CPU:n spekulatiivista suoritusmekanismia vastaan

LVI on uusi hyökkäystyyppi CPU:n spekulatiivista suoritusmekanismia vastaan

Mahdolliset hyökkäysvektorit:

  • Tietovuoto ytimen rakenteista käyttäjätason prosessiin. Linux-ytimen suojaus Spectre 1 -hyökkäyksiä vastaan ​​sekä SMAP (Supervisor Mode Access Prevention) -suojausmekanismi vähentävät merkittävästi LVI-hyökkäyksen todennäköisyyttä. Lisäsuojauksen lisääminen ytimeen saattaa olla tarpeen, jos tulevaisuudessa löydetään yksinkertaisempia LVI-hyökkäysmenetelmiä.
  • Tietovuoto eri prosessien välillä. Hyökkäys edellyttää tiettyjen koodinpäiden läsnäoloa sovelluksessa ja menetelmän määrittelyä poikkeuksen tekemiseksi kohdeprosessissa.
  • Tietovuoto isäntäympäristöstä vierasjärjestelmään. Hyökkäys on luokiteltu liian monimutkaiseksi, ja se vaatii erilaisia ​​vaikeasti toteutettavia vaiheita ja ennusteita järjestelmän aktiivisuudesta.
  • Tietovuoto prosessien välillä eri vierasjärjestelmissä. Hyökkäysvektori on lähellä tietovuotojen järjestämistä eri prosessien välillä, mutta vaatii lisäksi monimutkaisia ​​manipulaatioita vierasjärjestelmien välisen eristyksen ohittamiseksi.

Julkaisijat tutkijat useat prototyyppejä hyökkäyksen toteuttamisen periaatteiden esittelyllä, mutta ne eivät vielä sovellu oikeiden hyökkäysten toteuttamiseen. Ensimmäisessä esimerkissä voit ohjata spekulatiivista koodin suorittamista uhriprosessissa, samalla tavalla kuin paluusuuntautunut ohjelmointi (ROP,Paluusuuntautunut ohjelmointi). Tässä esimerkissä uhri on erityisesti valmistettu prosessi, joka sisältää tarvittavat gadgetit (hyökkäyksen soveltaminen todellisiin kolmannen osapuolen prosesseihin on vaikeaa). Toinen esimerkki antaa meille mahdollisuuden häiritä laskelmia AES-salauksen aikana Intel SGX -enklaaven sisällä ja järjestää tietovuodon käskyjen spekulatiivisen suorittamisen aikana salaukseen käytetyn avaimen arvon palauttamiseksi.


Lähde: opennet.ru

Lisää kommentti