Plundervolt on uus ründemeetod Inteli protsessoritele, mis mõjutab SGX-tehnoloogiat

Intel vabastati mikrokoodi värskendus, mis parandab haavatavus (CVE-2019-14607) lubades CPU dünaamilise pinge ja sageduse juhtimismehhanismi manipuleerimise kaudu kahjustada andmerakkude sisu, sealhulgas piirkondades, mida kasutatakse arvutusteks eraldatud Intel SGX enklaavides. Rünnakut nimetatakse Plundervoltiks ja see võimaldab kohalikul kasutajal oma privileege süsteemis suurendada, teenuse keelamist ja juurdepääsu tundlikele andmetele.

Rünnak on ohtlik ainult SGX enklaavide arvutustega manipuleerimise kontekstis, kuna selle teostamiseks on vaja süsteemi juurõigusi. Lihtsamal juhul võib ründaja saavutada enklaavis töödeldava teabe moonutamise, kuid keerulisemate stsenaariumide korral ei ole krüptimiseks kasutatud enklaavis salvestatud privaatvõtmete taasloomise võimalus RSA-CRT ja AES-NI algoritmide abil võimatu. välistatud. Seda tehnikat saab kasutada ka vigade genereerimiseks algselt õigetes algoritmides, et tekitada turvaauke mäluga töötamisel, näiteks korraldada juurdepääsu eraldatud puhvri piiridest väljapoole jäävale alale.
Prototüübi kood rünnaku sooritamiseks avaldatud GitHubis

Meetodi olemus on luua tingimused SGX-i arvutuste ajal ootamatute andmekahjustuste tekkeks, mille eest krüptimise ja mälu autentimise kasutamine enklaavis ei kaitse. Moonutuste sisseviimiseks selgus, et sageduse ja pinge juhtimiseks on võimalik kasutada standardseid tarkvaraliideseid, mida tavaliselt kasutatakse energiatarbimise vähendamiseks süsteemi jõudeajal ja maksimaalse jõudluse aktiveerimiseks intensiivse töö ajal. Sagedus- ja pingeomadused hõlmavad kogu kiipi, sealhulgas isoleeritud enklaavis arvutamise mõju.

Pinge muutmisega saate luua tingimused, mille korral laetusest ei piisa protsessori sees oleva mäluelemendi taastamiseks ja selle väärtus muutub. Peamine erinevus rünnakust RowHammer seisneb selles, et RowHammer võimaldab muuta DRAM-mälus üksikute bittide sisu, lugedes tsükliliselt andmeid naaberrakkudest, samas kui Plundervolt võimaldab teil protsessori sees bitte muuta, kui andmed on arvutamiseks juba mälust laaditud. See funktsioon võimaldab teil SGX-is mälus olevate andmete terviklikkuse kontrolli ja krüpteerimismehhanisme mööda minna, kuna mälus olevad väärtused jäävad õigeks, kuid võivad enne tulemuse mällu kirjutamist nendega tehes moonduda.

Kui seda muudetud väärtust kasutatakse krüpteerimisprotsessi korrutamisprotsessis, lükatakse väljund vale šifritekstiga tagasi. Kuna ründajal on võimalus oma andmete krüptimiseks ühendust võtta SGX-i töötlejaga, võib ründaja tõrkeid põhjustades koguda statistikat väljundi šifriteksti muutuste kohta ja mõne minutiga taastada enklaavis salvestatud võtme väärtuse. Algne sisendtekst ja õige väljundi šifrtekst on teada, võti ei muutu ja vale šifriteksti väljund näitab, et mingi bitt on moonutatud vastupidise väärtuseni.

Olles analüüsinud erinevate rikete ajal kogunenud õigete ja rikutud šifritekstide väärtuspaare, kasutades diferentsiaaltõrgete analüüsi meetodeid (DFA, Diferentsiaalvea analüüs) Saab ennustada AES sümmeetriliseks krüptimiseks kasutatavad tõenäolised võtmed ja seejärel, analüüsides erinevates komplektides võtmete ristumiskohti, määrake soovitud võti.

Probleem mõjutab mitmesuguseid Inteli protsessorite mudeleid, sealhulgas 6-ga Intel Core CPU-sid
10. põlvkond, samuti Xeon E3 viies ja kuues põlvkond, Intel Xeon Scalable, Xeon D esimene ja teine ​​põlvkond,
Xeon W ja Xeon E.

Tuletame meelde, et SGX tehnoloogia (Tarkvarakaitse laiendused) ilmus kuuenda põlvkonna Intel Core protsessorites (Skylake) ja pakub rida juhiseid, mis võimaldavad kasutajataseme rakendustel eraldada suletud mälualasid – enklaave, mille sisu ei saa lugeda ega muuta isegi ring0, SMM ja VMM režiimides töötava kerneli ja koodiga. Juhtimist enklaavis olevale koodile ei ole võimalik traditsiooniliste hüppefunktsioonide ning registrite ja virnaga manipulatsioonide abil üle anda, juhtimise ülekandmiseks enklaavile kasutatakse spetsiaalselt loodud uut käsku, mis teostab volituste kontrolli. Sel juhul saab enklaavi paigutatud kood kasutada klassikalisi kutsumismeetodeid, et pääseda juurde enklaavis olevatele funktsioonidele, ja spetsiaalseid juhiseid väliste funktsioonide väljakutsumiseks. Enklaavmälu krüptimist kasutatakse riistvararünnakute, näiteks DRAM-mooduliga ühendamise eest kaitsmiseks.

Allikas: opennet.ru

Lisa kommentaar