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.