Atak na Intel SGX, który pozwala na wydobycie poufnych danych lub wykonanie kodu w enclave

Badacze z Wojskowej Akademii Nauk i Technologii Ludowej Armii Chin, Narodowego Uniwersytetu Singapuru oraz Szwajcarskiego Federalnego Instytutu Technologii w Zurychu opracowali nową metodę ataku na izolowane enclavy Intel SGX (Software Guard eXtensions). Atak nazwano SmashEx i spowodowany jest problemami z reentracyjnością w obsłudze wyjątków w komponentach czasu pracy dla Intel SGX. Proponowana metoda ataku umożliwia, przy posiadaniu kontroli nad systemem operacyjnym, identyfikację poufnych danych znajdujących się w enclave lub zorganizowanie kopiowania własnego kodu do pamięci enclave i jego wykonanie.

Prototypy exploitów przygotowano dla enclavów z runtime opartym na Intel SGX SDK (CVE-2021-0186) oraz Microsoft Open Enclave (CVE-2021-33767). W pierwszym przypadku udowodniono możliwość wydobycia klucza RSA używanego na serwerze webowym dla HTTPS, a w drugim udało się określić zawartość pozyskaną przez narzędzie cURL uruchomione wewnątrz enclave. Luka została już usunięta programowo w wersjach Intel SGX SDK 2.13 i Open Enclave 0.17.1. Oprócz pakietów Intel SGX SDK i Microsoft Open Enclave luka ta występuje również w SDK Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX i Veracruz.

Przypomnijmy, że technologia SGX (Software Guard Extensions) pojawiła się w procesorach Intel Core szóstej generacji (Skylake) i oferuje szereg instrukcji, które pozwalają aplikacjom użytkowym na wydzielanie zabezpieczonych obszarów pamięci - enclavów, których zawartość nie może być odczytana ani zmieniona nawet przez jądro i kod działający w trybach ring0, SMM i VMM. Przekazanie kontroli do kodu w enclave jest niemożliwe przy użyciu tradycyjnych funkcji przejścia oraz manipulacji rejestrami i stosem - przekazanie kontroli do enclave wymaga zastosowania specjalnie stworzonych nowych instrukcji EENTER, EEXIT i ERESUME, które przeprowadzają kontrolę uprawnień. Przy tym kod umieszczony w enclave może stosować klasyczne metody wywołania do odwołania się do funkcji wewnątrz enclave oraz specjalną instrukcję do wywoływania funkcji zewnętrznych. W celu ochrony przed atakami sprzętowymi, takimi jak podłączenie do modułu DRAM, stosowane jest szyfrowanie pamięci enclave.

Atak na Intel SGX, który pozwala na wydobycie poufnych danych lub wykonanie kodu w enclave

Problem polega na tym, że technologia SGX pozwala systemowi operacyjnemu przerwać wykonanie enklawe'a poprzez generowanie wyjątków sprzętowych, a w enklawe'ach nie są właściwie wdrażane prymitywy do atomowego przetwarzania takich wyjątków. W przeciwieństwie do jądra systemu operacyjnego i zwykłych aplikacji, kod wewnątrz enklawe'ów nie ma dostępu do prymitywów do organizacji atomowych działań podczas przetwarzania asynchronicznie występujących wyjątków. Bez tych atomowych prymitywów enklawe może być w dowolnym momencie przerwany i przywrócony do wykonania, nawet w momentach, gdy w enklawe'ie wykonywane są krytyczne sekcje, a on znajduje się w niebezpiecznym stanie (na przykład, gdy rejestry CPU nie zostały zapisane/przywrócone).

Atak na Intel SGX, który pozwala na wydobycie poufnych danych lub wykonanie kodu w enclave

Aby technologia SGX mogła prawidłowo funkcjonować, pozwala na przerywanie wykonania enklawe'a przez konfigurowalne wyjątki sprzętowe. Ta cecha pozwala środowiskom runtime'owym enklawe'ów na wdrażanie przetwarzania wewnętrznych wyjątków enklawe'a lub przetwarzania sygnałów, ale może również prowokować błędy ponownej dostępności. Atak SmashEx opiera się na wykorzystaniu niedociągnięć w SDK, przez które sytuacja z ponownym wywołaniem obsługi wyjątku nie jest właściwie przetwarzana. Ważne jest, aby dla eksploatacji podatności atakujący musiał mieć możliwość przerwania wykonania enklawe'a, tzn. musiał kontrolować działanie systemowego środowiska.

Po wygenerowaniu wyjątku atakujący otrzymuje niewielkie okno czasowe, w którym można przechwycić strumień wykonania poprzez manipulację parametrami wejściowymi. W szczególności, mając dostęp do systemu (środowiska poza enklawe'em), można stworzyć nowy wyjątek natychmiast po wykonaniu instrukcji wejścia do enklawe'a (EENTER), co spowoduje powrót kontroli do systemu na etapie, gdy jeszcze nie zakończono konfiguracji stosu dla enklawe'a, w którym między innymi zapisywane jest stan rejestrów CPU.

System może następnie przekazać kontrolę z powrotem do enclavy, ale ponieważ stos enclavy nie był skonfigurowany podczas przerwania, enclava będzie działać ze stosem znajdującym się w pamięci systemu, co można wykorzystać do zastosowania metod eksploatacji opartych na programowaniu z wykorzystaniem powrotów (ROP — Return-Oriented Programming). Przy użyciu techniki ROP atakujący nie próbuje umieszczać swojego kodu w pamięci, lecz operuje już istniejącymi w załadowanych bibliotekach fragmentami instrukcji maszynowych kończącymi się instrukcją zwrotu kontroli (zwykle są to końcówki funkcji bibliotecznych). Działanie exploita ogranicza się do budowy łańcucha wywołań podobnych bloków („gadżetów”) w celu uzyskania potrzebnej funkcjonalności.

Atak na Intel SGX, który pozwala na wydobycie poufnych danych lub wykonanie kodu w enclave
Atak na Intel SGX, który pozwala na wydobycie poufnych danych lub wykonanie kodu w enclave


Źródło: opennet.ru
Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster