Schwerpunkte

Sicherheitslücke in Mikroprozessoren

Der CPU-Super-GAU: Spectre, Meltdown und die Gegenmaßnahmen

07. Januar 2018, 09:46 Uhr   |  Frank Riemenschneider


Fortsetzung des Artikels von Teil 2 .

Spectre Variante 2: Speicherleck durch Gadgets

In dieser Variante werden indirekte Sprünge wie jmp eax (Sprungadresse in Register), jmp [eax] (Sprung an Adresse, die sich im Speicher befindet) genutzt, um nach vorhergehendem „Misstraining“ der Sprungvorhersage eine spekulative Befehlsausführung an einer vom Hacker vorgegebenen Adresse zu bewirken, die in normalen Programmablauf niemals angesprungen würde. Neben den beiden eben aufgeführten x86-Anweisungen gibt es derartige Instruktionen auch bei ARM, z.B. MOV pc, r14.

An der angesprungenen Adresse muß sich ein sogenanntes Gadget befinden, also eine Befehlsfolge, die dazu geeignet ist, Daten von Speicherbereichen auszulesen, auf die man normalerweise keinen Zugriff hat, z.B. weil sie sich in einem priviligierten Speicherbereich befinden, der nur vom Betriebssystem gesehen werden darf und im User-Modus gar keine Zugriffsrechte hat.

Das komplizierte an dieser Spectre-Variante ist, dass eine spekulative Befehlsausführung nur dann erfolgt, wenn die Zieladresse vom Opfer, d.h. dem Betriebssystem, ausführbar ist. Man muß sich mit anderen Worten beim OS bedienen, um das Gadget auszuführen.

Ein von den Forschern vorgestelltes Beispiel betrifft die Windows-DLL ntdll.dll, die sowohl bei Windows 8 als auch Windows 10 zum Einsatz kommt. Dort findet sich die Byte-Kombination 13 BC 13 BD 13 BE 13 12 17, die folgende Instruktionen abbildet:

adc edi, dword ptr (ebx+edx+13BE13BDh)
adc dl, byte ptr (edi)

Eine spekulative Befehlsausführung auf dieses Gadget mit den Registern ebx und edi unter Kontroller des Hackers führt dazu, dass der Speicher des Opfers ausgelesen werden kann. Angenommen der Hacker lädt ebx mit m – 0x13BE13BD – edx so wird der 32-bit-Wert von der Adresse m gelesen und zu edi hinzuaddiert. Da edi auch vom Hacker kontrolliert wird, wird durch die spekulative Ausführung der zweiten Anweisung aus dem Speicher der Wert der Adresse, die sich aus der Summe von m und edi ergibt, geladen. Damit können die 232 möglichen Speicherwerte in kleinere Regionen abgebildet werden, die dann mittels Flush-and-Probe-Verfahren analysiert werden können.

Um die spekulative Befehlsausführung des Gadgets zu ermöglichen, sind umfangreiche Maßnahmen zum „Misstrainieren“ der Sprungvorhersage notwendig.

Gegenmaßnahmen für Spectre Variante 2

Die einzigen wirkungsvollen Maßnahmen sind das Löschen der aktuellen Status der Sprungvorhersage bei jedem Kontextwechsel oder Wechsel der Privilegstufe. Das Problem ist, dass diese Möglichkeit derzeitig wenn überhaupt nur bei einer kleinen Anzahl der betroffenen CPUs implementiert ist.  Auch eine komplette Abschaltung von indirekter Sprungvorhersage würde helfen, indem diese durch eine andere Befehlssequenz ersetzt würde. Dies erfordert ein komplettes Recompilieren des Codes.

Hyperthreading (Intel x86) macht die Sache noch komplizierter, da mehrere Threads mit unterschiedlichen Privileg-Stufen auf einer CPU laufen und deren Sprungvorhersage-Ressourcen teilen. Hier hilft nur das Abschalten des Hyperthreading oder eine Überarbeitung des OS-Schedulers, der sicherstellen muss, das zusammen auf einer CPU laufende Threads im identischen User-/Anwendungs-/Sicherheitskontextes laufen.

Zukünftige CPU-Designs sollten darauf angelegt sein, dass jeder Thread eigene Ressourcen zur Sprungvorhersage erhält. Alle beschriebenen Maßnahmen, wenn umsetzbar, führen zu Einbußen der Rechenleistung, die anwendungsabhängig nicht generell quantifizierbar sind.

Seite 3 von 9

1. Der CPU-Super-GAU: Spectre, Meltdown und die Gegenmaßnahmen
2. Spectre Variante 1: Speicherleck durch spekulative Befehlsausführung
3. Spectre Variante 2: Speicherleck durch Gadgets
4. Meltdown: Speicherleck trotz Speicherschutzverletzung
5. Fazit
6. Die betroffenen Intel- und ARM-CPUs
7. Das ist das Statement von Texas Instruments für Sitara und andere SoCs
8. Das ist das Statement von NXP für i.MX
9. Das ist das Statement von Renesas

Auf Facebook teilen Auf Twitter teilen Auf Linkedin teilen Via Mail teilen

Verwandte Artikel

INTEL GmbH, ARM Germany GmbH