Zaútočte na Intel SGX a extrahujte citlivé dáta alebo spustite kód v enkláve

Výskumníci z Ľudovej oslobodzovacej armády Defence Science and Technology University, National University of Singapore a ETH Zurich vyvinuli novú metódu útoku na izolované enklávy Intel SGX (Software Guard eXtensions). Útok sa nazýva SmashEx a je spôsobený problémami s opätovným vstupom pri riešení výnimočných situácií počas prevádzky runtime komponentov pre Intel SGX. Navrhovaná metóda útoku umožňuje, ak máte kontrolu nad operačným systémom, určiť dôverné údaje nachádzajúce sa v enkláve alebo zorganizovať skopírovanie vášho kódu do pamäte enklávy a jeho vykonanie.

Exploit prototypy boli pripravené pre enklávy s runtime založeným na Intel SGX SDK (CVE-2021-0186) a Microsoft Open Enclave (CVE-2021-33767). V prvom prípade bola demonštrovaná schopnosť extrahovať RSA kľúč používaný na webovom serveri pre HTTPS a v druhom bolo možné určiť obsah získaný utilitou cURL spustenou vo vnútri enklávy. Táto chyba zabezpečenia už bola programovo vyriešená vo vydaniach Intel SGX SDK 2.13 a Open Enclave 0.17.1. Okrem Intel SGX SDK a Microsoft Open Enclave sa zraniteľnosť objavuje aj v Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX a Veracruz.

Pripomeňme, že technológia SGX (Software Guard Extensions) sa objavila v šiestej generácii procesorov Intel Core (Skylake) a ponúka sériu inštrukcií, ktoré umožňujú aplikáciám na užívateľskej úrovni prideľovať uzavreté pamäťové oblasti – enklávy, ktorých obsah nemožno čítať a modifikované dokonca aj jadrom a kódom vykonávaným v režimoch ring0, SMM a VMM. Nie je možné preniesť riadenie na kód v enkláve pomocou tradičných skokových funkcií a manipulácií s registrami a zásobníkom - na prenos riadenia do enklávy sa používajú špeciálne vytvorené nové inštrukcie EENTER, EEXIT a ERESUME, ktoré vykonávajú kontroly autorít. V tomto prípade môže kód umiestnený v enkláve využívať klasické metódy volania na prístup k funkciám vo vnútri enklávy a špeciálne inštrukcie na volanie externých funkcií. Šifrovanie pamäte Enclave sa používa na ochranu pred hardvérovými útokmi, ako je pripojenie k modulu DRAM.

Zaútočte na Intel SGX a extrahujte citlivé dáta alebo spustite kód v enkláve

Problém je v tom, že technológia SGX umožňuje operačnému systému zrušiť enklávu vyvolaním hardvérovej výnimky a enklávy neimplementujú správne primitíva na atomické spracovanie takýchto výnimiek. Na rozdiel od jadra operačného systému a bežných aplikácií nemá kód vo vnútri enkláv prístup k primitívom na organizovanie atomických akcií pri spracovávaní asynchrónne vyvolaných výnimiek. Bez špecifikovaných atómových primitív môže byť enkláva kedykoľvek prerušená a vrátená do vykonávania, dokonca aj v časoch, keď enkláva vykonáva kritické sekcie a je v nebezpečnom stave (napríklad keď sa neuložia/obnovia registre CPU).

Zaútočte na Intel SGX a extrahujte citlivé dáta alebo spustite kód v enkláve

Pre normálnu prevádzku umožňuje technológia SGX prerušenie vykonávania enklávy konfigurovateľnými hardvérovými výnimkami. Táto funkcia umožňuje enklávovým runtime prostrediam implementovať intra-enklávové spracovanie výnimiek alebo spracovanie signálov, ale môže tiež spôsobiť opakované chyby. Útok SmashEx je založený na využívaní nedostatkov v súprave SDK, kvôli ktorým nie je správne riešená situácia opätovného volania obsluhy výnimiek. Dôležité je, že na zneužitie zraniteľnosti musí byť útočník schopný prerušiť vykonávanie enklávy, t.j. musí riadiť chod prostredia systému.

Po vyvolaní výnimky dostane útočník malé časové okno, počas ktorého môže byť vykonávané vlákno zachytené manipuláciou so vstupnými parametrami. Najmä, ak máte prístup do systému (prostredie mimo enklávy), môžete vytvoriť novú výnimku ihneď po vykonaní inštrukcie na vstup do enklávy (EENTER), ktorá vráti kontrolu do systému vo fáze, keď sa nastavenie zásobníka pre ešte nebola dokončená enkláva, v ktorej je uložený aj stav registrov CPU.

Systém potom môže vrátiť riadenie späť do enklávy, ale keďže zásobník enklávy nebol v čase prerušenia nakonfigurovaný, enkláva sa vykoná so zásobníkom nachádzajúcim sa v systémovej pamäti, ktorú možno použiť na programovanie orientované na návrat (ROP ) techniky využívania. Orientované programovanie). Pri použití techniky ROP sa útočník nesnaží umiestniť svoj kód do pamäte, ale operuje s časťami strojových inštrukcií, ktoré sú už dostupné v načítaných knižniciach a končí inštrukciou návratu riadenia (spravidla ide o konce funkcií knižnice) . Práca exploitu spočíva v budovaní reťazca volaní do podobných blokov („gadgetov“) na získanie požadovanej funkčnosti.

Zaútočte na Intel SGX a extrahujte citlivé dáta alebo spustite kód v enkláve
Zaútočte na Intel SGX a extrahujte citlivé dáta alebo spustite kód v enkláve


Zdroj: opennet.ru

Pridať komentár