Kann sich die Sicherheitslücke durch Spectre in einer virtuellen Maschine befinden?

1922
jms

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, den Cache zu lesen, um das Ergebnis zu lesen.

Gibt es eine Erklärung, wie der Cache einer virtuellen CPU gelesen werden kann?

13
Ja, eine kleine Untersuchung hätte bestätigt, dass VMWare Patches für Spectre und Meltdown veröffentlicht hat. Das Gastbetriebssystem muss zusätzlich zum eigentlichen Hypervisor (beide Typen) gepatcht werden. Ramhound vor 6 Jahren 4
Hängt von der Virtualisierung ab, würde ich sagen. Wenn Sie eine virtuelle CPU simulieren, sind Sie wahrscheinlich in Sicherheit. Dies ist jedoch nicht das, was moderne VMs tun. Bergi vor 6 Jahren 0
Gibt es eine Erklärung, wie der Cache einer virtuellen CPU gelesen werden kann? jms vor 6 Jahren 0
@jms Details befinden sich in dem kanonischen Beitrag, den ich in meiner Antwort verlinkt habe: `Specter arbeitet auf einer anderen Ebene ... Bei diesem Angriff versucht der Angreifer die spekulative Ausführung, um Anweisungen irrtümlich vorausschauend auszuführen. Kurz gesagt, der Prädiktor wird gezwungen, ein bestimmtes Verzweigungsergebnis vorherzusagen, das dazu führt, einen Out-of-Bound-Speicherzugriff anzufordern, den der Opferprozess normalerweise nicht angefordert hätte, was zu einer falschen spekulativen Ausführung führt. Ruft dann über den Seitenkanal den Wert dieses Speichers ab. Auf diese Weise wird Speicher, der zum Opferprozess gehört, an den böswilligen Prozess durchgesickert. " Mokubai vor 6 Jahren 1
@jms Wenn eine virtuelle CPU ausgeführt wird, hat sie denselben Cache wie die physische CPU, auf der sie ausgeführt wird. David Schwartz vor 6 Jahren 0
@DavidSchwartz wirklich? das ist überraschend. Ich nahm an, dass eine VM von der realen Hardware mehr abstrahiert wird. jms vor 6 Jahren 0
@jms Virtualisierung ist nur schnell, da die physische CPU so wenig Abstraktion wie möglich verwendet und CPU-Hardware für Isolation und Abstraktion benötigt wird. Dinge wie `qemu` können Emulationen ausführen, was sicherer wäre, da es sich nicht um eine * Hardware * -CPU handelt, aber sie ist viel langsamer und unterscheidet sich von der Virtualisierung. Mokubai vor 6 Jahren 1
@jms fügte meiner Antwort ein paar Infos hinzu. Mokubai vor 6 Jahren 0

2 Antworten auf die Frage

14
Mokubai

Ja, Spectre kann Host / Gast-, Gast / Host- und Gast / Gast-Grenzen überschreiten, da dies ein Fehler auf CPU-Ebene ist. Dies bedeutet, dass potenziell vertrauliche Informationen in alle Bereiche des CPU-Kerns gelangen können.

Die meisten Nachrichten im Internet sprechen von den Cloud-Anbietern, die davon am stärksten betroffen sind, da sie über riesige Cluster von Systemen verfügen, die virtualisiert sind und möglicherweise dazu missbraucht werden, vertrauliche Informationen zu verlieren.

Die meisten großen Anbieter sollten inzwischen gegen die Schwachstellen gepatcht worden sein, so gut sie können, aber dies wird ein Problem sein, das seit einiger Zeit bei uns lebt.

Security.SE hat diesbezüglich kanonische Fragen und Antworten und erwähnt VMs:

Ich betreibe eine virtuelle Maschine / Container, inwiefern bin ich anfällig?

Wie in der Antwort von Steffen Ullrich

  • Meltdown-Angriffe durchqueren keine VMs, sondern leiten den Kernelspeicher nur an lokale Prozesse weiter.
  • Spectre kann über mehrere VMs hinweg arbeiten.

Auch von Steffen aus arbeiten Meltdown und Spectre mit Containern, da Container auf den Host-Kernel angewiesen sind.

VMs verwenden die tatsächliche CPU in Ihrem System, wobei einige privilegierte Anweisungen eingefangen werden und umgeleitet werden können. Es verwendet die gleichen Caches und Anweisungen wie der Host. Es ist im Wesentlichen nur eine weitere Schicht innerhalb der physischen CPU in Ihrem System.

Die Virtualisierung ist nur schnell, da sie die physische CPU mit möglichst wenig Abstraktion verwendet und zur Isolation CPU-Hardware benötigt. Dinge wie qemu können Emulationen ausführen, was sicherer wäre, da es sich nicht um eine Hardware-CPU handelt, sie ist jedoch viel langsamer und unterscheidet sich von der Virtualisierung.

Aus dem kanonischen Beitrag von Security.se noch einmal:

Spectre arbeitet auf einer anderen Ebene und erlaubt keinen Zugriff auf Kernel-Space-Daten aus dem User-Space. Bei diesem Angriff versucht der Angreifer die spekulative Ausführung, um Anweisungen irrtümlich vorhersagbar auszuführen. Kurz gesagt, der Prädiktor wird gezwungen, ein bestimmtes Verzweigungsergebnis vorherzusagen (falls -> true). Dies führt dazu, dass ein Zugriff außerhalb des gebundenen Speichers angefordert wird, den der Opferprozess normalerweise nicht angefordert hätte, was zu einer fehlerhaften spekulativen Ausführung führt. Ruft dann über den Seitenkanal den Wert dieses Speichers ab. Auf diese Weise wird Speicher, der zum Opferprozess gehört, an den böswilligen Prozess durchgesickert.

Da die VM in der tatsächlichen CPU-Hardware ausgeführt wird und Sie lediglich eine bestimmte Schleife ausführen müssen, um die spekulative Ausführungs-Engine zu "trainieren". Dann kann das Timing präzise verwendet werden, um die Caches auf bestimmte Zugriffsmuster zu überprüfen, die den Host- oder Gastprozess (oder einen anderen VM-Prozess) angeben, den er ausnutzen möchte.

Auf diese Weise bedeutet dies, dass eine Maschine in alle Richtungen ausnutzbar ist. Von Host zu VM, von VM zu Host und von VM zu VM.

Ja, es ist keineswegs einfach und schwer zu bewerkstelligen, da sich der VM-CPU-Kern nach Belieben des Hosts ändern kann und der Host auch Aufgaben auf verschiedenen Cores planen kann, aber über einen langen Zeitraum ausreichend Informationen könnte durchgesickert werden, um einen geheimen Schlüssel für ein wichtiges System oder Konto aufzugeben. Bei ausreichender Zeit und geeigneter Software ist alles potenziell offen.

Wenn Sie eine "sichere" VM wünschen, müssen Sie sicherstellen, dass die Kerne isoliert sind. Die einzige Möglichkeit, diesen Angriff zu blockieren, besteht darin, den Host und die VMs dazu zu bringen, nur bestimmte Kerne zu verwenden, sodass sie niemals auf derselben Hardware ausgeführt werden. Dies würde jedoch zu einem effektiven Kostenanstieg führen, da dies nicht möglich wäre haben so viele VMs auf einem bestimmten Host. Sie würden niemals in der Lage sein, mehr VMs auszuführen, als Sie über verfügbare Kerne verfügen. Dies ist etwas, was ich auf "Low-Load" -Servern erwarten würde, da viele Systeme 90% ihrer Lebensdauer im Leerlauf sind.

Ich denke, Sie haben die Frage folgendermaßen interpretiert: "Wenn die Host-CPU betroffen ist, ist auch die VM betroffen?" Wenn ich die Frage verstanden habe, wird folgende Frage gestellt: "Ist die Host-CPU * nicht * betroffen, kann die VM * noch * betroffen sein?" Könnten Sie das aufklären? AndreKR vor 6 Jahren 2
@AndreKR: Derzeit sind alle Out-of-Order-Ausführungs-CPUs von Spectre betroffen. Nur mit Software-Workarounds können Sie eine Art System sicher machen (und die VM müsste sich darum kümmern, obwohl ein Hypervisor die Gäste voneinander isolieren kann, wenn die CPU die Einrichtungen bereitstellt, z. B. Intels IBRS-Kram). Bei einer In-Order-CPU ohne spekulative Ausführung können jedoch keinerlei Specter-Schwachstellen zwischen zwei beliebigen Softwareteilen bestehen. Die Essenz von Spectre provoziert die spekulative Ausführung von etwas, das geheime Daten in einen mikroarchitektonischen Zustand versetzt. In-Order-CPUs nicht. Peter Cordes vor 6 Jahren 1
Das Interessanteste ist nicht die spekulative Ausführung. Das Interessanteste ist, wie ein Prozess herausfinden kann, was sich im Cache befindet - sogar in einer VM. jms vor 6 Jahren 0
@jms Die verfügbaren Seitenkanalattacken werden durch die spekulative Ausführung erleichtert und * nützlich * gemacht. Der Prozess ist möglicherweise nicht in der Lage, Cachezeilen direkt zu lesen, aber die spekulative Ausführung kann Informationen verlieren, indem er Berechnungen durchführt, die Werte in den Cache legen, die durch Timing-Angriffe erkannt oder abgeleitet werden können. In Abschnitt 4 des White Paper von spectre gibt es eine gute Erklärung: https://spectreattack.com/spectre.pdf Mokubai vor 6 Jahren 0
0
Ciro Santilli 新疆改造中心 六四事件 法轮功

gem5

Wenn Sie daran interessiert sind, Schwachstellen ausschließlich mit Emulation zu studieren / zu reproduzieren, ohne die Host-CPU zu verwenden, glaube ich nicht, dass QEMU detailliert genug ist, um sie zu beobachten, da sie die CPU-Pipeline nicht simuliert.

gem5 wird jedoch zur Einschätzung der Systemleistung in Forschung und Entwicklung verwendet und simuliert ausreichend 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 ist, dass es viel langsamer ist als QEMU. Die Simulation ist detaillierter.