Napad na Intel SGX za pridobivanje občutljivih podatkov ali izvajanje kode v enklavi

Raziskovalci z Univerze za obrambno znanost in tehnologijo ljudske osvobodilne vojske, Nacionalne univerze v Singapurju in ETH Zurich so razvili novo metodo napada na izolirane enklave Intel SGX (Software Guard eXtensions). Napad se imenuje SmashEx in je posledica težav pri ponovnem vstopu pri obravnavanju izjemnih situacij med delovanjem komponent izvajalnega okolja za Intel SGX. Predlagana metoda napada omogoča, če imate nadzor nad operacijskim sistemom, določitev zaupnih podatkov, ki se nahajajo v enklavi, ali organiziranje kopiranja vaše kode v pomnilnik enklave in njeno izvajanje.

Prototipi izkoriščanja so bili pripravljeni za enklave z izvajanjem, ki temelji na Intel SGX SDK (CVE-2021-0186) in Microsoft Open Enclave (CVE-2021-33767). V prvem primeru je bila prikazana zmožnost ekstrahiranja ključa RSA, ki se uporablja na spletnem strežniku za HTTPS, v drugem pa je bilo mogoče določiti vsebino, ki jo pridobi pripomoček cURL, ki teče znotraj enklave. Ranljivost je že bila obravnavana programsko v izdajah Intel SGX SDK 2.13 in Open Enclave 0.17.1. Poleg Intel SGX SDK in Microsoft Open Enclave se ranljivost pojavlja tudi v Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX in Veracruz.

Spomnimo, tehnologija SGX (Software Guard Extensions) se je pojavila v šesti generaciji procesorjev Intel Core (Skylake) in ponuja vrsto navodil, ki aplikacijam na uporabniški ravni omogočajo dodeljevanje zaprtih pomnilniških območij – enklav, katerih vsebine ni mogoče brati in spremenjeno tudi z jedrom in kodo, ki se izvaja v načinih ring0, SMM in VMM. Nemogoče je prenesti nadzor na kodo v enklavi s tradicionalnimi funkcijami skokov in manipulacijami z registri in skladom - posebej ustvarjena nova navodila EENTER, EEXIT in ERESUME se uporabljajo za prenos nadzora na enklavo, ki izvaja preverjanje pooblastil. V tem primeru lahko koda, postavljena v enklavo, uporablja klasične klicne metode za dostop do funkcij znotraj enklave in posebna navodila za klicanje zunanjih funkcij. Šifriranje pomnilnika Enclave se uporablja za zaščito pred napadi strojne opreme, kot je povezovanje z modulom DRAM.

Napad na Intel SGX za pridobivanje občutljivih podatkov ali izvajanje kode v enklavi

Težava je v tem, da tehnologija SGX omogoča operacijskemu sistemu, da prekine enklavo tako, da vrže izjemo strojne opreme, enklave pa ne izvajajo pravilno primitivov za atomsko obravnavanje takih izjem. Za razliko od jedra operacijskega sistema in navadnih aplikacij koda znotraj enklav nima dostopa do primitivov za organiziranje atomskih dejanj pri obravnavanju asinhrono vrženih izjem. Brez podanih atomskih primitivov je mogoče enklavo kadar koli prekiniti in vrniti k izvajanju, tudi takrat, ko enklava izvaja kritične odseke in je v nevarnem stanju (na primer, ko registri CPU niso shranjeni/obnovljeni).

Napad na Intel SGX za pridobivanje občutljivih podatkov ali izvajanje kode v enklavi

Za normalno delovanje tehnologija SGX omogoča prekinitev izvajanja enklave z nastavljivimi izjemami strojne opreme. Ta funkcija omogoča izvajalnim okoljem enklave izvajanje obravnavanja izjem znotraj enklave ali obdelave signalov, vendar lahko povzroči tudi napake pri ponovnem vstopu. Napad SmashEx temelji na izkoriščanju napak v SDK-ju, zaradi česar situacija ponovnega priklica obdelovalca izjem ni pravilno obravnavana. Pomembno je, da mora biti napadalec za izkoriščanje ranljivosti sposoben prekiniti izvajanje enklave, tj. mora nadzorovati delovanje sistemskega okolja.

Po sprožitvi izjeme napadalec prejme majhno časovno okno, v katerem je mogoče prestreči izvajalno nit z manipulacijo vhodnih parametrov. Zlasti, če imate dostop do sistema (okolje zunaj enklave), lahko takoj po izvedbi ukaza za vstop v enklavo (EENTER) ustvarite novo izjemo, ki bo vrnila nadzor sistemu na stopnji, ko je nastavitev sklada za enklava še ni dokončana, v kateri je shranjeno tudi stanje registrov CPU.

Sistem lahko nato vrne nadzor nazaj v enklavo, a ker sklad enklave v času prekinitve ni bil konfiguriran, se bo enklava izvajala tako, da bo sklad v sistemskem pomnilniku, kar se lahko uporabi za uporabo povratno usmerjenega programiranja (ROP ) tehnike izkoriščanja Orientirano programiranje). Pri uporabi tehnike ROP napadalec ne poskuša postaviti svoje kode v pomnilnik, temveč deluje na delih strojnih ukazov, ki so že na voljo v naloženih knjižnicah, konča pa se z ukazom vrnitve kontrole (praviloma so to konci funkcij knjižnice). . Delo izkoriščanja se zmanjša na izgradnjo verige klicev podobnih blokov ("pripomočkov") za pridobitev želene funkcionalnosti.

Napad na Intel SGX za pridobivanje občutljivih podatkov ali izvajanje kode v enklavi
Napad na Intel SGX za pridobivanje občutljivih podatkov ali izvajanje kode v enklavi


Vir: opennet.ru

Dodaj komentar