In den letzten Tagen haben sich die Meldungen zur Spectre und Meltdown Sicherheitslücke überschlagen. Ich will einmal versuchen hier die wichtigsten Informationen zusammenzutragen.
Vereinfacht ausgedrückt liegt ein Problem bei der Verwaltung von Speicherbereichen vor, welches einem Angreifer ermöglicht, ohne Berechtigungsnachweis auf Speicherinhalte fremder Prozesse zuzugreifen. Dies bedeutet, aus einem Browser oder einer Anwendung, die mit normalen Rechten laufen, könnte auf Speicherbereiche des Betriebssystemkerns zugegriffen werden.
Dabei werden insgesamt drei Schwachstellen verschiedener Prozessoren ausgenützt. Angegriffen wird zum einen die “spekulative Befehlsausführung” (speculative execution) und die Umsortierung von Befehlen (out-of-order execution). Der wesentliche Unterschied zwischen Meltdown und Spectre ist die Art der Umsetzung. Meltdown zerbricht generell den Mechanismus, der verhindert, dass auf beliebige Teile im Systemspeicher und damit den Systemspeicher selbst zugegriffen werden kann (beschrieben er CVE-Nummer CVE-2017-5754). Spectre hingegen erlaubt es beliebigen Anwendungen, gezielt diesen Sicherheitsmechanismus auszuhebeln (beschrieben unter den CVE-Nummern CVE-2017-5715 und CVE-2017-5753).
Hintergrundinformationen
Bei der “speculative execution” werden verschiedene Befehle im Programmablauf während Zeiten in denen der Prozessor nicht ausgelastet ist schon vorab ausgeführt abwohl sie noch gar nicht gebraucht werden und das spekulative Ergebnis im Cache zwischengespeichert. Dies hinterlässt im Cache eine von außen bemerkbare Spur, auch nachdem das Ergebnis der spekulativen Ausführung verworfen wurde. Bei der “Out-of-order execution” können Maschinenbefehle in den Ausführungseinheiten des Prozessors in einer anderen Reihenfolge ausgeführt werden, als sie im Programmcode stehen. Dadurch können die Stufen der Pipeline besser ausgelastet werden. Die Pipeline ist eine Art Fließband, mit dem die Abarbeitung der Maschinenbefehle in einzelne Teilaufgaben zerlegt wird um sie parallel abarbeiten zu können. Auch hier werden bestimmte Befehle oder Teilaufgaben spekulativ ausgeführt, also ohne zu wissen ob sie später gebraucht werden, und das Ergebnis im Cache zwischengespeichert.
Angriffsmöglichkeiten
Bei dem Angriffstyp, den alle drei Lücken ausnutzen, handelt es sich um einen sogenannten Seitenkanalangriff oder side-channel attack. Zur Durchführung des Angriffs wird der angegriffene Prozess also dazu gebracht, bestimmte vom Angreifer eingebrachte Anweisungen spekulativ auszuführen und das Ergebnis im Cache zu speichern. Im wesentlich weniger geschützten Cache sollen diese Informationen dann abgegriffen werden. Die Sicherheitslücke umgeht so auch implementierte Sicherheitsmechanismen wie Sandboxing, die Trennung zwischen Programmcode und vom Benutzer bereitgestelltem Code und ASLR (die zufällige Umsortierung von Speicherzellen).
Wer ist betroffen?
Nach allem, was bisher bekannt ist, betrifft Meltdown nur Intel-Prozessoren und kann eher auf schlampige Implementierung zurückgeführt werden. Betroffen sind also alle Desktops, Notebooks aber auch Cloud Systeme unabhängig vom Betriebssystem, die Intel Prozessoren einsetzen, welche die “out-of-order execution” nutzen. Spectre hingegen basiert auf einem grundsätzlichen Fehler in der Architektur von Prozessoren und zieht sich quer durch die gesamte Landschaft von Intel über AMD bis ARM, weshalb hier auch zusätzlich Smartphones und andere Geräte betroffen sind.
Außerdem sind die Sicherheitslücken in der Lage, über speziell präparierte Webseiten sensible Daten von anderen Seiten oder dem Browser selbst abzugreifen, wofür dann in aller Regel speziell bei Spectre JavaScript eine zentrale Rolle spielt, weshalb eben auch die verschiedenen Browsern ins Blickfeld geraten. Aber auch durch den Download manipulierter Bilder oder ähnlichem kann entsprechender Schadcode auf die Rechner gelangen.
Wie kann man sich schützen?
Der momentane Schutz sieht aktuell so aus, die verfügbaren Updates für die Betriebssysteme und die Browser zu installieren. Auch das Blockieren von JavaScript im Browser kann eine Lösung sein. Alle aktuellen Maßnahmen können einen Angriff aber nicht komplett verhindern sondern nur erschweren. Für einen hundertprozentigen Schutz wäre im Moment ein Austausch des Prozessors notwendig. Wobei es bei den meisten Prozessor Herstellern aktuell gar keine Alternative gibt, die von dem Problem nicht betroffen wäre.
Bei den verschiedenen Updates wurde zum einen der SharedArrayBuffer-Standard standardmäßig deaktiviert. Dieser erlaubt die Implementierung hochauflösender Timer in Webanwendungen. Außerdem wurde die Genauigkeit von performance.now(), welcher die präzisen Zeitmessungen erst durchführt, von den üblichen 5 auf mindestens 20 Mikrosekunden verringert. Durch diese Maßnahme sind entsprechende Seitenkanalangriffe nicht mehr in der Lage, die Messung der Zeitintervalle in der gleichen Präzision durchzuführen.
Speziell bei der Installation der Sicherheitsupdates für das Betriebssystem ist allerdings Vorsicht geboten. Da hier Änderungen am Betriebssystem Kernel vorgenommen werden, muss man im Vorfeld sicherstellen, dass der eingesetzte Virenscanner mit der Änderung kompatibel ist. Die Updates für das Betriebssystem werden daher nur installiert, wenn der folgende Registry Eintrag vorhanden ist. Bestimmte Virenscanner setzen diesen Eintrag automatisch, nachdem das entsprechende Update des Virenscanners installiert wurde. Bei anderen Virenscannern muss dieser Registry Eintrag manuell gesetzt werden. Welcher Virenscanner bereits kompatibel ist und welcher Virenscanner den Registry Eintrag automatisch setzt kann unter anderem in DIESER ÜBERSICHT nachgelesen werden.
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat]
“cadca5fe-87d3-4b96-b7fb-a231484277cc”=dword:00000000
Linkverzeichnis
Informationen zu Meltdown: https://meltdownattack.com/meltdown.pdf
Informationen zu Spectre: https://spectreattack.com/spectre.pdf
Empfehlungen von Microsoft: KB4073119
Update für Windows 10 Build 1607: KB4056890
Update für Windows 10 Build 1703: KB4056891
Update für Windows 10 Build 1709: KB4056892
Update für Windows 7: Security only (KB4056897)
Update für Windows 7: Monthly Rollup (KB4056894)
Update für Internet Explorer: KB4056568
Update für Firefox: Security Advisory 2018-01 für den Firefox 57.x dort finden sich auch Informationen zum Firefox ESR 52