Támadja meg az Intel SGX-et, hogy érzékeny adatokat nyerjen ki, vagy kódot hajtson végre az enklávéban

A Népi Felszabadító Hadsereg Védelmi Tudományos és Technológiai Egyeteme, a Szingapúri Nemzeti Egyetem és az ETH Zurich kutatói új módszert fejlesztettek ki az Intel SGX (Software Guard eXtensions) elszigetelt enklávék támadására. A támadást SmashEx-nek hívják, és az Intel SGX futásidejű összetevőinek működése során fellépő kivételes helyzetek kezelésekor jelentkező visszatérési problémák okozzák. A javasolt támadási módszer lehetővé teszi, ha Ön uralja az operációs rendszert, hogy meghatározza az enklávéban található bizalmas adatokat, vagy megszervezze a kód másolását az enklávé memóriájába és annak végrehajtását.

Exploit prototípusokat készítettek az Intel SGX SDK (CVE-2021-0186) és a Microsoft Open Enclave (CVE-2021-33767) futásidejű enklávéihoz. Az első esetben egy webszerveren használt RSA-kulcs kinyerésének képességét mutatták be HTTPS-hez, a másodikban pedig az enklávéban futó cURL segédprogram által nyert tartalmat lehetett meghatározni. A sérülékenységet már programozottan orvosolták az Intel SGX SDK 2.13 és az Open Enclave 0.17.1 kiadásaiban. A biztonsági rés az Intel SGX SDK és a Microsoft Open Enclave mellett a Google Asylo SDK-ban, az EdgelessRT-ben, az Apache Teaclave-ben, a Rust SGX SDK-ban, az SGX-LKL-ben, a CoSMIX-ben és a Veracruzban is megjelenik.

Emlékezzünk vissza, hogy az SGX (Software Guard Extensions) technológia a hatodik generációs Intel Core processzorokban (Skylake) jelent meg, és egy sor olyan utasítást kínál, amelyek lehetővé teszik a felhasználói szintű alkalmazások számára zárt memóriaterületek - enklávék - lefoglalását, amelyek tartalma nem olvasható és még a kernel és a ring0, SMM és VMM módban végrehajtott kód is módosítja. Lehetetlen átvinni a vezérlést az enklávéban lévő kódra a hagyományos ugrási funkciók, valamint a regiszterekkel és a veremekkel végzett manipulációk segítségével - a speciálisan létrehozott új utasítások EENTER, EEXIT és ERESUME az enklávéba történő vezérlés átvitelére szolgálnak, amelyek jogosultsági ellenőrzéseket végeznek. Ebben az esetben az enklávéba helyezett kód klasszikus hívási módszereket használhat az enklávé belsejében lévő funkciók eléréséhez, és speciális utasításokat a külső függvények hívásához. Az enclave memóriatitkosítás a hardveres támadások, például a DRAM-modulhoz való csatlakozás elleni védelemre szolgál.

Támadja meg az Intel SGX-et, hogy érzékeny adatokat nyerjen ki, vagy kódot hajtson végre az enklávéban

A probléma az, hogy az SGX technológia lehetővé teszi az operációs rendszer számára, hogy megszakítsa az enklávékat hardveres kivételek dobásával, és az enklávék nem valósítják meg megfelelően az ilyen kivételek atomi kezeléséhez szükséges primitíveket. Ellentétben az operációs rendszer kernellel és a szokásos alkalmazásokkal, az enklávékon belüli kód nem fér hozzá primitívekhez az atomi műveletek megszervezéséhez, amikor aszinkron módon dobott kivételeket kezel. A megadott atomi primitívek nélkül az enklávé bármikor megszakítható és visszaállítható a végrehajtáshoz, még akkor is, amikor az enklávé kritikus szakaszokat hajt végre, és nem biztonságos állapotban van (például amikor a CPU regiszterek nincsenek elmentve/visszaállítva).

Támadja meg az Intel SGX-et, hogy érzékeny adatokat nyerjen ki, vagy kódot hajtson végre az enklávéban

Normál működéshez az SGX technológia lehetővé teszi, hogy az enklávé végrehajtását konfigurálható hardverkivételek megszakítsák. Ez a szolgáltatás lehetővé teszi, hogy az enklávé futásidejű környezetek enklávékon belüli kivételkezelést vagy jelfeldolgozást hajtsanak végre, de visszatérő hibákat is okozhat. A SmashEx támadás az SDK azon hibáinak kihasználásán alapul, amelyek miatt a kivételkezelő újrahívásának helyzete nincs megfelelően kezelve. Fontos, hogy a sérülékenység kihasználásához a támadónak meg kell tudnia szakítani az enklávé végrehajtását, pl. ellenőriznie kell a rendszerkörnyezet működését.

Kivétel dobása után a támadó egy kis időablakot kap, amely alatt a végrehajtási szál elfogható a bemeneti paraméterek manipulálásával. Különösen, ha hozzáfér a rendszerhez (az enklávén kívüli környezethez), azonnal létrehozhat egy új kivételt az enklávébeviteli utasítás (EENTER) végrehajtása után, amely visszaadja a vezérlést a rendszernek abban a szakaszban, amikor a verem beállítása a enklávé még nem készült el, amelyben a CPU regiszterek állapota is elmentésre kerül.

A rendszer ezután vissza tudja adni a vezérlést az enklávénak, de mivel az enklávé verem nem volt konfigurálva a megszakításkor, az enklávé a rendszermemóriában lévő veremmel fog lefutni, amely visszatérés-orientált programozás (ROP) alkalmazására használható. ) hasznosítási technikák. Orientált programozás). A ROP technika használatakor a támadó nem próbálja meg elhelyezni a kódját a memóriában, hanem a betöltött könyvtárakban már elérhető gépi utasítások darabjain dolgozik, amelyek egy vezérlő visszatérési utasítással végződnek (általában ezek a könyvtári funkciók végei) . Az exploit munkája a kívánt funkcionalitás elérése érdekében hasonló blokkokhoz („gadgetek”) híváslánc felépítésében áll le.

Támadja meg az Intel SGX-et, hogy érzékeny adatokat nyerjen ki, vagy kódot hajtson végre az enklávéban
Támadja meg az Intel SGX-et, hogy érzékeny adatokat nyerjen ki, vagy kódot hajtson végre az enklávéban


Forrás: opennet.ru

Hozzászólás