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

Istraživači sa Univerziteta za nauku i tehnologiju odbrane Narodne oslobodilačke vojske Kine, Nacionalnog univerziteta Singapura i ETH Zuricha razvili su novu metodu napada na izolovane Intel SGX (Software Guard eXtensions) enklave. Napad je nazvan SmashEx i uzrokovan je problemima ponovnog ulaska u rukovanju izuzecima tokom rada runtime komponenti za Intel SGX. Predloženi metod napada omogućava, ukoliko postoji kontrola nad operativnim sistemom, da se utvrdi poverljivi podaci koji se nalaze u enklavi, ili da se organizuje kopiranje nečijeg koda u memoriju enklave i njegovo izvršenje.

Exploit prototipovi su pripremljeni za runtime enklave zasnovane na Intel SGX SDK (CVE-2021-0186) i Microsoft Open Enclave (CVE-2021-33767). U prvom slučaju je demonstrirana mogućnost izdvajanja RSA ključa koji se koristi na web serveru za HTTPS, au drugom je bilo moguće odrediti sadržaj dobiven pomoću cURL uslužnog programa koji radi unutar enklave. Ranjivost je već programski ispravljena u izdanjima Intel SGX SDK 2.13 i Open Enclave 0.17.1. Pored 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 da se tehnologija SGX (Software Guard Extensions) pojavila u šestoj generaciji Intel Core procesora (Skylake) i nudi niz instrukcija koje omogućavaju aplikacijama na nivou korisnika da dodijele zatvorena memorijska područja – enklave čiji sadržaj ne može čitati i mijenjati čak ni sam kernel i kod koji se izvršava u ring0, SMM i VMM načinima. Nemoguće je prenijeti kontrolu na kod u enklavi koristeći tradicionalne funkcije skoka i manipulacije sa registrima i stekom - posebno kreirane nove instrukcije EENTER, EEXIT i ERESUME se koriste za prijenos kontrole na enklavu, koje vrše provjere autorizacije. U ovom slučaju, kod postavljen u enklavu može koristiti klasične metode poziva za pozivanje funkcija unutar enklave i posebnu instrukciju za pozivanje vanjskih funkcija. Enklavno šifriranje memorije koristi se za zaštitu od hardverskih napada kao što je DRAM veza.

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

Problem je u tome što SGX tehnologija dozvoljava operativnom sistemu da prekine izvršavanje enklave bacanjem hardverskog izuzetka, a enklave ne implementiraju pravilno primitive za atomsko rukovanje takvim izuzecima. Za razliku od kernela operativnog sistema i normalnih aplikacija, kod unutar enklava nema pristup primitivima za organizovanje atomskih akcija tokom rukovanja asinhrono podignutim izuzecima. Bez specificiranih atomskih primitiva, enklava može biti prekinuta i vraćena u izvršenje u bilo koje vrijeme, čak i u vrijeme kada se kritični dijelovi izvršavaju u enklavi i ona je u nesigurnom stanju (na primjer, kada registri CPU-a nisu pohranjeni/vraćani) .

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

Za normalan rad, SGX tehnologija vam omogućava da prekinete izvršenje enklave uz konfigurabilne hardverske izuzetke. Ova funkcija omogućava izvođenju enklave da implementira rukovanje iznimkama unutar enklave ili rukovanje signalom, ali također može unijeti greške pri ponovnom ulasku. SmashEx napad je baziran na iskorištavanju nedostataka u SDK-u zbog kojih se situacija ponovnog poziva rukovatelja izuzetkom ne rješava pravilno. Važno je da, kako bi iskoristio ranjivost, napadač mora biti u mogućnosti da prekine izvršenje enklave, tj. mora kontrolisati rad sistemskog okruženja.

Nakon izbacivanja izuzetka, napadač dobija mali vremenski prozor tokom kojeg je moguće presresti tok izvršenja kroz manipulaciju ulaznim parametrima. Konkretno, ako imate pristup sistemu (okruženje izvan enklave), možete kreirati novi izuzetak odmah nakon izvršenja instrukcije za ulazak u enklavu (EENTER), koja će vratiti kontrolu sistemu u fazi kada je konfiguracija steka jer enklava još nije završena, u kojoj Ovaj broj pohranjuje stanje CPU registara.

Sistem tada može vratiti kontrolu nazad u enklavu, ali pošto stek enklave nije bio postavljen u vrijeme prekida, enklava će se izvršiti sa stekom koji se nalazi u sistemskoj memoriji, što se može koristiti za primjenu programiranja orijentiranog na povratak ( ROP) tehnike.orijentirano programiranje). Kada koristi ROP tehniku, napadač ne pokušava da smesti svoj kod u memoriju, već radi na delovima mašinskih instrukcija koje su već dostupne u učitanim bibliotekama, koje završavaju instrukcijom kontrolnog povratka (po pravilu, to su završeci biblioteke funkcije). Operacija eksploatacije svodi se na izgradnju lanca poziva sličnih blokova („gadžeta“) 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