Spectre und Meltdown: ist jetzt jede CPU kaputt?

Posted on 08 January 2018

Vor allem auch nicht in der jetzt bekannt gewordenen Dimension. Der nachfolgende Artikel erläutert kurz die beiden Schwachstellen Spectre und Meltdown, geht kurz auf die Wirkungsweise und mögliche Gegenmaßnahmen ein, und umreißt zum Schluss die bisherigen Aussagen und ggf. Updates der betroffenen Hersteller.

Spectre und Meltdown – was ist das eigentlich genau?

Etwa Mitte 2017 haben verschiedene Sicherheitsforscher unabhängig voneinander zwei Schwachstellen in Intel-CPUs entdeckt. Beide erlauben, dass ein Prozess innerhalb eines Computers auf Speicherbereiche zugreifen kann, auf die der Prozess eigentlich nicht zugreifen können dürfte. Solche Lücken können grundsätzlich dazu genutzt werden, dass ein Prozess z. B. Passwörter oder Sicherheitszertifikate ausliest und damit Unfug treibt. Die beiden Angriffe wurden von den Forschern Spectre und Meltdown genannt. Manchmal liest man auch von den Varianten 1, 2 und 3. Die Varianten 1 und 2 sind dabei als Spectre zusammen gefasst, mit Variante 3 ist die Lücke Meltdown gemeint. Eine umfangreiche wissenschaftliche Betrachtung kann man in einem Blog-Artikel des Google Project Zero Teams nachlesen. Wer es weniger wissenschaftlich, aber trotzdem etwas technischer möchte, liest am besten bei Heise nach.

Die Angriffe sind sogenannte Seitenkanal-Angriffe (engl. side channel): man wertet eine Information aus, über die man dann indirekt auf die eigentliche interessante Information schließt. Im Falle von Spectre und Meltdown ist es für den angreifenden Prozess insbesondere wichtig, möglichst genaue Timing-Informationen zu haben. Die Angriffe konnten per Proof of Concept auf einem Intel Xeon Haswell (E5-1650v3), einem AMD FX-8320, einem AMD PRO und einem ARM Cortex A57 nachgewiesen werden. Die Meltdown-Lücke nutzt dabei eine Schwachstelle der sog. out-of-order execution, die beiden Spectre-Angriffe nutzen Lücken in der sog. speculative execution.

Beide Konzepte wurden von Intel 1995 mit dem Pentium Pro im CPU-Markt eingeführt und werden zwischenzeitlich von jedem CPU-Hersteller in aktuellen Modellen benutzt. Moderne CPUs arbeiten intern sehr viel schneller, als der angeschlossene Hauptspeicher. Also suchen die CPU-Hersteller nach Mechanismen, diese Diskrepanz in der Verarbeitungsgeschwindigkeit aufzufangen. CPUs sind dazu in der Lage, verschiedene Programmzweige parallel im Voraus zu berechnen. Wenn das Programm dann an der Verzweigungsstelle angekommen ist, ist jeder der möglichen Zweige schon fertig gerechnet. Die zwar berechneten aber nicht benötigten Zweige werden verworfen. Durch geschickten Programmcode und einen Seitenkanal-Angriff über das CPU-Timing wird es nun möglich, Daten aus den vorausberechneten Zweigen auszulesen. Dies geschieht unmittelbar bevor die CPU diese nicht verwendeten Zweige verwirft und vorbei an Sicherheitsmechanismen der CPU, die genau das verhindern sollen.

Wie in der Sicherheitsbranche üblich, wurden diese Lücken an die betroffenen Hersteller gemeldet. Damit räumt man Herstellern Zeit ein zur Nachbesserung, bevor Forscher ihre Erkenntnissen veröffentlichen. Eine gemeinsame Veröffentlichung war eigentlich für den 9. Januar 2018 geplant. Wegen einer Unachtsamkeit in Updates des Linux-Quellcodes und aufmerksamen Linux-Kernel-Entwicklern kam nun alles ein paar Tage früher ans Licht der Öffentlichkeit.

Was genau ist daran jetzt gefährlich?

Es gibt einen wesentlichen Unterschied zwischen den beiden Angriffen. Der Unterschied wirkt sich aus auf die Gefährlichkeit, auf die Art der abgreifbaren Daten, und schließlich auch auf die erforderlichen Gegenmaßnahmen, um die Angriffsfläche möglichst klein zu halten.

Per Spectre (Variante 1 und 2, CVE-2017-5753 und CVE-2017-5715) ist es möglich, dass Teile eines Prozesses auf Speicherbereiche zugreifen können, auf die sie normalerweise keinen Zugriff haben sollen oder dürfen. Es wird also z. B. möglich, aus einer sog. Sandbox auszubrechen und Speicherinhalte außerhalb dieser Sandbox auszulesen. Ein solcher Angriff kann z. B. per Javascript innerhalb eines Browsers genutzt werden: Ein böswilliges Javascript Schadprogramm in einem Browser-Tab kann darüber auf Daten im Speicherbereich eines anderen Tabs des selben Browser-Prozesses zugreifen. Damit lassen sich z. B. vertrauliche Informationen wie Passwörter abgreifen, oder auch die Session-ID einer gerade laufenden Sitzung. Hat man eine Session-ID, kann man damit z. B. auch Mehr-Faktor-Authentifizierung umgehen. Die Sicherheitsbranche ist sich einig, dass Angriffe per schädlichem Javascript-Code der wahrscheinlichste Angriffsvektor auf Spectre in nächster Zeit sein wird. Der Schadcode kann dabei z. B. unbemerkt per Bannerwerbung in den Browser eingeschleust werden. Grundsätzlich lässt sich ein solcher Angriff natürlich auch in anderen Programmiersprachen umsetzen, und bleibt nicht auf Javascript beschränkt.

Weil das Fehlverhalten aus einem Design-Fehler im Microcode der CPU resultiert, lässt sich der Fehler auch nicht so ohne weiteres per Software-Update ausbügeln. Mehr zu den möglichen Gegenmaßnahmen finden Sie weiter unten in diesem Artkel.

Der als Meltdown bekannte Angriff (auch Variante 3 bzw. CVE-2017-5754) kann von einem sog. nicht privilegierten Benutzer-Prozess auf geschützte Speicherbereiche zugreifen, die eigentlich dem Betriebssystemkern vorbehalten sind. Auf solche Speicherbereiche hat normalerweise auch nur der Betriebssystemkern (Kernel) Zugriff. Im Speicherbereich des Kernels können sicherheitsrelevante Informationen liegen wie z. B. Admin-Passwörter, Sicherheits-Zertifikate für zentrale Dienste u. ä. Auch dieser Fehler ist auf eine Schwachstelle im Design der  Microarchitektur von CPUs zurückzuführen. Ein Angriff lässt sich deshalb per Software-Update bestenfalls erschweren, aber nicht grundsätzlich vermeiden.

Bisher sind keine Angriffe außerhalb der Forschungsarbeiten bekannt, die auf die veröffentlichten Lücken abzielen.

Gegenmaßnahmen

Für den oben beschriebenen Spectre-Angriff per Javascript im Browser ist eine deutliche Abschwächung der Angriffsfläche vergleichsweise einfach möglich. Für Firefox gibt es bereits ein Update, für andere Browser ist in Kürze mit Updates zu rechnen. Das Firefox-Update verwässert die Genauigkeit der prozessinternen Zeitbasis. Damit wird der Seitenkanal-Angriff deutlich erschwert, der ja eine möglichst genaue Zeitbasis voraussetzt. Benutzer von Google Chrome können die Funktion Site Isolation im Browser einschalten. Damit wird jeder Tab als eigener Prozess ausgeführt. Es ist dann über die Schwachstelle Spectre nicht mehr möglich, aus einem Tab auf den Speicherbereich eines anderen Tabs zuzugreifen, weil das dann getrennte Prozesse sind.

Grundsätzlich ist es eine gute Idee, sich aus gerade nicht benötigten Webdiensten auszuloggen, und nicht nur das Tab zu schließen. Beim Logout werden alle zu einer Session gehörenden Informationen entweder aus dem Speicher entfernt, oder auf Dienste-Seite als ungültig markiert. Eine erbeutete Session-ID kann damit von einer parallel in einem anderen Tab laufenden Schadroutine nicht genutzt werden.

Um den Meltdown-Angriff abzuschwächen bzw. zu erschweren, sind Änderungen im Betriebssystem erforderlich. Für aktuelle Linux-Kernel ist ein solcher Patch bereits verfügbar und für alle Distributionen gibt es entsprechende Updates. Das auch unter KPTI (Kernel Page Table Isolation) bekannte Update ändert, wie Daten zwischen Anwendungsprozessen und dem Betriebssystemkern ausgetauscht werden. In der Praxis führt das zu einer Verschlechterung der Arbeitsgeschwindigkeit. Wie stark diese Verschlechterung ausfällt, hängt von vielen einzelnen Faktoren ab. Veröffentlichte Aussagen variieren zwischen maximal 5% und mehr als 50%. Anwendungen, die viele Daten mit dem Betriebssystemkern austauschen, sind davon stärker betroffen. Im Bereich des Kernels sind z. B. auch I/O-Zugriffe angesiedelt. Systeme mit viel Netzwerkverkehr oder vielen Datenzugriffen in Richtung Storage dürften stärker betroffen sein, als z. B. reine Rechenknoten.

Für Windows 10 hat Microsoft bereits ein Update zur Verfügung gestellt. Die Updates scheinen aber nicht in jedem Fall problemlos zu sein, Anwender berichten von nicht mehr startendem Windows 10 oder abstürzenden Webbrowsern unter Windows 10.

Als schwacher Trost bleibt, dass die Angriffe vergleichsweise schwer in großem Stil und außerhalb eines Proof of Concept umzusetzen sind. Kurzfristige Updates von Betriebssystem- und Browserherstellern erschweren Angriffe zusätzlich.

Was sagen die Hersteller dazu?

Viele offizielle Statements von Herstellern fasst die Übersichtsseite zu Spectre/Meltdown ganz am Ende zusammen. Nachfolgend möchten wir einige wichtige Hersteller bzw. wichtige Updates trotzdem einzeln aufführen.

Am meisten betroffen von den Sicherheitslücken sind natürlich die CPU-Hersteller, allen voran Intel. Dort wird zusammen mit Computer- und Betriebssystemherstellern an Updates gearbeitet. Den Endkunden erreichen diese Updates per üblicher Update-Kanäle für BIOS, Firmware und Betriebssystem. Einen Überblick der Dokumente gibt es bei Intel hier nachzulesen. In einem mehrseitigen Whitepaper (PDF) geht Intel auch auf die genaueren technischen Details der Lücken ein.

AMD lässt verlauten, ihre aktuelle Microcode-Architektur, wie sie z. B. in der EPYC-Baureihe verwendet wird, wäre grundlegend anders aufgebaut und deshalb auch nicht von den Lücken betroffen. Für aktuelle AMD-CPUs gibt es auch keinen bekannten Angriff im Rahmen eines Proof of Concept.

Bei ARM sind einige aber längst nicht alle Prozessor-Kerne betroffen. Dazu bietet ARM eine entsprechende Tabelle nebst Links zu den erforderlichen Kernel- und Firmware-Patches. Ebenfalls von der Seite verlinkt ist ein umfangreiches Whitepaper von ARM, das im Detail auf die Sicherheitslücken um Zusammenhang mit ARM-Architekturen eingeht.

Auch bei NVIDIA gibt es bereits Updates zum Download. Betroffen sind hier Produkte aus den Baureihen GeForce, Quadro, NVS und Tesla.

Apple hat mit den aktuellen Versionen von iOS und macOS die Angriffsfläche schon verkleinert, aber noch nicht eliminiert. Entsprechende Updates wird es wohl in Bälde geben. Aussagen zu früheren Betriebssystemversionen konnte ich bei Apple bisher keine finden.

Auch Virtualisierungsumgebungen sind von den Sicherheitslücken betroffen. Sowohl VMware als auch Citrix stellt Updates zur Verfügung. Wie sich die Lücke aus technischer Sicht auf die Virtualisierung Xen auswirkt, kann man auf Xen.org nachlesen.

Eine sehr viel ausführlichere Betrachtung darüber, wie die großen Hersteller mit der Lücke umgehen, liefert Ars Technica.

Von Supermicro gibt es aktuell eine Übersicht der betroffenen Boards und Systeme. In Einzelfällen sind bereits BIOS-Updates verfügbar, in der Mehrzahl der Fälle werden Updates in den nächsten Tagen folgen.

Auch Cloud-Anbieter sind von der Lücke betroffen, schließlich werden auch dort in großem Umfang Intel-CPUs benutzt. Alle großen Anbieter sagen, ihre Infrastrukturen wären aktualisiert. Das entbindet die User natürlich nicht, die Betriebssysteme ihrer Cloud-Instanzen zu aktualisieren.

Für Docker gibt es ein Proof of Concept, um über die Lücke aus einem Docker-Container auszubrechen. Der Autor relativiert aber auch gleich, der PoC wäre wirklich nur eine allererste Demonstration und als Docker-Image mit 500MB außerdem viel zu groß, um irgendwo unbemerkt benutzt zu werden. Es ist aber zu erwarten, dass wir hier noch weitere PoC und möglicherweise auch Angriffe sehen werden.

Und wer jetzt zum Abschluss noch gerne wissen möchte, wo die Namen Meltdown und Spectre für die beiden Schwachstellen eigentlich her kommen, liest das am besten hier nach. Es ist weitaus weniger spektakulär, als man meinen könnte.

Update vom 15. Januar 2018

Zwischenzeitlich haben alle Hardware- und Betriebssystemhersteller analysiert und entsprechend reagiert. Von den meisten Herstellern gibt es auch schon Updates. In einer Vielzahl der Fälle geht mit den Updates insbesondere für Meltdown (Variante 3, CVE-2017-5754) einher, dass die betroffenen und aktualisierten Systeme langsamer werden. Diese Lücke nutzt den Datenaustausch zwischen Anwendungsprogramm und Betriebssystemkern aus. Updates sorgen hier dafür, dass dieser Datenaustausch erschwert und deutlich genauer überwacht wird. Davon betroffen sind insbesondere Systeme mit viel I/O-Last in Richtung Storage oder Netzwerk. Sämtliche von einem Anwendungsprogramm erzeugten oder empfangenen Daten “aus der Außenwelt” müssen auch durch den Betriebssystemkern, weil nur das Betriebssystem direkten Zugriff auf z. B. Netzwerk-Karten oder Disk-Controller hat. In der Praxis trifft das insbesondere auf Datenbanken mit OLTP-Zugriffsmuster zu, also alles, womit man i. d. R. irgendwie im direkten Dialog arbeitet. Am wenigsten betroffen sind typische HPC-Anwendungen, hier gibt es vergleichsweise wenige Berührungspunkte zwischen Anwenderprogrammen und dem Betriebssystem.

Intel hat mit den Updates Benchmarks gefahren und die Ergebnisse veröffentlicht. Interessant ist hier insbesondere die auf der Seite weiter unten verlinkte Tabelle (PDF) mit den Messergebnissen. Unterschiedliche CPU-Architekturen werden unterschiedlich beeinflusst. Eine Analyse und Einschätzung der Ergebnisse gibt es bei Heise nachzulesen. Intel kündigte zudem an, für alle seit 2013 ausgelieferten CPU-Architekturen ein Microcode-Update zu liefern. Für 90% der betroffenen CPUs soll das bis spätestens 15. Januar 2018 erfolgen, für den Rest dann bis Ende Januar 2018.

Von Microsoft gibt es kein so übersichtliches Zahlenwerk, aber immerhin ein offizielles Statement des Executive Vice President, Windows and Devices Group zu Windows 7, 8, 10 und Windows Server. Für die Windows-Versionen 7, 8 und 10 kommt es demnach auf die genaue CPU an, wie viel langsamer dem Benutzer sein Computer nach einem Update vorkommt. Für Windows Server meint Microsoft, es wird auf  jeden Fall langsamer, egal welche CPU. Aber auch hier kommt es dann wieder auf den konkreten Anwendungsfall an, und darauf, welche Menge Daten zwischen Anwendung und Betriebssystem-Kern ausgetauscht werden müssen. Wer es mit Englisch nicht so hat: Heise Online hat eine deutsche Zusammenfassung des Microsoft-Statements.

In der Linux-Welt hat sich RedHat die Mühe gemacht, mal genauer nachzumessen. Das Ergebnis ist wenig überraschend, und deckt sich grob mit Intel und Microsoft: je mehr I/O eine Anwendung erzeugt oder fordert, desto deutlicher sind die Auswirkungen zu spüren. Die Spanne reicht dabei von einer Performance-Minderung im einstelligen Prozentbereich für HPC-Anwendungen, bis hin zu knapp 20% für Anwendungen mit hohem random I/O. RedHat ist außerdem so nett, und liefert gleich noch ein paar Tuning-Parameter für das Betriebssystem.

AMD fand zwischenzeitlich heraus, dass auch Ryzen und Epyc für die beiden Spectre-Lücken anfällig sind. Updates werden bzw. wurden hier gemeinsam mit den Betriebssystemherstellern erarbeitet und auch über Betriebssystemupdates verteilt. Gegen die Lücke Meltdown – das ist die mit dem Performance-Problem – sind Ryzen und Epyc aufgrund ihrer Core-Architektur immun.

Und zum Schluss noch ein Hinweis auf eine weitere, sehr hilfreiche Seite bei Heise Online. Dort hat man sich die Mühe gemacht, und die offiziellen Statements vieler Hersteller zusammen gestellt. Die Liste wird weiterhin aktualisiert.

 

RSS Feed

Sign up to our RSS feed and get the latest news delivered as it happens.

click here

Test out any of our solutions at Boston Labs

To help our clients make informed decisions about new technologies, we have opened up our research & development facilities and actively encourage customers to try the latest platforms using their own tools and if necessary together with their existing hardware. Remote access is also available

Contact us

Gamescom 2018

Latest Event

Gamescom 2018 | 21st - 25th August 2018, Cologne, Germany

Gamescom is focussed on pure entertainment, inspiration and innovation - so what better place to demo our Roamer MU-VR solution!

more info