Ist der eigene PC gegen Meltdown und Spectre geschützt?
Meltdown und Spectre — Die Grundlagen
Als Googles Project Zero zwei geheime Schwachstellen offenlegte, war der Aufschrei im Internet groß. Die Schwachstelle wurde anscheinend noch nicht ausgenutzt, zeigt aber ein grundlegendes Problem, wie CPUs in den letzten 20 Jahren Code bearbeiten. Daraufhin war das Thema eigentlich täglich in den Nachrichten. Wobei handelt es sich also genau, und sollte man sich auch als privater Nutzer Sorgen machen?
Grundsätzlich können Hacker Meltdown und Spectre nutzen, um Informationen abzugreifen, die gerade vom Prozessor bearbeitet werden. Es handelt sich dabei nicht um typische Malware, doch die Bugs können für schädliche Zwecke eingesetzt werden. Anfangs lag der Fokus dabei auf Intel, doch ARM und AMD-Chips sind ebenfalls betroffen - allerdings auf anderen Ebenen. Googles Project-Zero-Team hat den Bug letzten Juni gefunden, hat jedoch ein Embargo auf den 9. Januar 2018 gesetzt. Die Infos kamen jedoch schon vorher an die Öffentlichkeit, woraufhin sowohl Software- als auch Hardware-Hersteller schnell Sicherheitspatches veröffentlichten. Technisch gesehen werden Meltdown und Spectre durch die Common Vulnerabilities and Exposures (CVE) Auflistungen identifiziert:
CVE-2017-5754 — Rogue Data Cache Load a.k.a Meltdown
Hierbei handelt es sich um eine Schwachstelle des Prozessors, bei dem ein User-Mode Programm auf den Kernel-Mode Speicher zugreifen kann. Der Bug nutzt dabei einen Fehler bei der sogenannten spekulativen Ausführung aus - dabei versucht die CPU die nächsten Instruktionen vorherzusehen, um die Bearbeitungszeit zu verkürzen. Das bedeutet, ein schadhaftes Programm kann sensible Daten aus dem Speicher und damit auch von anderen Programmen sowie dem Betriebssystem selbst abgreifen. Der Bug betrifft abgesehen von Itanium und älteren Atom-CPUs alle Intel-Prozessoren, die seit 1995 hergestellt wurden. Einige ARM-Chips sind ebenfalls betroffen, während CPUs von AMD aufgrund der unterschiedlichen Architektur immun sind. Meltdown kann durch ein Update des Betriebssystems entschärft werden und ist im Vergleich zu Spectre deutlich einfacher zu beheben, allerdings kommt es je nach CPU zu einer Leistungsreduzierung.
CVE-2017-5753 — Bounds Check Bypass a.k.a Spectre Variant 1 und CVE-2017-5715 — Branch Target Injection a.k.a Spectre Variant 2
Spectre nutzt ebenfalls die spekulative Ausführung aus. Die Spectre-Varianten sind dabei potenziell gefährlicher als Meltdown, denn Hacker können Informationen von laufenden Prozessen bekommen. Falls der PC nicht gepatcht wurde, kann ein Hacker mit lokalem Zugang beispielsweise sensible Daten klauen, die man in den Browser eingegeben hat. Von den beiden Spectre-Varianten sind alle Prozessoren von Intel, AMD und ARM betroffen. Updates für das Betriebssystem und den Browser können das Problem nur abschwächen, doch für eine wirkliche Lösung muss eine komplett neue CPU-Architektur her.
Sowohl die beiden Spectre-Versionen als auch Meltdown sind lokale Attacken, doch Forscher haben bereits gezeigt, dass Spectre via Browser-basiertem JavaScript ausgenutzt wird. Es handelt sich zudem um Read-Only-Attacken, Hacker können die sensiblen Informationen also sehen, aber nicht selbst eingreifen. Allerdings kann auch durch das Erspähen von sensiblen Daten ein gehöriger Schaden entstehen, weshalb diese Schwachstellen so schnell wie möglich adressiert werden sollten.
Da die Schwachstellen ein Teil des grundlegenden Hardware-Designs sind, kann man die Risiken über Updates für den Mikrocode sowie das Betriebssystem aktuell nur abschwächen. Microsoft, Intel, AMD, Google und Apple haben im vergangenen Monat bereits Sicherheitspatches veröffentlicht, um die Risiken soweit wie möglich zu reduzieren. Aufgrund der schnellen Veröffentlichung kam es aber schon zu einigen Problemen bei Intel-Prozessoren, die wiederholte Neustarts auslösten, und einige AMD-Systeme wurden durch einen Windows-Patch vollständig funktionsunfähig gemacht. Die Patches werden mit zunehmender Zeit stabiler, doch man sollte den aktuellen Status seines PCs dennoch überprüfen und Schritte einleiten, um die Risiken so weit wie möglich zu reduzieren.
Den Sicherheitsstatus via Windows PowerShell überprüfen
In diesem Tutorial nutzen wir die Windows PowerShell (PS), um den Sicherheitsstatus des PCs gegenüber Meltdown und Spectre zu überprüfen. PowerShell ist eine Weiterentwicklung der klassischen Eingabeaufforderung, die seit Windows 8 in jeder Version des Betriebssystems integriert ist.
Schritt 1: Windows-Updates überprüfen bzw. installieren
Als erstes sollte man die aktuellsten Updates für das Betriebssystem installieren (via Einstellungen -> Updates und Sicherheit). Um Meltdown und Spectre abzuschwächen, müssen die folgenden Updates abhängig von der Windows-10-Version installiert sein.
- KB4056892 — Windows 10 Version 1709 (Fall Creators Update).
- KB4056891 — Windows 10 Version 1703 (Creators Update).
- KB4056890 — Windows 10 Version 1607 (Anniversary Update).
- KB4056888 — Windows 10 Version 1511 (November Update).
- KB4056893 — Windows 10 Version 1507 (Initial Release).
Nachdem man sichergestellt hat, dass die Updates installiert sind, kann man mit Schritt 2 fortfahren.
Achtung: Damit die oben gelisteten Sicherheitsupdates installiert werden, muss die Antivirus-Software so konfiguriert werden, dass sie einen Registrierungsschlüssel in Windows setzt. Microsoft hat festgestellt, dass einige Antivirus-Programme von Drittherstellern nicht gut mit den Updates harmonieren und die Stabilität beeinflussen können. Vor der Installation der Updates überprüft Windows also zunächst, ob dieser Schlüssel vorhanden ist. Einige Antivirus-Programme haben diesen Schlüssel automatisch aktiviert, andere aber nicht. Eine Liste mit Antivirus-Programmen, die problemlos mit den Updates funktionieren, gibt es hier. Falls das eigene Programm nicht aufgelistet ist, muss man den folgenden Schlüssel manuell setzen:
Hinweis: Der nachfolgende Schritt beinhaltet das Verändern der Windows Registry. Hierbei sollte man sehr vorsichtig vorgehen und es hilft, vorher ein Backup zu erstellen bzw. einen Wiederherstellungspunkt zu setzen.
Kopieren Sie den folgenden Wert in eine Textdatei und speichern es als .reg-Datei ab:
Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat" Value="cadca5fe-87d3-4b96-b7fb-a231484277cc" Type="REG_DWORD”
Danach doppelt auf die Datei klicken, damit Registry die Werte übernimmt. Es ist ebenfalls möglich, den Registry-Editor (regedit.exe) zu verwenden und den Schlüssel zu erstellen. Windows-Update sollte die erforderlichen Sicherheits-Updates für Meltdown und Spectre nun herunterladen können. Im Vorfeld muss man aber zwangsweise überprüfen, ob das Antivirus-Programm kompatibel ist. Wer Microsoft Security Essentials oder den Windows Defender verwendet, muss sich darüber keine Gedanken machen.
Das folgende Diagramm zeigt an, ob man die Registry verändern muss oder nicht.
Schritt 2: Windows PowerShell starten
Nachdem man den Status der Updates überprüft hat, geht die Arbeit mit der PowerShell los. Microsoft hat ein PowerShell-Skirpt erstellt, mit dem man die Status des Computers gegenüber Meltdown und Spectre überprüfen kann. Um das Skript zu verwenden, öffnet man die PowerShell (Eingabe in das Cortana-Suchfeld) über einen Rechtsklick als Administrator. Dann
Install-Module SpeculationControl eingeben und Enter drücken.
Es erscheint eine Aufforderung, den NuGet-Provider zu installieren, was man bestätigt. Möglicherweise erscheint eine Meldung, dass man Module von einer nicht vertrauenswürdigen Quelle installieren möchte, was man ebenfalls bestätigt.
Schritt 3: Die Ausführungs-Regel setzen
Da man mit administrativen Rechten arbeitet, ist es wichtig, Ausführungsregeln speichern bzw. widerrufen zu können. Die Ausführungs-Regel bestimmt, ob PowerShell Skripte ausführen oder Konfigurationsdateien laden kann. Geben Sie den folgenden Befehl ein, um die aktuelle Ausführungs-Regel einer definierten Variablen zuzuordnen. In diesem Fall ordnen wir die Get -ExecutionPolicy der Variablen zu. Alle Variablen in der PowerShell beginnen mit einem $-Zeichen.
$SaveExecutionPolicy = Get-ExecutionPolicy
Nachdem man die Get-ExecutionPolicy einer Variable zugeordnet hat, sollte man die Ausführungs-Regel für die aktuelle Sitzung festlegen, damit man das PS-Skript aus Schritt 1 auch verwenden kann. Dazu gibt man den folgenden Befehl ein:
Set-ExecutionPolicy RemoteSigned -Scope Currentuser
Alternativ kann man die gegenwärtige Ausführungs-Regel auch umgehen und direkt zum nächsten Schritt übergehen, indem man Set-ExecutionPolicy Bypass eingibt.
Schritt 4: Das Power-Shell-Modul importieren
Nun importieren wir das PS-Skript aus Schritt 1, indem man den folgenden Befehl eingibt:
Import-Module SpeculationControl
Schritt 5: Das PowerShell-Modul ausführen
Nun führt man das PS-Skript mit dem Befehl Get-SpeculationControlSettings aus. Man sieht zwei Sektionen - eine für CVE-2017-5715 (Spectre Variante 2) und die andere für CVE-2017-5754 (Meltdown). Falls Ihr Mainboard-Hersteller bereits ein Microcode-Update für Spectre veröffentlicht hat, sind die meisten Einträge mit "True" in Grün gekennzeichnet. In diesem Fall hat Acer noch kein BIOS/UEFI-Update für den Pentium 4200 Apollo-Lake-Prozessor in dem Aspire ES1-533-Laptop veröffentlicht, weshalb alle Einträge mit "False" in Rot gekennzeichnet sind. Das Microsoft-Update für Spectre ist aber installiert, weshalb bei Windows OS "True" in Grün steht. Falls der Hersteller ein BIOS-Update bietet, sollte alle anderen Einträge ebenfalls auf "True" stehen. Es ist also nicht ganz trivial, die Risiken von Spectre abzuschwächen - es ist schwieriger auszunutzen, aber auch schwieriger zu patchen.
Meltdown kann jedoch auf Betriebssystem-Ebene gepatcht werden. Falls man Windows aktuell hält, sollten alle Einträge unter CVE-2017-5754 (rogue data cache load) auf "True" in Grün stehen. Das Skript weist ebenfalls darauf hin, die notwendigen Firmware-Updates für Spectre Variante 2 (branch target injection) zu installieren. Das Ergebnis zeigt in diesem Fall, dass der Test-PC das Update gegen Meltdown bekommen hat, allerdings ist er nicht vollständig gegen Spectre geschützt. An dieser Stelle kann man nicht viel tun und muss auf ein Update (BIOS/UEFI Microcode) des Herstellers warten. Es gibt ebenfalls keine genauen Informationen über Spectre Variante 1 - diese sollte im Zuge des Meltdown-Updates adressiert werden.
Schritt 6: Die Ausführungs-Regel zurücksetzen
Nachdem man den Status seines Computers überprüft hat, sollte man die PowerShell Ausführungs-Regel vorsichtshalber wieder zurücksetzen. Dazu gibt man den Befehl Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser ein und bestätigt ihn mit Y.
Fazit
Die ersten schnellen Updates haben mehr Probleme verursacht als die eigentlichen Schwachstellen. Für 32-Bit-Versionen von Windows gibt es noch gar keine Patches. Allerdings verbessert sich die Situation und die Hersteller versuchen stabile Updates zu veröffentlichen. Einige Nutzer entscheiden sich aufgrund der drohenden Leistungsverluste vielleicht dafür, die Updates nicht zu installieren. Bei dem Entwicklungstempo von Malware schadet es aber nicht, vorbereitet zu sein.
Man sollte sich selbst fragen, ob man das Risiko verringern möchte und dabei auf etwas Leistung verzichtet oder nicht. Kunden erwarten richtigerweise, die beworbene Leistung auch ausnutzen zu können, doch aufgrund der aktuellen Situationen empfehlen wir den Kompromiss einzugehen. Hersteller und Entwickler werden die Updates sicherlich auch weiter optimieren. Man sollte aber in keinem Fall in Panik geraten und die Situation stattdessen richtig verstehen und wissen, welche Maßnahmen man treffen kann, um das Risiko zu reduzieren.