SmashEx, een aanval op Intel SGX om gegevens te extraheren of code uit te voeren

Onderzoekers van de People's Liberation Army Defense Science and Technology University, de National University of Singapore en de Swiss Higher Technical School in Zürich hebben een nieuwe methode ontwikkeld om geïsoleerde Intel SGX-enclaves aan te vallen (Software Guard-extensies).

De aanval heette SmashEx en het werd veroorzaakt door terugkeerproblemen bij het afhandelen van uitzonderingen tijdens runtime-componentwerk voor Intel SGX. De voorgestelde aanvalsmethode maakt het mogelijk om, als er controle is over het besturingssysteem, vertrouwelijke gegevens te bepalen gelegen in de enclave, of organiseer de kopie van uw code in het geheugen van de enclave en de uitvoering ervan.

Onthoud die technologie SGX verscheen op XNUMXe generatie Intel Core-processors (Skylake) en biedt een reeks instructies dat toestaan toepassingen op gebruikersniveau krijgen privé-geheugengebieden toegewezen, enclaves, waarvan de inhoud niet kan worden gelezen of gewijzigd, zelfs niet door de kernel en code die wordt uitgevoerd in ring0-, SMM- en VMM-modi.

Het is onmogelijk om de controle over te dragen naar code in de enclave met behulp van functies traditionele overgang en manipulaties met registers en de stapel; Nieuwe speciaal gemaakte EENTER-, EEXIT- en ERESUME-instructies worden gebruikt om de controle over te dragen aan de enclave die autorisatiecontroles uitvoert. Tegelijkertijd, de code die in de enclave is geplaatst, kan aanroepmethoden gebruiken klassiekers voor het aanroepen van functies binnen de enclave en een speciale instructie om externe functies op te roepen. Enclave-geheugenversleuteling wordt gebruikt om te beschermen tegen hardware-aanvallen, zoals verbinding met een DRAM-module.

Het probleem houdt verband met het feit dat SGX-technologie het besturingssysteem toestaat de uitvoering te onderbreken van een enclave door een hardware-uitzondering te genereren, en de primitieven voor atomaire verwerking van dergelijke uitzonderingen zijn niet correct geïmplementeerd in enclaves. In tegenstelling tot de kernel van het besturingssysteem en reguliere applicaties, code in enclaves heeft geen toegang tot primitieven om atomaire acties te organiseren tijdens asynchrone afhandeling van uitzonderingen. Zonder de gespecificeerde atomaire primitieven kan de enclave op elk moment worden onderbroken en opnieuw worden uitgevoerd, zelfs wanneer kritieke secties in de enclave worden uitgevoerd en deze zich in een onveilige staat bevindt (bijvoorbeeld wanneer CPU-registers niet worden opgeslagen / hersteld).

Voor normaal gebruik is de technologie Met SGX kunt u de uitvoering van een enclave onderbreken met hardware-uitzonderingen configureerbaar. Deze functie staat enclave-runtimes toe om exception handling te implementeren of signaalverwerking binnen de enclave, maar het kan ook terugkeerfouten veroorzaken. De SmashEx-aanval is gebaseerd op het misbruiken van fouten in de SDK omdat de herhaalde oproepsituatie van de uitzonderingsbehandelaar niet correct wordt afgehandeld. Het is belangrijk dat om de kwetsbaarheid te misbruiken, de aanvaller de uitvoering van de enclave moet kunnen onderbreken, dat wil zeggen dat hij het werk van de systeemomgeving moet beheersen.

Na het gooien van een uitzondering krijgt de aanvaller een klein tijdvenster waarbij het mogelijk is om de uitvoeringsstroom te onderscheppen door de invoerparameters te manipuleren. Met name als u toegang heeft tot het systeem (de omgeving buiten de enclave), kunt u direct na het uitvoeren van de instructie om de enclave binnen te gaan (EENTER) een nieuwe uitzondering maken, wat zal leiden tot de terugkeer van de controle over het systeem op de fase waarin De stapelconfiguratie voor de enclave nog niet is voltooid, wordt de status van de CPU-registers opgeslagen.

Het systeem kan dan de controle teruggeven aan de enclave, Maar aangezien de enclave-stack niet was geconfigureerd op het moment van de onderbreking, wordt de enclave uitgevoerd met de stack die zich in het systeemgeheugen bevindt, dat kan worden gebruikt om ROP-exploitatietechnieken (return-oriented programming) toe te passen. georiënteerd programmeren).

Bij gebruik van de ROP-techniek probeert de aanvaller zijn code niet in het geheugen te zetten, maar werkt hij op de delen van de machine-instructies die al beschikbaar zijn in de geladen bibliotheken, eindigend met een control return-instructie (in de regel zijn dit het einde van de functiebibliotheek). Het werk van de exploit is beperkt tot het bouwen van een keten van oproepen naar vergelijkbare blokken ("gadgets") om de vereiste functionaliteit te verkrijgen.

Exploit-prototypes bereiden zich voor op enclaves met runtime gebaseerd op Intel SGX-SDK (CVE-2021-0186) en Microsoft OpenEnclave (CVE-2021-3376).

In het eerste geval werd de mogelijkheid aangetoond om de RSA-sleutel te extraheren die in de webserver voor HTTPS werd gebruikt, en in het tweede geval was het mogelijk om de inhoud te bepalen die werd ontvangen door het cURL-hulpprogramma dat in de enclave draait.

De kwetsbaarheid is al verholpen in software op Intel SGX SDK 2.13 en Open Enclave 0.17.1 versies.

bron: https://jasonyu1996.github.io


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.