Tundlike andmete väljavõtmiseks või enklaavis koodi käivitamiseks ründage Intel SGX-i

Rahvavabastusarmee kaitseteaduse ja tehnoloogia ülikooli, Singapuri riikliku ülikooli ja ETH Zürichi teadlased on välja töötanud uue meetodi isoleeritud Intel SGX (Software Guard eXtensions) enklaavide ründamiseks. Rünnaku nimi on SmashEx ja selle põhjuseks on probleemid tagasisisenemisega erandolukordade käsitlemisel Intel SGX käitusaegsete komponentide töötamise ajal. Pakutud ründemeetod võimaldab, kui teil on kontroll operatsioonisüsteemi üle, määrata enklaavis asuvad konfidentsiaalsed andmed või korraldada oma koodi kopeerimine enklaavi mällu ja selle täitmine.

Exploit prototüübid on ette valmistatud Intel SGX SDK (CVE-2021-0186) ja Microsoft Open Enclave (CVE-2021-33767) tööajaga enklaavide jaoks. Esimesel juhul demonstreeriti võimalust ekstraheerida veebiserveris kasutatavat RSA-võtit HTTPS-i jaoks ja teisel juhul oli võimalik määrata enklaavis töötava cURL-i utiliidi poolt saadud sisu. Turvaauku on Intel SGX SDK 2.13 ja Open Enclave 0.17.1 väljalasetes juba programmiliselt kõrvaldatud. Lisaks Intel SGX SDK-le ja Microsoft Open Enclave'ile ilmneb haavatavus ka Google Asylo SDK-s, EdgelessRT-s, Apache Teaclave'is, Rust SGX SDK-s, SGX-LKL-is, CoSMIX-is ja Veracruzis.

Meenutagem, et SGX (Software Guard Extensions) tehnoloogia ilmus kuuenda põlvkonna Intel Core protsessorites (Skylake) ja pakub mitmeid juhiseid, mis võimaldavad kasutajatasemel rakendustel eraldada suletud mälualasid – enklaave, mille sisu ei ole võimalik lugeda ja muudetud isegi kerneli ja ring0-, SMM- ja VMM-režiimides käivitatava koodi poolt. Juhtimist enklaavis olevale koodile ei ole võimalik traditsiooniliste hüppefunktsioonide ning registrite ja pinuga manipulatsioonide abil üle kanda - juhtimise üleandmiseks enklaavile kasutatakse spetsiaalselt loodud uusi käske EENTER, EEXIT ja ERESUME, mis teostavad 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.

Tundlike andmete väljavõtmiseks või enklaavis koodi käivitamiseks ründage Intel SGX-i

Probleem on selles, et SGX-tehnoloogia võimaldab operatsioonisüsteemil enklaavi katkestada, tehes riistvaraerandi, ja enklaavid ei rakenda korralikult primitiive selliste erandite aatomiliseks käsitlemiseks. Erinevalt operatsioonisüsteemi tuumast ja tavalistest rakendustest ei ole enklaavide sees oleval koodil juurdepääsu primitiividele, mis võimaldavad asünkroonselt visatud erandite käsitlemisel korraldada tuumatoiminguid. Ilma määratud atomaarsete primitiivideta saab enklaavi igal ajal katkestada ja käivitada, isegi siis, kui enklaav täidab kriitilisi sektsioone ja on ebaturvalises olekus (näiteks kui protsessori registreid ei salvestata/taastata).

Tundlike andmete väljavõtmiseks või enklaavis koodi käivitamiseks ründage Intel SGX-i

Normaalseks tööks võimaldab SGX-tehnoloogia enklaavi täitmist konfigureeritavate riistvaraerandite tõttu katkestada. See funktsioon võimaldab enklaavi käituskeskkondades rakendada enklaavisisest erandite käsitlemist või signaalitöötlust, kuid see võib põhjustada ka taassisenemise vigu. SmashExi rünnak põhineb SDK vigade ärakasutamisel, mille tõttu ei käsitleta erandikäsitleja uuesti kutsumise olukorda õigesti. Oluline on, et haavatavuse ärakasutamiseks peab ründajal olema võimalus katkestada enklaavi täitmine, s.t. peab kontrollima süsteemikeskkonna tööd.

Pärast erandi tegemist saab ründaja väikese ajaakna, mille jooksul saab täitmislõime sisendparameetritega manipuleerimise kaudu kinni pidada. Täpsemalt, kui teil on juurdepääs süsteemile (keskkonnale väljaspool enklaavi), saate kohe pärast enklaavi sisestamise käsu (EENTER) täitmist luua uue erandi, mis tagastab süsteemile kontrolli etapis, mil pinu seadistatakse enklaav pole veel valmis, kuhu salvestatakse ka CPU registrite olek.

Süsteem saab seejärel juhtimise tagasi enklaavile tagastada, kuid kuna enklaavi pinu ei olnud katkestuse ajal konfigureeritud, siis käivitatakse enklaav süsteemimälus asuva pinuga, mida saab kasutada tagastamisele orienteeritud programmeerimise (ROP) kasutamiseks. ) ekspluateerimistehnikad. Orienteeritud programmeerimine). ROP-tehnikat kasutades ei püüa ründaja oma koodi mällu paigutada, vaid tegutseb laaditud teekides juba olemasolevate masinakäskude tükkidega, lõpetades kontrolli tagastuskäsuga (reeglina on need teegi funktsioonide lõpud) . Ärakasutamise töö taandub soovitud funktsioonide saamiseks sarnastele plokkidele (“vidinatele”) kõnede ahela loomisele.

Tundlike andmete väljavõtmiseks või enklaavis koodi käivitamiseks ründage Intel SGX-i
Tundlike andmete väljavõtmiseks või enklaavis koodi käivitamiseks ründage Intel SGX-i


Allikas: opennet.ru

Lisa kommentaar