Aanval op Intel SGX om gevoelige gegevens te extraheren of code uit te voeren in de enclave

Onderzoekers van de People's Liberation Army Defense Science and Technology University, de National University of Singapore en ETH Zurich hebben een nieuwe methode ontwikkeld om geïsoleerde enclaves Intel SGX (Software Guard eXtensions) aan te vallen. De aanval heet SmashEx en wordt veroorzaakt door problemen met herintreding bij het afhandelen van uitzonderingssituaties tijdens de werking van runtimecomponenten voor Intel SGX. De voorgestelde aanvalsmethode maakt het mogelijk, als u controle heeft over het besturingssysteem, om vertrouwelijke gegevens in de enclave te achterhalen, of om het kopiëren van uw code naar het geheugen van de enclave en de uitvoering ervan te organiseren.

Er zijn exploitprototypes voorbereid voor enclaves met runtime gebaseerd op de Intel SGX SDK (CVE-2021-0186) en Microsoft Open Enclave (CVE-2021-33767). In het eerste geval werd de mogelijkheid gedemonstreerd om een ​​RSA-sleutel te extraheren die op een webserver voor HTTPS werd gebruikt, en in het tweede geval was het mogelijk om de inhoud te bepalen die werd verkregen door het cURL-hulpprogramma dat binnen de enclave draaide. Het beveiligingslek is al programmatisch verholpen in de releases van Intel SGX SDK 2.13 en Open Enclave 0.17.1. Naast de Intel SGX SDK en Microsoft Open Enclave komt de kwetsbaarheid ook voor in de Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX en Veracruz.

Laten we niet vergeten dat de SGX-technologie (Software Guard Extensions) verscheen in de zesde generatie Intel Core-processors (Skylake) en een reeks instructies biedt waarmee toepassingen op gebruikersniveau gesloten geheugengebieden kunnen toewijzen - enclaves waarvan de inhoud niet kan worden gelezen en zelfs aangepast door de kernel en de code uitgevoerd in ring0-, SMM- en VMM-modi. Het is onmogelijk om de controle over te dragen aan de code in de enclave met behulp van traditionele sprongfuncties en manipulaties met registers en de stapel. Speciaal gemaakte nieuwe instructies EENTER, EEXIT en ERESUME worden gebruikt om de controle over te dragen aan de enclave, die autoriteitscontroles uitvoert. In dit geval kan de in de enclave geplaatste code gebruikmaken van klassieke aanroepmethoden om toegang te krijgen tot functies binnen de enclave en van speciale instructies om externe functies aan te roepen. Enclave-geheugenversleuteling wordt gebruikt om te beschermen tegen hardwareaanvallen, zoals verbinding maken met een DRAM-module.

Aanval op Intel SGX om gevoelige gegevens te extraheren of code uit te voeren in de enclave

Het probleem is dat de SGX-technologie het besturingssysteem in staat stelt een enclave af te breken door een hardware-uitzondering te genereren, en enclaves implementeren niet op de juiste manier primitieven voor het atomisch afhandelen van dergelijke uitzonderingen. In tegenstelling tot de kernel van het besturingssysteem en reguliere applicaties heeft code binnen enclaves geen toegang tot primitieven voor het organiseren van atomaire acties bij het afhandelen van asynchroon gegenereerde uitzonderingen. Zonder de gespecificeerde atomaire primitieven kan de enclave op elk moment worden onderbroken en weer worden uitgevoerd, zelfs op momenten waarop de enclave kritieke secties uitvoert en zich in een onveilige staat bevindt (bijvoorbeeld wanneer CPU-registers niet worden opgeslagen/hersteld).

Aanval op Intel SGX om gevoelige gegevens te extraheren of code uit te voeren in de enclave

Bij normaal gebruik maakt de SGX-technologie het mogelijk dat de uitvoering van de enclave wordt onderbroken door configureerbare hardware-uitzonderingen. Met deze functie kunnen enclave-runtimeomgevingen intra-enclave uitzonderingsafhandeling of signaalverwerking implementeren, maar deze kan ook herintredende fouten veroorzaken. De SmashEx-aanval is gebaseerd op het misbruiken van fouten in de SDK, waardoor de situatie van het opnieuw aanroepen van de uitzonderingshandler niet goed wordt afgehandeld. Het is belangrijk dat de aanvaller, om de kwetsbaarheid te kunnen misbruiken, de uitvoering van de enclave moet kunnen onderbreken, d.w.z. moet de werking van de systeemomgeving controleren.

Na het genereren van een uitzondering krijgt de aanvaller een klein tijdvenster waarin de uitvoeringsthread kan worden onderschept door middel van manipulatie van de invoerparameters. Met name als u toegang hebt tot het systeem (omgeving buiten de enclave), kunt u onmiddellijk na het uitvoeren van de enclave-invoerinstructie (EENTER) een nieuwe uitzondering maken, die de controle over het systeem teruggeeft in een stadium waarin de stapelconfiguratie voor de enclave is nog niet voltooid, waarin ook de status van de CPU-registers wordt opgeslagen.

Het systeem kan vervolgens de besturing teruggeven aan de enclave, maar aangezien de stapel van de enclave niet was geconfigureerd op het moment van de interrupt, wordt de enclave uitgevoerd terwijl de stapel zich in het systeemgeheugen bevindt, wat kan worden gebruikt om return-georiënteerd programmeren (ROP) toe te passen. ) exploitatietechnieken, georiënteerd programmeren). Bij gebruik van de ROP-techniek probeert de aanvaller zijn code niet in het geheugen te plaatsen, maar werkt hij op basis van machine-instructies die al beschikbaar zijn in geladen bibliotheken, eindigend met een control return-instructie (in de regel zijn dit de uiteinden van bibliotheekfuncties) . Het werk van de exploit komt neer op het bouwen van een reeks oproepen naar soortgelijke blokken (“gadgets”) om de gewenste functionaliteit te verkrijgen.

Aanval op Intel SGX om gevoelige gegevens te extraheren of code uit te voeren in de enclave
Aanval op Intel SGX om gevoelige gegevens te extraheren of code uit te voeren in de enclave


Bron: opennet.ru

Voeg een reactie