Napad na Intel SGX za izdvajanje osjetljivih podataka ili izvršavanje koda u enklavi

Istraživači sa Sveučilišta za znanost i tehnologiju Narodne oslobodilačke vojske, Nacionalnog sveučilišta u Singapuru i ETH Zurich razvili su novu metodu napada na izolirane enklave Intel SGX (Software Guard eXtensions). Napad se zove SmashEx i uzrokovan je problemima s ponovnim ulaskom prilikom rukovanja iznimnim situacijama tijekom rada runtime komponenti za Intel SGX. Predložena metoda napada omogućuje, ako imate kontrolu nad operativnim sustavom, utvrđivanje povjerljivih podataka koji se nalaze u enklavi ili organiziranje kopiranja vašeg koda u memoriju enklave i njegovo izvršenje.

Prototipovi eksploatacije pripremljeni su za enklave s vremenom izvođenja temeljenim na Intel SGX SDK (CVE-2021-0186) i Microsoft Open Enclave (CVE-2021-33767). U prvom slučaju demonstrirana je mogućnost izdvajanja RSA ključa koji se koristi na web poslužitelju za HTTPS, au drugom je bilo moguće utvrditi sadržaj dobiven uslužnim programom cURL koji radi unutar enklave. Ranjivost je već programski riješena u izdanjima Intel SGX SDK 2.13 i Open Enclave 0.17.1. Uz Intel SGX SDK i Microsoft Open Enclave, ranjivost se pojavljuje i u Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX i Veracruz.

Podsjetimo, SGX (Software Guard Extensions) tehnologija pojavila se u šestoj generaciji Intel Core procesora (Skylake) i nudi niz instrukcija koje aplikacijama na korisničkoj razini omogućuju dodjelu zatvorenih memorijskih područja – enklava, čiji se sadržaj ne može pročitati i modificiran čak i kernelom i kodom koji se izvodi u načinima rada ring0, SMM i VMM. Nemoguće je prenijeti kontrolu na kod u enklavi korištenjem tradicionalnih funkcija skokova i manipulacija s registrima i stogom - posebno kreirane nove instrukcije EENTER, EEXIT i ERESUME koriste se za prijenos kontrole na enklavu, koje vrše provjere ovlaštenja. U tom slučaju kod smješten u enklavu može koristiti klasične metode pozivanja za pristup funkcijama unutar enklave i posebne upute za pozivanje vanjskih funkcija. Enclave memorijska enkripcija koristi se za zaštitu od hardverskih napada kao što je povezivanje s DRAM modulom.

Napad na Intel SGX za izdvajanje osjetljivih podataka ili izvršavanje koda u enklavi

Problem je u tome što SGX tehnologija dopušta operativnom sustavu da prekine enklavu izbacivanjem hardverske iznimke, a enklave ne implementiraju pravilno primitive za atomsko rukovanje takvim iznimkama. Za razliku od jezgre operacijskog sustava i uobičajenih aplikacija, kod unutar enklava nema pristup primitivima za organiziranje atomskih radnji prilikom rukovanja asinkrono bačenim iznimkama. Bez navedenih atomskih primitiva, enklava se može prekinuti u bilo kojem trenutku i vratiti na izvršenje, čak i u trenucima kada enklava izvršava kritične dijelove i nalazi se u nesigurnom stanju (na primjer, kada CPU registri nisu spremljeni/obnovljeni).

Napad na Intel SGX za izdvajanje osjetljivih podataka ili izvršavanje koda u enklavi

Za normalan rad, SGX tehnologija dopušta da se izvršenje enklave prekine podesivim hardverskim iznimkama. Ova značajka omogućuje okruženjima enklave za implementaciju rukovanja iznimkama ili obrade signala unutar enklave, ali također može uzrokovati greške ponovnog ulaska. SmashEx napad temelji se na iskorištavanju nedostataka u SDK-u zbog kojih se situacija ponovnog pozivanja rukovatelja iznimkama ne rješava ispravno. Važno je da za iskorištavanje ranjivosti napadač mora biti u mogućnosti prekinuti izvršenje enklave, tj. mora kontrolirati rad okoline sustava.

Nakon izbacivanja iznimke, napadač dobiva mali vremenski prozor tijekom kojeg se izvršna nit može presresti manipulacijom ulaznih parametara. Konkretno, ako imate pristup sustavu (okruženje izvan enklave), možete stvoriti novu iznimku odmah nakon izvršavanja instrukcije za ulazak u enklavu (EENTER), koja će vratiti kontrolu sustavu u fazi kada je postavljeno slaganje za enklava još nije dovršena, u kojoj se također sprema stanje registara CPU-a.

Sustav zatim može vratiti kontrolu natrag enklavi, ali budući da stog enklave nije konfiguriran u vrijeme prekida, enklava će se izvršiti sa stogom koji se nalazi u sistemskoj memoriji, što se može koristiti za korištenje povratno orijentiranog programiranja (ROP ) tehnike iskorištavanja.Orijentirano programiranje). Kada koristi ROP tehniku, napadač ne pokušava svoj kod smjestiti u memoriju, već operira s dijelovima strojnih instrukcija koje su već dostupne u učitanim bibliotekama, završavajući instrukcijom povratka kontrole (u pravilu su to krajevi funkcija knjižnice) . Rad exploit-a svodi se na izgradnju lanca poziva sličnih blokova ("gadgeta") kako bi se dobila željena funkcionalnost.

Napad na Intel SGX za izdvajanje osjetljivih podataka ili izvršavanje koda u enklavi
Napad na Intel SGX za izdvajanje osjetljivih podataka ili izvršavanje koda u enklavi


Izvor: opennet.ru

Dodajte komentar