Zaútočte na Intel SGX a extrahujte citlivá data nebo spusťte kód v enklávě

Vědci z Lidové osvobozenecké armády Defence Science and Technology University, National University of Singapore a ETH Zurich vyvinuli novou metodu útoku na izolované enklávy Intel SGX (Software Guard eXtensions). Útok se nazývá SmashEx a je způsoben problémy s reentrance při řešení výjimečných situací při provozu runtime komponent pro Intel SGX. Navržená metoda útoku umožňuje, pokud máte kontrolu nad operačním systémem, určit důvěrná data umístěná v enklávě nebo zorganizovat zkopírování vašeho kódu do paměti enklávy a jeho provedení.

Exploit prototypy byly připraveny pro enklávy s runtime založeným na Intel SGX SDK (CVE-2021-0186) a Microsoft Open Enclave (CVE-2021-33767). V prvním případě byla prokázána schopnost extrahovat RSA klíč používaný na webovém serveru pro HTTPS a ve druhém bylo možné určit obsah získaný utilitou cURL běžící uvnitř enklávy. Tato chyba zabezpečení již byla programově vyřešena ve vydáních Intel SGX SDK 2.13 a Open Enclave 0.17.1. Kromě Intel SGX SDK a Microsoft Open Enclave se zranitelnost objevuje také v Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX a Veracruz.

Připomeňme, že technologie SGX (Software Guard Extensions) se objevila v šesté generaci procesorů Intel Core (Skylake) a nabízí řadu instrukcí, které umožňují aplikacím na uživatelské úrovni alokovat uzavřené paměťové oblasti – enklávy, jejichž obsah nelze číst a modifikované dokonce i jádrem a kódem spouštěným v režimech ring0, SMM a VMM. Není možné přenést řízení na kód v enklávě pomocí tradičních skokových funkcí a manipulací s registry a zásobníkem - pro přenos řízení na enklávu se používají speciálně vytvořené nové instrukce EENTER, EEXIT a ERESUME, které provádějí kontroly autority. V tomto případě může kód umístěný v enklávě používat klasické metody volání pro přístup k funkcím uvnitř enklávy a speciální instrukce pro volání externích funkcí. Šifrování paměti Enclave se používá k ochraně před hardwarovými útoky, jako je připojení k modulu DRAM.

Zaútočte na Intel SGX a extrahujte citlivá data nebo spusťte kód v enklávě

Problém je v tom, že technologie SGX umožňuje operačnímu systému zrušit enklávu vyvoláním hardwarové výjimky a enklávy správně neimplementují primitiva pro atomické zpracování takových výjimek. Na rozdíl od jádra operačního systému a běžných aplikací nemá kód uvnitř enkláv přístup k primitivům pro organizaci atomických akcí při zpracování asynchronně vyvolaných výjimek. Bez specifikovaných atomických primitiv lze enklávu kdykoli přerušit a vrátit se k provádění, dokonce i v době, kdy enkláva provádí kritické sekce a je v nebezpečném stavu (například když nejsou uloženy/obnoveny registry CPU).

Zaútočte na Intel SGX a extrahujte citlivá data nebo spusťte kód v enklávě

Pro normální provoz umožňuje technologie SGX přerušit provádění enklávy konfigurovatelnými hardwarovými výjimkami. Tato funkce umožňuje běhovým prostředím enklávy implementovat zpracování výjimek uvnitř enklávy nebo zpracování signálů, ale může také způsobit opakované chyby. Útok SmashEx je založen na využívání nedostatků v SDK, kvůli kterým není správně řešena situace opětovného volání obslužného programu výjimek. Je důležité, že pro zneužití zranitelnosti musí být útočník schopen přerušit provádění enklávy, tzn. musí řídit provoz prostředí systému.

Po vyvolání výjimky obdrží útočník malé časové okno, během kterého může být prováděcí vlákno zachyceno manipulací se vstupními parametry. Zejména, pokud máte přístup do systému (prostředí mimo enklávu), můžete vytvořit novou výjimku ihned po provedení instrukce pro vstup do enklávy (EENTER), která vrátí řízení systému ve fázi, kdy bude nastavení zásobníku pro ještě nebyla dokončena enkláva, ve které je také uložen stav registrů CPU.

Systém pak může vrátit řízení zpět do enklávy, ale protože zásobník enklávy nebyl v době přerušení nakonfigurován, enkláva se spustí se zásobníkem umístěným v systémové paměti, kterou lze použít k programování orientovanému na návrat (ROP ) exploatační techniky.Orientované programování). Při použití techniky ROP se útočník nesnaží umístit svůj kód do paměti, ale operuje s částmi strojových instrukcí, které jsou již dostupné v načtených knihovnách a končí instrukcí pro návrat řízení (zpravidla se jedná o konce funkcí knihovny) . Práce exploitu spočívá v sestavení řetězce volání do podobných bloků („gadgetů“) k získání požadované funkčnosti.

Zaútočte na Intel SGX a extrahujte citlivá data nebo spusťte kód v enklávě
Zaútočte na Intel SGX a extrahujte citlivá data nebo spusťte kód v enklávě


Zdroj: opennet.ru

Přidat komentář