Intel mikrokoodi värskendus, mis kõrvaldab (CVE-2019-14607), manipuleerimise kaudu CPU dünaamilise pingerežiimi ja sageduse juhtimise mehhanismi algatada andmelaudade sisu kahjustamise, sealhulgas aladel, mida kasutatakse arvutustes Intel SGX eraldatud enklaavides. Rünnakut nimetatakse Plundervoltiks ja see võimaldab potentsiaalselt kohalikel kasutajatel suurendada oma privileege süsteemis, põhjustada teenuse katkestusi ja pääseda ligi kinnistele andmetele.
Rünnak kujutab endast ohtu ainult siis, kui manipuleeritakse SGX-kohandustes tehtud arvutustega, kuna selleks on vajalik süsteemis root-õiguste olemasolu. Lihtsaimal juhul võib ründaja tekitada moonutusi kohanduses töödeldavas teabes, kuid keerukamate stsenaariumide korral ei saa välistada säilitatud salajaste võtmete, mida kasutatakse RSA-CRT ja AES-NI krüpteerimise algoritmide kaudu, taastamise võimalust. Tehnikat saab kasutada ka algselt korrektsetes algoritmides vigade genereerimiseks, et provotseerida haavatavuste tekkimist mälu kasutamisel, näiteks eraldatud puuteala piire ületavate pöördumiste korral.
Rünnaku teostamise koodi prototüüp GitHub'is
Meetodi olemus seisneb tingimuste loomises, mis võimaldavad andmete ootamatute moonutuste tekkimist SGX-i arvutustes, mida ei kaitse mälu krüpteerimise ja autentimise rakendamine anklaavis. Moonutuste tekitamiseks osutus võimalikuks kasutada tavapäraseid programmiliideseid, mis reguleerivad sagedust ja pinget, mida tavaliselt kasutatakse süsteemi energia tarbimise vähendamiseks seismise ajal või maksimaalse soorituse aktiveerimiseks intensiivsete tööde ajal. Sageduse ja pingetase mõjutab kogu kiipi, sealhulgas mõjutab see arvutuste teostamist isoleeritud anklavas.
Pinget muutes on võimalik saavutada tingimusi, kus laad on ebapiisav CPU sees oleva mälu rakendi taastamiseks, mis muudab selle väärtust. Peamine erinevus rünnaku on RowHammer võimaldab muuta DRAM-mälu üksikute bittide sisu, lugedes andmeid tsükliliselt naaberrakkudest, samas kui Plundervolt võimaldab bitti muuta CPU-s, kui andmed on juba mälu laaditud arvutuste teostamiseks. See omadus võimaldab kõrvale hiilida SGX-is rakendatavatest andmete mälukontrolli ja krüpteerimise mehhanismidest, kuna mälus olevad väärtused jäävad korrektseks, kuid võivad nende töötluse käigus muutuda, enne kui tulemus mällu kirjutatakse.
Kui seda muudetud väärtust kasutatakse korrutamise protsessis krüpteerimise käigus, siis tulemuseks on vale šifreeritud tekst. Olles suuteline pöörduma SGX-i krüpteerimisteenuse poole oma andmete jaoks, võib ründaja, tekitades vigu, koguda statistikat šifreeritud teksti muutuste kohta väljundis ja mõne minutiga taastada anklaavist säilitatava võtme väärtuse. Sisendtekst ja korrektne šifreeritud tekst väljundis on teada, võtme väärtus ei muutu ning vale šifreeritud teksti tulemuseks on näit, et mõni bitt on muutunud vastupidiseks väärtuseks.
Analüüsides erinevate rikke korral kogunenud korrektsete ja moonutatud krüpteeritud tekstide paare, tehes erinevate rikeanalüüsi meetodeid (DFA, ) on võimalik tõenäolisi võti, mida kasutatakse AES-i sümmeetrilisel krüptimisel, ja seejärel, analüüsides võtmete lõikesid erinevates komplektides, määrata soovitud võti.

Probleem on seotud erinevate Intel'i protsessorimudelitega, sealhulgas 6.
kuni 10 põlvkond, samuti viienda ja kuuenda põlvkonna Xeon E3, esimese ja teise põlvkonna Intel Xeon Scalable, Xeon D,
Xeon W ja Xeon E.
Tuletame meelde, et SGX tehnoloogia () ilmus Intel Core'i kuuenda põlvkonna protsessorites (Skylake) ja seeria juhiseid, mis võimaldavad rakendustel eraldada kasutaja tasemel suletud mälualad - enklaavid, mille sisu ei saa lugeda ega muuta isegi tuuma ja koodi poolt, mis töötab ring0, SMM ja VMM režiimides. Enklaavi koodile juhtimise üleandmine traditsiooniliste ülemineku funktsioonide ja registrite ning virnaga manipuleerimise abil ei õnnestu - juhtimise üleandmiseks enklaavi kasutatakse spetsiaalselt loodud uut käsku, mis teostab volituste kontrolli. Samas võib enklaavis olev kood kasutada klassikalisi meetodeid funktsioonide kõnetamiseks enklaavis sees ning spetsiaalset käsku välistesse funktsioonidesse pöördumiseks. Riistvara rünnakute, nagu DRAM mooduli ühendamine, kaitsmiseks kasutatakse enklaavi mälu krüpteerimist.
Allikas: opennet.ru
