Plundervolt on uusi hyökkäysmenetelmä Intel-prosessoreihin, joka vaikuttaa SGX-tekniikkaan

Intel julkaisi mikrokoodipäivitys, joka korjaa haavoittuvuus (CVE-2019-14607) sallimalla manipuloimalla prosessorin dynaamista jännitteen ja taajuuden ohjausmekanismia, vahingoittaa tietosolujen sisältöä, myös alueilla, joita käytetään laskelmissa eristettyissä Intel SGX -alueissa. Hyökkäys on nimeltään Plundervolt, ja sen avulla paikallinen käyttäjä voi mahdollisesti laajentaa oikeuksiaan järjestelmässä, aiheuttaa palveluneston ja päästä käsiksi arkaluontoisiin tietoihin.

Hyökkäys on vaarallinen vain SGX-enklaavien laskelmien manipuloinnin yhteydessä, koska se vaatii järjestelmän pääkäyttäjän oikeudet. Yksinkertaisimmassa tapauksessa hyökkääjä voi vääristää erillisalueella käsiteltyä tietoa, mutta monimutkaisemmissa skenaarioissa on mahdollista rekonstruoida salaukseen käytetyt erillisalueelle tallennetut yksityiset avaimet RSA-CRT- ja AES-NI-algoritmeilla. Tekniikkaa voidaan käyttää myös virheiden generoimiseen alun perin oikeissa algoritmeissa haavoittuvuuksien provosoimiseksi muistin kanssa työskenneltäessä, esimerkiksi organisoitaessa pääsyä varatun puskurin rajojen ulkopuolelle.
Prototyyppikoodi hyökkäyksen suorittamiseen julkaistu GitHubissa

Menetelmän ydin on luoda olosuhteet odottamattomien tietojen vioittumiselle SGX:n laskelmissa, joilta salauksen ja muistin todennuksen käyttö enklaavissa ei suojaa. Vääristymisen käyttöönottamiseksi kävi ilmi, että taajuuden ja jännitteen ohjaamiseen oli mahdollista käyttää standardiohjelmistoliittymiä, joita yleensä käytetään vähentämään virrankulutusta järjestelmän lepotilan aikana ja aktivoimaan maksimaalisen suorituskyvyn intensiivisen työn aikana. Taajuus- ja jänniteominaisuudet kattavat koko sirun, mukaan lukien eristetyn erillisalueen laskennan vaikutus.

Jännitettä muuttamalla voidaan luoda olosuhteet, joissa lataus ei riitä palauttamaan muistisolua CPU:n sisällä, vaan sen arvo muuttuu. Keskeinen ero hyökkäykseen RiviHammer on, että RowHammer mahdollistaa yksittäisten bittien sisällön muuttamisen DRAM-muistissa lukemalla tietoja syklisesti naapurisoluista, kun taas Plundervolt mahdollistaa bittien vaihtamisen CPU:n sisällä, kun tiedot on jo ladattu muistista laskentaa varten. Tämän ominaisuuden avulla voit ohittaa SGX:ssä käytettävät eheysvalvonta- ja salausmekanismit muistiin tallennetuille tiedoille, koska muistissa olevat arvot pysyvät oikeina, mutta ne voivat vääristyä niiden kanssa käytettäessä ennen kuin tulos kirjoitetaan muistiin.

Jos tätä muutettua arvoa käytetään salausprosessin kertolaskuprosessissa, tulos hylätään väärällä salatekstillä. Koska hyökkääjä voi ottaa yhteyttä SGX:n käsittelijään tietojen salaamiseksi, hän voi virheitä aiheuttaen kerätä tilastoja tulosteen salatekstin muutoksista ja palauttaa muutamassa minuutissa erillisalueeseen tallennetun avaimen arvon. Alkuperäinen syöttöteksti ja oikea lähdön salateksti tunnetaan, avain ei muutu ja väärän salatekstin tuloste osoittaa, että jokin bitti on vääristynyt vastakkaiseen arvoon.

Analysoituaan erilaisten vikojen aikana kertyneet oikeiden ja vioittuneiden salatekstien arvoparit käyttämällä differentiaalivirheanalyysin menetelmiä (DFA, Differentiaalivika-analyysi) Voi ennustaa symmetriseen AES-salaukseen käytetyt todennäköiset avaimet, ja sitten analysoimalla eri sarjojen avainten leikkauspisteet määritetään haluttu avain.

Ongelma vaikuttaa useisiin Intel-suorittimiin, mukaan lukien Intel Core -suorittimet, joissa on 6
10. sukupolvi sekä viides ja kuudes sukupolvi Xeon E3:sta, ensimmäinen ja toinen sukupolvi Intel Xeon Scalable, Xeon D,
Xeon W ja Xeon E.

Muistutetaan, että SGX-tekniikka (Software Guard -laajennukset) ilmestyi kuudennen sukupolven Intel Core -prosessoreissa (Skylake) ja tarjoukset joukko ohjeita, joiden avulla käyttäjätason sovellukset voivat allokoida suljettuja muistialueita - enklaaveja, joiden sisältöä ei voi lukea tai muokata edes ring0-, SMM- ja VMM-tiloissa toimiva ydin ja koodi. Ohjauksen siirtäminen erillisaluekoodiin on mahdotonta perinteisillä hyppytoiminnoilla ja rekistereillä ja pinolla tapahtuvaan käsittelyyn, ohjauksen siirtämiseen erillisalueelle käytetään erityisesti luotua uutta ohjetta, joka suorittaa auktoriteetin tarkistuksen. Tässä tapauksessa erillisalueeseen sijoitettu koodi voi käyttää klassisia kutsumenetelmiä enklaaven sisällä olevien toimintojen saamiseksi ja erityisohjeita ulkoisten toimintojen kutsumiseen. Enclave-muistin salausta käytetään suojaamaan laitteistohyökkäyksiltä, ​​kuten yhteyden muodostamiselta DRAM-moduuliin.

Lähde: opennet.ru

Lisää kommentti