Eine Schwachstelle in KVM ermöglicht die Codeausführung außerhalb des Gastsystems auf AMD-Prozessoren

Forscher des Google Project Zero-Teams enthüllten vor einigen Tagen in einem Blogbeitrag, dass haben eine Schwachstelle (CVE-2021-29657) im KVM-Hypervisor identifiziert (ein Open-Source-Linux-basierter Hypervisor, der hardwarebeschleunigte Virtualisierung auf x86, ARM, PowerPC und S/390 unterstützt) ermöglicht es Ihnen, die Isolation des Gastsystems zu vermeiden und führen Sie Ihren Code auf der Seite der Hostumgebung aus.

Der Beitrag erwähnt, dass das Problem Manifeste von Linux-Kernel 5.10-rc1 bis v5.12-rc6, dh deckt nur die Kernel 5.10 und 5.11 . ab (Die meisten stabilen Distributionszweige waren von dem Problem nicht betroffen.) Das Problem liegt im nested_svm_vmrun-Mechanismus vor, der mit der AMD SVM (Secure Virtual Machine)-Erweiterung implementiert wurde und den verschachtelten Start von Gastsystemen ermöglicht.

In diesem Blogbeitrag beschreibe ich eine Schwachstelle im AMD-spezifischen KVM-Code und erörtere, wie dieser Fehler zu einer kompletten Flucht der virtuellen Maschine werden kann. Soweit ich weiß, ist dies der erste öffentliche Bericht über einen KVM-Gast-zu-Host-Breakout, der nicht auf Fehlern in User-Space-Komponenten wie QEMU beruht.

Der besprochene Fehler wurde CVE-2021-29657 zugewiesen, betrifft die Kernel-Versionen v5.10-rc1 bis v5.12-rc6 und wurde Ende März 2021 gepatcht. Da der Fehler erst in v5.10 ausnutzbar wurde und etwa 5 Monate später entdeckt wurde, sollten die meisten realen KVM-Bereitstellungen nicht betroffen sein. Ich denke immer noch, dass das Problem eine interessante Fallstudie in der Arbeit ist, die erforderlich ist, um eine stabile Gast-zu-Host-Flucht gegen KVM aufzubauen, und ich hoffe, dass dieser Artikel dazu beitragen kann, dass Hypervisor-Kompromisse nicht nur theoretische Probleme sind.

Die Forscher erwähnen, dass für die korrekte Implementierung dieser Funktionalität der Hypervisor muss alle SVM-Anweisungen abfangen auf Gastsystemen laufen, sein Verhalten emulieren und den Zustand mit der Hardware synchronisieren, was eine ziemlich schwierige Aufgabe ist.

Nach der Analyse der vorgeschlagenen KVM-Implementierung haben die Forschers ist auf einen logischen Fehler gestoßen, der den Inhalt des MSR (Modellspezifische Registrierung) des Hosts vom Gastsystem beeinflusst werden, die zum Ausführen von Code auf Hostebene verwendet werden kann.

Insbesondere die Ausführung einer VMRUN-Operation von einem zweiten verschachtelten Gast (L2 wird von einem anderen Gast gestartet) führt zu einem zweiten Aufruf von nested_svm_vmrun und beschädigt die svm-> nested.hsave-Struktur, die mit Daten von vmcb vom L2-Gastsystem überlagert wird .

Dadurch entsteht eine Situation, in der es auf L2-Gast-Ebene möglich ist, in der Struktur svm->nested.msrpm, die das MSR-Bit speichert, obwohl es weiterhin verwendet wird, Speicher freizugeben und auf das MSR des Hosts zuzugreifen Umwelt. .

Dies bedeutet zum Beispiel, dass der Speicher eines Gasts durch Dumping des zugewiesenen Speichers seines User-Space-Prozesses überprüft werden kann oder dass Ressourcenlimits für CPU-Zeit und Speicher einfach durchgesetzt werden können. 

Darüber hinaus kann KVM den Großteil der Arbeit im Zusammenhang mit der Geräteemulation auf die User-Space-Komponente auslagern.

Das Problem ist im Code vorhanden, der auf Systemen mit AMD-Prozessoren verwendet wird (kvm-amd.ko-Modul) und tritt auf Intel-Prozessoren nicht auf.

 Abgesehen von einigen leistungsempfindlichen Geräten im Zusammenhang mit der Interrupt-Behandlung kann der gesamte komplexe Low-Level-Code zur Bereitstellung des Zugriffs auf virtuelle Festplatten, Netzwerke oder GPUs im Benutzerbereich bereitgestellt werden.  

Die Forscher neben der Beschreibung des Problems Sie haben auch einen funktionierenden Prototyp eines Exploits vorbereitet Dies ermöglicht das Ausführen einer Root-Shell von einer Gastumgebung in einer Hostumgebung auf einem System mit einem AMD Epyc 7351P-Prozessor und einem Linux 5.10-Kernel.

Es wird beobachtet, dass Dies ist der erste Gast, der eine Sicherheitslücke im KVM-Hypervisor hostet selbst, hat nichts mit Fehlern in Userspace-Komponenten wie QEMU zu tun. Der Fix wurde Ende März in den Kernel übernommen.

Schließlich wenn Sie mehr darüber wissen möchten Über die Notiz können Sie die Details überprüfen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.