Angriff auf Intel SGX, um vertrauliche Daten zu extrahieren oder Code in einer Enklave auszuführen

Forscher der Defence Science and Technology University der Volksbefreiungsarmee Chinas, der National University of Singapore und der ETH Zürich haben eine neue Angriffsmethode gegen isolierte Intel SGX (Software Guard eXtensions)-Enklaven entwickelt. Der Angriff hieß SmashEx und wurde durch Wiedereintrittsprobleme bei der Behandlung von Ausnahmen während des Betriebs von Laufzeitkomponenten für Intel SGX verursacht. Die vorgeschlagene Angriffsmethode ermöglicht es, bei Kontrolle über das Betriebssystem vertrauliche Daten zu ermitteln, die sich in der Enklave befinden, oder das Kopieren des eigenen Codes in den Speicher der Enklave und dessen Ausführung zu organisieren.

Exploit-Prototypen wurden für Laufzeit-Enklaven basierend auf Intel SGX SDK (CVE-2021-0186) und Microsoft Open Enclave (CVE-2021-33767) vorbereitet. Im ersten Fall wurde die Möglichkeit demonstriert, den auf dem Webserver für HTTPS verwendeten RSA-Schlüssel zu extrahieren, und im zweiten Fall war es möglich, den Inhalt zu ermitteln, den das in der Enklave ausgeführte cURL-Dienstprogramm erhalten hatte. Die Schwachstelle wurde bereits programmgesteuert in den Versionen Intel SGX SDK 2.13 und Open Enclave 0.17.1 behoben. Neben dem Intel SGX SDK und Microsoft Open Enclave tritt die Schwachstelle auch im Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX und Veracruz auf.

Denken Sie daran, dass die SGX-Technologie (Software Guard Extensions) in den Intel Core-Prozessoren der sechsten Generation (Skylake) erschien und eine Reihe von Anweisungen bietet, die es Anwendungen auf Benutzerebene ermöglichen, geschlossene Speicherbereiche zuzuweisen – Enklaven, deren Inhalte nicht einmal von ihnen gelesen und geändert werden können Kernel und Code, der im Ring0-, SMM- und VMM-Modus ausgeführt wird. Es ist unmöglich, die Kontrolle über herkömmliche Sprungfunktionen und Manipulationen mit Registern und dem Stapel an den Code in der Enklave zu übertragen. Zur Übertragung der Kontrolle an die Enklave, die Autorisierungsprüfungen durchführt, werden speziell erstellte neue Anweisungen EENTER, EEXIT und ERESUME verwendet. In diesem Fall kann der in der Enklave platzierte Code die klassischen Aufrufmethoden zum Aufrufen von Funktionen innerhalb der Enklave und eine spezielle Anweisung zum Aufrufen externer Funktionen verwenden. Die Enclave-Speicherverschlüsselung dient zum Schutz vor Hardwareangriffen wie DRAM-Verbindungen.

Angriff auf Intel SGX, um vertrauliche Daten zu extrahieren oder Code in einer Enklave auszuführen

Das Problem besteht darin, dass die SGX-Technologie es dem Betriebssystem ermöglicht, die Ausführung der Enklave zu unterbrechen, indem es eine Hardware-Ausnahme auslöst, und Enklaven Grundelemente für die atomare Behandlung solcher Ausnahmen nicht ordnungsgemäß implementieren. Anders als der Betriebssystemkernel und normale Anwendungen hat der Code in Enklaven keinen Zugriff auf Grundelemente zum Organisieren atomarer Aktionen während der Behandlung asynchron ausgelöster Ausnahmen. Ohne die angegebenen atomaren Grundelemente kann die Enklave jederzeit unterbrochen und zur Ausführung zurückgeführt werden, selbst zu Zeiten, in denen kritische Abschnitte in der Enklave ausgeführt werden und sie sich in einem unsicheren Zustand befindet (z. B. wenn CPU-Register nicht gespeichert/wiederhergestellt werden). .

Angriff auf Intel SGX, um vertrauliche Daten zu extrahieren oder Code in einer Enklave auszuführen

Im Normalbetrieb können Sie mit der SGX-Technologie die Ausführung der Enklave mit konfigurierbaren Hardware-Ausnahmen unterbrechen. Mit dieser Funktion können Enklave-Laufzeiten die Ausnahmebehandlung oder Signalbehandlung innerhalb der Enklave implementieren, sie kann jedoch auch zu Wiedereintrittsfehlern führen. Der SmashEx-Angriff basiert auf der Ausnutzung von Fehlern im SDK, aufgrund derer die Situation eines erneuten Aufrufs des Ausnahmehandlers nicht ordnungsgemäß gehandhabt wird. Wichtig ist, dass der Angreifer zum Ausnutzen der Schwachstelle in der Lage sein muss, die Ausführung der Enklave zu unterbrechen, d. h. muss den Betrieb der Systemumgebung steuern.

Nach dem Auslösen einer Ausnahme erhält der Angreifer ein kleines Zeitfenster, in dem es möglich ist, den Ausführungsfluss durch Manipulation der Eingabeparameter abzufangen. Insbesondere wenn Sie Zugriff auf das System (Umgebung außerhalb der Enklave) haben, können Sie unmittelbar nach der Ausführung der Anweisung zum Betreten der Enklave (EENTER) eine neue Ausnahme erstellen, die in der Phase der Stack-Konfiguration die Kontrolle an das System zurückgibt für die Enklave ist noch nicht abgeschlossen, in dieser Nummer wird der Status der CPU-Register gespeichert.

Das System kann dann die Kontrolle wieder an die Enklave zurückgeben, aber da der Enklave-Stack zum Zeitpunkt des Interrupts nicht konfiguriert war, wird die Enklave mit dem Stack ausgeführt, der sich im Systemspeicher befindet, was zur Anwendung von Return-Oriented Programming (ROP) verwendet werden kann ) Techniken. orientierte Programmierung). Bei Verwendung der ROP-Technik versucht der Angreifer nicht, seinen Code im Speicher abzulegen, sondern operiert mit den bereits in den geladenen Bibliotheken verfügbaren Teilen der Maschinenanweisungen und endet mit einer Steuerrückgabeanweisung (in der Regel sind dies die Endungen der Bibliothek). Funktionen). Bei der Funktionsweise des Exploits geht es darum, eine Kette von Aufrufen ähnlicher Blöcke („Gadgets“) aufzubauen, um die gewünschte Funktionalität zu erhalten.

Angriff auf Intel SGX, um vertrauliche Daten zu extrahieren oder Code in einer Enklave auszuführen
Angriff auf Intel SGX, um vertrauliche Daten zu extrahieren oder Code in einer Enklave auszuführen


Source: opennet.ru

Kommentar hinzufügen