Intel mikrokoodipäivitys, joka korjaa (CVE-2019-14607) Manipuloimalla suorittimen dynaamista jännitteen ja taajuuden hallintamekanismia on mahdollista vioittaa datasolujen sisältöä, mukaan lukien eristyksissä olevien Intel SGX -alueiden laskennassa käytettyjä alueita. Plundervoltiksi kutsuttu hyökkäys voi mahdollisesti antaa paikalliselle käyttäjälle mahdollisuuden laajentaa oikeuksiaan, aiheuttaa palvelunestohyökkäyksen ja saada pääsyn arkaluonteisiin 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 vioittaa enklaavissa käsiteltyjä tietoja, mutta monimutkaisemmissa tilanteissa on mahdollista rekonstruoida enklaaviin tallennetut yksityiset avaimet, joita käytetään salaukseen RSA-CRT- ja AES-NI-algoritmeilla. Tekniikkaa voidaan käyttää myös virheiden luomiseen alun perin oikeissa algoritmeissa muistihaavoittuvuuksien laukaisemiseksi esimerkiksi käyttämällä rajojen ulkopuolista puskuria.
Hyökkäyksen prototyyppikoodi GitHubissa
Menetelmässä luodaan olosuhteet odottamattomalle datan korruptoitumiselle SGX-laskennan aikana, joita enklaavissa ei ole suojattu salauksella ja muistin todennuksella. Käy ilmi, että korruptio voidaan aiheuttaa käyttämällä taajuuden ja jännitteen säätöön tarkoitettuja standardoituja ohjelmistoliittymiä, joita tyypillisesti käytetään vähentämään virrankulutusta järjestelmän lepotilassa ja aktivoimaan maksimaalinen suorituskyky intensiivisten työkuormien aikana. Taajuus- ja jänniteominaisuudet kattavat koko sirun, mukaan lukien erillisessä enklaavissa suoritettavat laskennat.
Jännitettä muuttamalla on mahdollista luoda olosuhteet, joissa varaus ei riitä CPU:n sisällä olevan muistisolun regeneroimiseksi, ja sen arvo muuttuu. Keskeinen ero hyökkäykseen verrattuna RowHammer muuttaa yksittäisten bittien sisältöä DRAM-muistissa lukemalla syklisesti tietoja vierekkäisistä soluista, kun taas Plundervolt muuttaa bittejä suorittimen sisällä sen jälkeen, kun tiedot on jo ladattu muistista laskentaa varten. Tämä ominaisuus ohittaa SGX-muistissa käytetyt eheys- ja salausmekanismit, koska muistissa olevat arvot pysyvät voimassa, mutta ne voivat vääristyä niille suoritettujen toimintojen seurauksena ennen tuloksen kirjoittamista muistiin.
Jos tätä muokattua arvoa käytetään kertolaskuprosessissa salauksen aikana, tuloste on virheellinen salausteksti. Käyttämällä SGX-käsittelijää tietojensa salaamiseksi hyökkääjä voi aiheuttaa virheitä, kerätä tilastoja tulostetun salaustekstin muutoksista ja palauttaa enklaaviin tallennetun avaimen arvon muutamassa minuutissa. Alkuperäinen syöte ja oikea tulostettu salausteksti tunnetaan, avain on muuttumaton ja virheellisen salaustekstin tuloste osoittaa, että bitti on korruptoitunut vastakkaiseen arvoon.
Analysoituaan eri vikojen aikana kertyneiden oikeiden ja vääristyneiden salaustekstien arvopareja differentiaalisen vika-analyysin (DFA) menetelmillä, ) Voi todennäköiset AES-symmetriseen salaukseen käytetyt avaimet ja sitten analysoimalla eri avainjoukkojen avainten leikkauspisteitä määritetään haluttu avain.

Ongelma vaikuttaa useisiin Intel-prosessorien malleihin, mukaan lukien Intel Core CPU 6 ...
10. sukupolvi sekä viides ja kuudes sukupolvi Xeon E3, ensimmäisen ja toisen sukupolven Intel Xeon Scalable, Xeon D,
Xeon W ja Xeon E.
Muistutamme, että SGX-teknologia () ilmestyi kuudennen sukupolven Intel Core -prosessoreissa (Skylake) ja Sarja käskyjä, joiden avulla käyttäjätason sovellukset voivat varata yksityisiä muistialueita – enklaaveja – joiden sisältöä ei voi lukea tai muokata edes ydin ja ring0-, SMM- ja VMM-tiloissa suoritettava koodi. Ohjauksen siirtäminen enklaavin koodiin on mahdotonta perinteisillä hyppyfunktioilla ja rekisteri- ja pinoamismanipulaatioilla. Ohjauksen siirtämiseen enklaaviin käytetään erityisesti luotua uutta käskyä, joka suorittaa käyttöoikeuksien tarkistuksen. Enklaaviin sijoitettu koodi voi käyttää klassisia kutsumenetelmiä enklaavin sisäisten funktioiden käyttämiseen ja erityiskäskyä ulkoisten funktioiden kutsumiseen. Enklaavin muistisalausta käytetään suojautumiseen laitteistohyökkäyksiltä, kuten DRAM-moduuliin yhdistämiseltä.
Lähde: opennet.ru
