Ein Angriff auf Intel SGX, der es ermöglicht, vertrauliche Daten zu extrahieren oder Code im Enklave auszuführen.

Forscher der Verteidigungswissenschaftlich-Technischen Universität der Volksbefreiungsarmee Chinas, der National University of Singapore und der ETH Zürich haben eine neue Angriffs-Methode auf isolierte Intel SGX (Software Guard eXtensions) Enklaven entwickelt. Der Angriff, genannt SmashEx, wurde durch Probleme mit der Reentranzfähigkeit bei der Behandlung von Ausnahmen während der Ausführung von Runtime-Komponenten für Intel SGX verursacht. Die vorgeschlagene Angriffsmethode ermöglicht es, bei Kontrolle des Betriebssystems vertrauliche Daten im Enklave zu identifizieren oder den eigenen Code in den Speicher des Enklaven zu kopieren und auszuführen.

Prototypen von Exploits wurden für Enklaven mit Runtime auf Basis von Intel SGX SDK (CVE-2021-0186) und Microsoft Open Enclave (CVE-2021-33767) vorbereitet. Im ersten Fall wurde die Möglichkeit gezeigt, den auf dem Webserver für HTTPS verwendeten RSA-Schlüssel zu extrahieren, während im zweiten Fall der Inhalt, der von der Utility cURL innerhalb des Enklaven empfangen wurde, identifiziert 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 zeigt die Schwachstelle auch Auswirkungen im SDK von Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX und Veracruz.

Wir erinnern daran, dass die SGX-Technologie (Software Guard Extensions) in den Intel Core Prozessoren der sechsten Generation (Skylake) eingeführt wurde und eine Reihe von Anweisungen anbietet, die es ermöglichen, geschützte Speicherbereiche — Enklaven — für Anwendungen auf Benutzerebene zuzuweisen, deren Inhalte selbst von Kerben und Code, der in den Modi ring0, SMM und VMM ausgeführt wird, nicht gelesen oder geändert werden können. Die Kontrolle an den Code im Enklave kann nicht mit herkömmlichen Sprungfunktionen und durch Manipulation von Registern und dem Stack übergeben werden — zur Übergabe der Kontrolle an den Enklave werden speziell entwickelte neue Anweisungen EENTER, EEXIT und ERESUME verwendet, die eine Berechtigungsprüfung durchführen. Dabei kann der im Enklave platzierte Code klassische Aufrufmethoden verwenden, um auf Funktionen innerhalb des Enklaven zuzugreifen, sowie eine spezielle Anweisung, um externe Funktionen aufzurufen. Zum Schutz vor Hardware-Angriffen, wie dem Anschluss an das DRAM-Modul, wird die Enklaven-Speicherverschlüsselung verwendet.

Ein Angriff auf Intel SGX, der es ermöglicht, vertrauliche Daten zu extrahieren oder Code im Enklave auszuführen.

Das Problem liegt darin, dass die SGX-Technologie es dem Betriebssystem ermöglicht, die Ausführung des Enklaven durch die Erzeugung einer Hardware-Ausnahme zu unterbrechen, während in den Enklaven die primitiven Operationen für die atomare Verarbeitung solcher Ausnahmen nicht ordnungsgemäß implementiert sind. Im Gegensatz zum Betriebssystemkernel und regulären Anwendungen hat der Code innerhalb der Enklaven keinen Zugriff auf die primitiven Operationen zur Organisation atomarer Aktionen während der Verarbeitung asynchron auftretender Ausnahmen. Ohne die genannten atomaren Primitiven kann die Enklave jederzeit unterbrochen und die Ausführung wieder aufgenommen werden, selbst in Momenten, in denen in der Enklave kritische Abschnitte ausgeführt werden und sie sich in einem unsicheren Zustand befindet (zum Beispiel, wenn die CPU-Register nicht gespeichert/wiederhergestellt sind).

Ein Angriff auf Intel SGX, der es ermöglicht, vertrauliche Daten zu extrahieren oder Code im Enklave auszuführen.

Für das ordnungsgemäße Funktionieren ermöglicht die SGX-Technologie, die Ausführung der Enklave durch konfigurierbare Hardware-Ausnahmen zu unterbrechen. Diese Funktion erlaubt es den Runtime-Umgebungen der Enklaven, die Verarbeitung von innerhalb der Enklave auftretenden Ausnahmen oder von Signalen zu implementieren, kann jedoch auch Re-Entrante-Fehler hervorrufen. Der SmashEx-Angriff basiert auf der Ausnutzung von Mängeln im SDK, aufgrund derer die Situation des wiederholten Aufrufs des Ausnahmebehandlers nicht ordnungsgemäß behandelt wird. Es ist wichtig, dass der Angreifer zur Ausnutzung der Schwachstelle die Kontrolle über die Ausführung der Enklave haben muss, d. h. er muss die Kontrolle über das Systemumfeld haben.

Nach der Erzeugung einer Ausnahme erhält der Angreifer ein kleines Zeitfenster, in dem er den Ausführungsfluss durch Manipulation der Eingabeparameter abfangen kann. Insbesondere wenn Zugang zum System (Umgebung außerhalb der Enklave) besteht, kann er eine neue Ausnahme sofort nach der Ausführung der Enklave-Eintrittsinst instruction (EENTER) erzeugen, was dazu führt, dass die Steuerung an das System auf der Stufe zurückgegeben wird, an der die Stack-Konfiguration für die Enklave noch nicht abgeschlossen ist, in der unter anderem der Zustand der CPU-Register gespeichert wird.

Das System kann dann die Kontrolle zurück an den Enklave übergeben, da der Enklave-Stack während der Unterbrechung jedoch nicht eingerichtet wurde, wird der Enklave mit dem Stack, der im Systemspeicher vorhanden ist, ausgeführt, was für die Anwendung von Exploits auf Basis von Return-Oriented Programming (ROP) verwendet werden kann. Bei der Anwendung der ROP-Technik versucht der Angreifer nicht, seinen eigenen Code im Speicher zu platzieren, sondern arbeitet mit bereits vorhandenen Maschineninstruktionen in den geladenen Bibliotheken, die mit einer Rückgabebefehl enden (in der Regel die 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 erhalten.

Ein Angriff auf Intel SGX, der es ermöglicht, vertrauliche Daten zu extrahieren oder Code im Enklave auszuführen.
Ein Angriff auf Intel SGX, der es ermöglicht, vertrauliche Daten zu extrahieren oder Code im Enklave auszuführen.


Quelle: opennet.ru
60GB SSD 8Gb DDR4