Angreb på Intel SGX for at udtrække følsomme data eller eksekvere kode i en enklave

Forskere fra People's Liberation Army Defense Science and Technology University, National University of Singapore og ETH Zurich har udviklet en ny metode til at angribe isolerede enklaver Intel SGX (Software Guard eXtensions). Angrebet kaldes SmashEx og er forårsaget af problemer med reentrance ved håndtering af undtagelsessituationer under driften af ​​runtime-komponenter til Intel SGX. Den foreslåede angrebsmetode gør det muligt, hvis du har kontrol over operativsystemet, at bestemme fortrolige data placeret i enklaven, eller at organisere kopieringen af ​​din kode ind i enklavens hukommelse og dens eksekvering.

Udnyttelsesprototyper er blevet forberedt til enklaver med runtime baseret på Intel SGX SDK (CVE-2021-0186) og Microsoft Open Enclave (CVE-2021-33767). I det første tilfælde blev muligheden for at udtrække en RSA-nøgle brugt på en webserver til HTTPS demonstreret, og i det andet var det muligt at bestemme indholdet opnået af cURL-værktøjet, der kører inde i enklaven. Sårbarheden er allerede blevet behandlet programmatisk i udgivelserne af Intel SGX SDK 2.13 og Open Enclave 0.17.1. Ud over Intel SGX SDK og Microsoft Open Enclave optræder sårbarheden også i Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX og Veracruz.

Lad os huske på, at SGX-teknologi (Software Guard Extensions) dukkede op i sjette generation af Intel Core-processorer (Skylake) og tilbyder en række instruktioner, der tillader applikationer på brugerniveau at allokere lukkede hukommelsesområder - enklaver, hvis indhold ikke kan læses og modificeret selv af kernen og koden udført i ring0, SMM og VMM modes. Det er umuligt at overføre kontrol til koden i enklaven ved hjælp af traditionelle springfunktioner og manipulationer med registre og stakken - specielt oprettede nye instruktioner EENTER, EEXIT og ERESUME bruges til at overføre kontrol til enklaven, som udfører myndighedskontrol. I dette tilfælde kan koden placeret i enklaven bruge klassiske kaldemetoder til at få adgang til funktioner inde i enklaven og særlige instruktioner til at kalde eksterne funktioner. Enklavehukommelseskryptering bruges til at beskytte mod hardwareangreb, såsom tilslutning til et DRAM-modul.

Angreb på Intel SGX for at udtrække følsomme data eller eksekvere kode i en enklave

Problemet er, at SGX-teknologi tillader operativsystemet at afbryde en enklave ved at kaste en hardware-undtagelse, og enklaver implementerer ikke korrekt primitiver til atomisk håndtering af sådanne undtagelser. I modsætning til operativsystemkernen og almindelige applikationer har kode inde i enklaver ikke adgang til primitiver til at organisere atomiske handlinger, når de håndterer asynkront kastede undtagelser. Uden de specificerede atomare primitiver kan enklaven til enhver tid afbrydes og vende tilbage til udførelse, selv på tidspunkter hvor enklaven udfører kritiske sektioner og er i en usikker tilstand (for eksempel når CPU-registre ikke gemmes/gendannes).

Angreb på Intel SGX for at udtrække følsomme data eller eksekvere kode i en enklave

Til normal drift tillader SGX-teknologi, at eksekveringen af ​​enklaven afbrydes af konfigurerbare hardwareundtagelser. Denne funktion giver enklave-runtime-miljøer mulighed for at implementere intra-enklave-undtagelseshåndtering eller signalbehandling, men den kan også forårsage reentrant-fejl. SmashEx-angrebet er baseret på udnyttelse af fejl i SDK'et, som skyldes, at situationen med at genkalde undtagelsesbehandleren ikke håndteres korrekt. Det er vigtigt, at for at udnytte sårbarheden skal angriberen være i stand til at afbryde eksekveringen af ​​enklaven, dvs. skal kontrollere driften af ​​systemmiljøet.

Efter at have kastet en undtagelse, modtager angriberen et lille tidsvindue, hvor udførelsestråden kan opsnappes gennem manipulation af inputparametrene. Især hvis du har adgang til systemet (miljø uden for enklaven), kan du oprette en ny undtagelse umiddelbart efter at have udført enklaveindtastningsinstruktionen (EENTER), som vil returnere kontrol til systemet på et tidspunkt, hvor stackopsætningen for enklaven er endnu ikke afsluttet, hvor CPU-registrenes tilstand også er gemt.

Systemet kan derefter returnere kontrol tilbage til enklaven, men da enklavens stak ikke var konfigureret på tidspunktet for afbrydelsen, vil enklaven køre med stakken, der ligger i systemhukommelsen, som kan bruges til at anvende returorienteret programmering (ROP ) udnyttelsesteknikker. Orienteret programmering). Når man bruger ROP-teknikken, forsøger angriberen ikke at placere sin kode i hukommelsen, men opererer på stykker af maskininstruktioner, der allerede er tilgængelige i indlæste biblioteker, og slutter med en kontrolreturinstruktion (som regel er disse enderne af biblioteksfunktioner) . Arbejdet med udnyttelsen kommer ned til at opbygge en kæde af opkald til lignende blokke ("gadgets") for at opnå den ønskede funktionalitet.

Angreb på Intel SGX for at udtrække følsomme data eller eksekvere kode i en enklave
Angreb på Intel SGX for at udtrække følsomme data eller eksekvere kode i en enklave


Kilde: opennet.ru

Tilføj en kommentar