Forscher des Helmholtz-Zentrums für Informationssicherheit (CISPA) haben eine neue Angriffsmethode namens CacheWarp veröffentlicht, die es ermöglicht, den Schutzmechanismus AMD SEV (Secure Encrypted Virtualization) zu kompromittieren. Dieser wird in Virtualisierungssystemen eingesetzt, um virtuelle Maschinen vor Zugriffen durch Hypervisor oder Administratoren des Host-Systems zu schützen. Mit der vorgeschlagenen Methode kann ein Angreifer, der Zugang zum Hypervisor hat, die Ausführung von fremdem Code und das Erlangen von höheren Rechten in einer durch AMD SEV geschützten virtuellen Maschine erreichen.
Der Angriff basiert auf einer Schwachstelle (CVE-2023-20592), die durch einen fehlerhaften Umgang mit dem Cache während der Ausführung der Prozessoranweisung INVD verursacht wird. Dadurch kann es zu einer Inkonsistenz zwischen den Daten im Speicher und dem Cache kommen, was es ermöglicht, die Integritätsmechanismen der virtuellen Maschinen zu umgehen, die auf den SEV-ES- und SEV-SNP-Erweiterungen basieren. Die Schwachstelle betrifft AMD EPYC-Prozessoren der ersten bis dritten Generation.
Für die AMD EPYC-Prozessoren der dritten Generation (Zen 3) wurde das Problem durch das gestern von AMD veröffentlichte November-Mikrocode-Update behoben (die Behebung führt nicht zu einer Verringerung der Leistung). Für die erste und zweite Generation der AMD EPYC-Prozessoren (Zen 1 und Zen 2) ist kein Schutz vorgesehen, da diese CPUs die SEV-SNP-Erweiterung zur Integritätskontrolle nicht unterstützen. virtuellen MaschinenDie vierte Generation der AMD EPYC-Prozessoren "Genoa" basierend auf der Mikroarchitektur "Zen 4" ist von dieser Sicherheitsanfälligkeit nicht betroffen.
Die AMD SEV-Technologie wird zur Isolierung virtueller Maschinen von Cloud-Dienstanbietern wie Amazon Web Services (AWS), Google Cloud, Microsoft Azure und Oracle Compute Infrastructure (OCI) eingesetzt. Der Schutz durch AMD SEV wird durch hardwarebasiertes Verschlüsseln des Speichers virtueller Maschinen realisiert. Zusätzlich wird der Schutz der CPU-Register durch die SEV-ES (Encrypted State)-Erweiterung implementiert. Nur das aktuelle Gastbetriebssystem hat Zugriff auf die entschlüsselten Daten, während andere virtuelle Maschinen und der Hypervisor beim Versuch, auf diesen Speicher zuzugreifen, eine verschlüsselte Datenmenge erhalten.
In der dritten Generation der AMD EPYC-Prozessoren wurde eine erweiterte Funktion namens SEV-SNP (Secure Nested Paging) implementiert, die eine sichere Bearbeitung von geschachtelten Speichertabellen ermöglicht. Neben der allgemeinen Speicherverschlüsselung und der Isolation von Registern bietet SEV-SNP zusätzliche Mittel zum Schutz der Speicherkonstanz, die Änderungen an der VM durch den Hypervisor verhindern. Die Verwaltung der Verschlüsselungsschlüssel erfolgt über den integrierten, chipseitigen Platform Security Processor (PSP), der auf der ARM-Architektur basiert.
Der Kern der vorgeschlagenen Angriffsmethode besteht darin, die INVD-Anweisung zu nutzen, um Blöcke (Zeilen) im Cache von schmutzigen Seiten zu löschen, ohne die im Cache gesammelten Daten im Speicher (write-back) zurückzusetzen. Dadurch ermöglicht die Methode, geänderte Daten aus dem Cache zu verdrängen, ohne den Zustand des Speichers zu ändern. Für den Angriff wird empfohlen, Softwareausnahmen (Fault Injection) zu nutzen, um die Ausführung der virtuellen Maschine an zwei Stellen zu unterbrechen: An der ersten Stelle ruft der Angreifer die Anweisung „wbnoinvd“ auf, um alle im Cache angesammelten Schreiboperationen in den Speicher zurückzusetzen, und an der zweiten Stelle ruft er die Anweisung „invd“ auf, um nicht im Speicher reflektierte Schreiboperationen in ihren alten Zustand zurückzuversetzen.
Um die Systeme auf Schwachstellen zu überprüfen, wurde ein Prototyp eines Exploits veröffentlicht, der eine Ausnahme in einer durch AMD SEV geschützten virtuellen Maschine auslösen kann und es ermöglicht, nicht in den Speicher zurückgegebene Änderungen in der VM auf einen vorherigen Zustand zurückzusetzen. Dieser Rollback kann verwendet werden, um den Programmfluss zu verändern, indem die alte Rücksprungadresse im Stack zurückgegeben wird, oder zum Eingeben von Parametern eines alten Sitzung, für die zuvor eine Authentifizierung durchgeführt wurde, indem der Wert des Authentifizierungsflags zurückgegeben wird.
Forscher haben beispielsweise demonstriert, wie die Methode CacheWarp verwendet werden kann, um einen Bellcore-Angriff auf die Implementierung des RSA-CRT-Algorithmus in der ipp-crypto-Bibliothek auszuführen, was es ermöglichte, den privaten Schlüssel durch Fehlerersetzung bei der Berechnung einer digitalen Signatur wiederherzustellen. Darüber hinaus wurde gezeigt, wie man die Parameter der Sitzungsprüfung für OpenSSH bei der Remote-Verbindung zu einem Gast-System manipulieren kann, um dann den Prüfstatus beim Ausführen des sudo-Tools zu ändern und Root-Rechte in Ubuntu 20.04 zu erlangen. Der Exploit wurde auf Systemen mit AMD EPYC 7252, 7313P und 7443-CPUs getestet.
Quelle: opennet.ru
