Ich betreibe eine virtuelle Maschine/Container. Inwieweit bin ich anfällig?

Ich betreibe eine virtuelle Maschine/Container. Inwieweit bin ich anfällig?

Ist es möglich, dass eine virtuelle Maschine wie VirtualBox die Sicherheitslücke „Spectre“ aufweist? Ich denke, die VM führt möglicherweise eine Out-of-Order-Ausführung durch, aber meiner Meinung nach ist es nicht möglich, einen Blick in den Cache zu werfen, um das Ergebnis zu lesen.

Gibt es eine Erklärung, wie es möglich ist, den Cache einer virtuellen CPU zu lesen?

Antwort1

Ja, Spectre kann die Grenzen zwischen Host/Gast, Gast/Host und Gast/Gast überschreiten, da es sich hierbei um einen Fehler auf CPU-Ebene handelt und potenziell vertrauliche Informationen auf alles, was auf einem CPU-Kern ausgeführt wird, durchsickern können.

In den meisten Nachrichten im Internet heißt es, dass die Cloud-Anbieter davon am schlimmsten betroffen seien, da sie über riesige Cluster virtualisierter Systeme verfügen, die möglicherweise zum Abfluss vertraulicher Informationen missbraucht werden könnten.

Bei den meisten großen Anbietern dürften die Schwachstellen mittlerweile so gut wie möglich behoben sein, aber dieses Problem wird uns noch einige Zeit beschäftigen.

Security.SE hat einekanonische Fragen und Antwortendiesbezüglich und es werden VMs erwähnt:

Ich betreibe eine virtuelle Maschine/Container. Inwieweit bin ich anfällig?

GemäßAntwort von Steffen Ullrich

  • Meltdown-Angriffe überschreiten keine VMs, sondern geben nur Kernelspeicher an lokale Prozesse weiter.
  • Spectre kann VM-übergreifend arbeiten.

Auch vonNochmal Steffen, Meltdown und Spectre funktionieren mit Containern, da Container auf den Host-Kernel angewiesen sind.

VMs verwenden die tatsächliche CPU in Ihrem System, wobei einige privilegierte Anweisungen abgefangen und umgeleitet werden können. Sie verwenden dieselben Caches und Anweisungen wie der Host. Im Wesentlichen handelt es sich lediglich um eine weitere Schicht innerhalb der physischen CPU in Ihrem System.

Virtualisierung ist nur deshalb schnell, weil sie die physische CPU mit so wenig Abstraktion wie möglich nutzt und sich auf die CPU-Hardware verlässt, um Isolation zu gewährleisten. Dinge wie qemu könnenEmulationDas wäre sicherer, da es sich nicht um eine Hardware-CPU handelt, aber es istviellangsamer und unterscheidet sich von der Virtualisierung.

Von demKanonischer Beitrag von Security.sewieder:

Spectre arbeitet auf einer anderen Ebene und erlaubt keinen Zugriff auf Daten im Kernel-Space vom User-Space aus. Bei diesem Angriff trickst der Angreifer die spekulative Ausführung aus, um Anweisungen fälschlicherweise vorherzusagen. Kurz gesagt wird der Prädiktor gezwungen, ein bestimmtes Verzweigungsergebnis vorherzusagen (if -> true), was dazu führt, dass ein Speicherzugriff außerhalb der Grenzen angefordert wird, den der Opferprozess normalerweise nicht angefordert hätte, was zu einer falschen spekulativen Ausführung führt. Dann wird über den Nebenkanal der Wert dieses Speichers abgerufen. Auf diese Weise wird Speicher, der dem Opferprozess gehört, an den bösartigen Prozess weitergegeben.

Da die VM auf tatsächlicher CPU-Hardware läuft, muss sie lediglich eine bestimmte Schleife ausführen, um die spekulative Ausführungs-Engine zu „trainieren“. Anschließend kann sie mithilfe präziser Zeitmessung die Caches auf bestimmte Zugriffsmuster überwachen, die auf den Host- oder Gastprozess (oder einen anderen VM-Prozess) hinweisen, den sie ausnutzen möchte.

Auf diese Weise bedeutet dies, dass eine Maschine von allen Seiten angreifbar ist. Vom Host zur VM, von VM zum Host und von VM zu VM.

Ja, es ist keineswegs einfach und schwierig durchzuziehen, da der VM-CPU-Kern nach Lust und Laune des Hosts geändert werden könnte und der Host Aufgaben auch problemlos auf anderen Kernen planen könnte, aber über einen langen Zeitraum könnten genügend Informationen durchsickern, um einen geheimen Schlüssel zu einem wichtigen System oder Konto preiszugeben. Mit genügend Zeit und einer entsprechend versteckten Software ist potenziell alles offen.

Wenn Sie eine „sichere“ VM möchten, müssen Sie garantieren, dass ihre Kerne isoliert sind. Die einzige wirkliche Möglichkeit, diesen Angriff zu blockieren, besteht darin, den Host und die VMs zu „zwingen“, nur bestimmte Kerne zu verwenden, sodass sie nie auf derselben Hardware ausgeführt werden. Dies würde jedoch zu einer effektiven Kostensteigerung führen, da Sie nicht so viele VMs auf einem bestimmten Host haben könnten. Sie würden nie damit durchkommen, mehr VMs auszuführen, als Ihnen Kerne zur Verfügung stehen, was ich auf Servern mit „geringer Auslastung“ erwarten würde, da viele Systeme 90 % ihrer Lebensdauer im Leerlauf verbringen.

Antwort2

Der Gem5-Simulator simuliert die CPU-Mikroarchitektur und kann zum Studium von Spectre verwendet werden.

Wenn Sie daran interessiert sind, Schwachstellen rein durch Emulation zu untersuchen/reproduzieren, ohne die Host-CPU zu verwenden, ist QEMU meiner Meinung nach nicht detailliert genug, um sie zu beobachten, da es die CPU-Pipeline nicht simuliert.

gem5wird jedoch verwendet, um die Systemleistung in Forschung und Entwicklung abzuschätzen und simuliert genügend CPU-Interna, damit Sie Spectre in einer vollständig sauberen und kontrollierten Umgebung beobachten können.

Eine coole x86_64-Demo mit Visualisierung wurde veröffentlicht unter:http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

Der Nachteil von Gem5 besteht darin, dass es viel langsamer als QEMU ist, die Simulation ist jedoch detaillierter.

verwandte Informationen