Angriff auf Intel SGX, der das Auslesen vertraulicher Daten oder das Ausführen von Code im Enklave ermöglicht

Forscher der Nationalen Universität der Volksbefreiungsarmee Chinas, der Nationalen Universität Singapur und der ETH Zürich haben eine neue Angriffsmethode auf die isolierten Enklaven von Intel SGX (Software Guard eXtensions) entwickelt. Der Angriff trägt den Namen SmashEx und wird durch Probleme mit der Reentrierbarkeit bei der Verarbeitung von Ausnahmen während der Ausführung von Runtime-Komponenten für Intel SGX hervorgerufen. Die vorgeschlagene Angriffsmethode ermöglicht es, bei Kontrolle über das Betriebssystem vertrauliche Daten, die in der Enklave gespeichert sind, zu identifizieren oder eigenen Code in den Speicher der Enklave zu kopieren und auszuführen.

Prototypen von Exploits wurden für Enklaven mit Laufzeit auf Basis des Intel SGX SDK (CVE-2021-0186) und Microsoft Open Enclave (CVE-2021-33767) vorbereitet. Im ersten Fall wurde die Möglichkeit demonstriert, den RSA-Schlüssel, der auf dem Webserver für HTTPS verwendet wird, zu extrahieren, während im zweiten Fall der Inhalt der von der cURL-Utility innerhalb der Enklave erhaltenen Daten bestimmt werden konnte. Die Schwachstelle wurde bereits softwareseitig in den Versionen Intel SGX SDK 2.13 und Open Enclave 0.17.1 behoben. Neben den Paketen Intel SGX SDK und Microsoft Open Enclave tritt die Schwachstelle auch in den SDKs von Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX und Veracruz auf.

Es sei daran erinnert, dass die SGX-Technologie (Software Guard Extensions) in den Intel Core Prozessoren der sechsten Generation (Skylake) eingeführt wurde. Sie bietet eine Reihe von Anweisungen, die es ermöglichen, geschützte Speicherbereiche – Enklaven – für Anwendungen auf Benutzerebene zu schaffen. Der Inhalt dieser Enklaven kann nicht einmal von dem Kernel oder Code, der in den Modi Ring 0, SMM und VMM ausgeführt wird, eingesehen oder verändert werden. Es ist nicht möglich, die Kontrolle über den Code in einer Enklave durch traditionelle Sprungfunktionen oder Register- und Stack-Manipulationen zu übergeben – zur Übergabe der Kontrolle in einer Enklave werden speziell entwickelte neue Anweisungen wie EENTER, EEXIT und ERESUME verwendet, die eine Berechtigungsüberprüfung durchführen. Der in der Enklave platzierte Code kann jedoch klassische Aufrufmethoden nutzen, um Funktionen innerhalb der Enklave aufzurufen, sowie eine spezielle Anweisung, um externe Funktionen zu erreichen. Zum Schutz vor Hardwareangriffen, wie dem Zugriff auf den DRAM-Modul, wird die Speicherverlagerung der Enklave verschlüsselt.

Angriff auf Intel SGX, der das Auslesen vertraulicher Daten oder das Ausführen von Code im Enklave ermöglicht

Das Problem liegt darin, dass die SGX-Technologie dem Betriebssystem erlaubt, die Ausführung eines Enklaves durch das Generieren einer Hardwareausnahme zu unterbrechen. Innerhalb der Enklaven sind jedoch die benötigten primitiven Operationen für die atomare Behandlung solcher Ausnahmen nicht ordnungsgemäß implementiert. Im Gegensatz zum Betriebssystemkern und regulären Anwendungen hat der Code innerhalb der Enklaven keinen Zugriff auf primitive Mechanismen, um atomare Aktionen während der Behandlung von asynchronen Ausnahmen zu organisieren. Ohne diese atomaren Primitiven kann der Enklave jederzeit unterbrochen und die Ausführung fortgesetzt werden, selbst in Momenten, in denen kritische Abschnitte im Enklave ausgeführt werden und sich in einem unsicheren Zustand befinden (zum Beispiel, wenn die CPU-Register nicht gesichert oder wiederhergestellt wurden).

Angriff auf Intel SGX, der das Auslesen vertraulicher Daten oder das Ausführen von Code im Enklave ermöglicht

Für ein einwandfreies Funktionieren ermöglicht die SGX-Technologie das Unterbrechen der Ausführung eines Enklaven durch konfigurierbare Hardware-Ausnahmen. Diese Funktion erlaubt es den Runtime-Umgebungen der Enklaven, die Verarbeitung von inner-enklaven Ausnahmen oder Signalen durchzuführen, kann jedoch auch Reentranzfehler auslösen. Der SmashEx-Angriff basiert auf der Ausnutzung von Schwachstellen im SDK, wodurch die Situation des wiederholten Aufrufs des Ausnahmebehandlers nicht ordnungsgemäß verarbeitet wird. Wichtig ist, dass der Angreifer die Fähigkeit haben muss, die Ausführung des Enklaven zu unterbrechen, d.h. er muss die Kontrolle über die Systemumgebung haben.

Nach der Auslösung einer Ausnahme hat der Angreifer ein kleines Zeitfenster, in dem er den Ausführungsfluss durch Manipulation der Eingabeparameter abfangen kann. Insbesondere mit Zugang zum System (Umgebung außerhalb des Enclaves) kann eine neue Ausnahme direkt nach der Ausführung des Enclave-Einstiegsbefehls (EENTER) erzeugt werden, was dazu führt, dass die Kontrolle an das System zurückgegeben wird, während die Konfiguration des Stacks für das Enclave noch nicht abgeschlossen ist, einschließlich des Speicherns des Zustands der CPU-Register.

Das System kann die Kontrolle dann wieder an den Enklave zurückgeben. Da jedoch der Enklaven-Stack zur Zeit der Unterbrechung nicht eingerichtet war, wird die Enklave mit dem Stack ausgeführt, der im Systemspeicher vorhanden ist. Dies kann zur Anwendung von Exploitation-Methoden auf Basis der Rückgabe-orientierten Programmierung (ROP – Return-Oriented Programming) genutzt werden. Bei der Verwendung der ROP-Technik versucht der Angreifer nicht, seinen eigenen Code im Speicher zu platzieren, sondern nutzt vorhandene Blöcke von Maschinenanweisungen in geladenen Bibliotheken, die mit einer Rückgabeanweisung enden (normalerweise sind dies Enden von Bibliotheksfunktionen). Die Funktionsweise des Exploits besteht darin, eine Kette von Aufrufen solcher Blöcke („Gadgets“) zu erstellen, um die gewünschte Funktionalität zu erreichen.

Angriff auf Intel SGX, der das Auslesen vertraulicher Daten oder das Ausführen von Code im Enklave ermöglicht
Angriff auf Intel SGX, der das Auslesen vertraulicher Daten oder das Ausführen von Code im Enklave ermöglicht


Quelle: opennet.ru
Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster