Spectre und Meltdown - da war doch was?

Von Hitzestau - 06.02.2019

Inhaltsverzeichnis

Es ist jetzt etwas mehr als ein Jahr her, dass die Bombe geplatzt ist. Spectre und Meltdown verhagelten im Januar 2018 der gesamten IT-Branche den Start ins neue Jahr, der eigentlich wie üblich an der CES in Las Vegas zelebriert werden sollte. Meldungen von tief sitzenden Sicherheitslücken in so ziemlich allen Prozessoren beherrschten die Schlagzeilen. Die IT-Welt schien eiskalt erwischt worden zu sein.

Von: agsandrew
Quelle: Shutterstock

Wir wollen in diesem Beitrag schauen, wie sich die Lage für den durchschnittlichen PC-User ein Jahr danach präsentiert und wie die damals veröffentlichten Updates beim Endverbraucher angekommen sind.

Lücken mit grosser Wirkung

Beginnen wir mit einem Erklärungsversuch. Spectre und Meltdown erschüttern moderne Mikroprozessoren im wahrsten Sinne des Wortes in ihrem Kern. Denn es geht darum, wie ein Prozessor Programmbefehle und die damit verbundenen Speicherabfragen abarbeitet und wie er im Zwischenspeicher Informationen ablegt. Einer der Gründe warum moderne Prozessoren so schnell sind, hat damit zu tun, dass sie Informationen sozusagen "auf Vorrat" in den Zwischenspeicher laden, auch wenn noch gar nicht klar ist, ob die jeweiligen Informationen wirklich gebraucht werden. Der Trick besteht nun darin, unter Umgehung aller Sicherheitsbarrieren und Zugriffsrechte gezielt auf diese Informationen im Zwischenspeicher zuzugreifen. Es handelt sich um einen fundamentalen Design-Fehler, der hier ausgenutzt wird.

Auch Technologien wie Simultaneous Multithreading (SMT) oder Hyper-Threading schaffen zusätzliche Angriffsflächen. Vereinfacht gesagt, verdoppeln sie die Anzahl der Threads, die gleichzeitig im Prozessor ausgeführt werden können. Die Threads, die dabei in den virtuellen Kernen laufen, sind jedoch schlechter abgesichert. Als Reaktion auf die bekanntgewordenen Lücken empfahl das OpenBSD Project im Juli 2018, Hyper-Threading zu deaktivieren und gab bekannt, in der längerfristigen Planung Hyper-Threading nicht mehr zu unterstützen.

Unter den beiden Begriffen Spectre und Meltdown werden verschiedene Angriffs-Szenarien zusammengefasst. Für technische Details verweisen wir auf den Blogbeitrag von Google’s Projekt Zero, in dem am 3. Januar 2018 die Sicherheitslücken beschrieben wurden. Zudem sind die englischsprachigen Wikipedia-Beiträge ein guter Startpunkt, ums sich mehr im Detail zu informieren: Meltdown / Spectre.

Von: Jaiz Anuar
Für Spectre und Meltdown haben sich Logos etabliert.
Quelle: Shutterstock

Beide offenbarten eine Lücke von bisher noch nie dagewesener Dimension, weil Mikroprozessoren heute nicht nur in Computern, Servern und Mobilgeräten wie Smartphones und Tablets stecken, sondern auch in Routern, Settop-Boxen, Smart TV’s, Industrierobotern, Klimaanlagen – also kurz gesagt, überall wo Daten ein- und ausgegeben und Berechnungen gemacht werden müssen. Die Aufzählung ist natürlich keineswegs vollständig, aber die grosse Bandbreite an potentiell betroffenen Geräten zeigt, wie wir als Gesellschaft verwundbar geworden sind.

Von Spectre waren nicht nur die grossen CPU-Hersteller Intel und AMD betroffen, sondern auch andere Chiphersteller wie NVIDIA und verschiedene ARM-basierte Chips. Auch die "A"-Chips, wie sie in den iPhones und iPads von Apple zum Einsatz kommen, waren betroffen. Meltdown hingegen schien primär die von Intel gefertigten CPU’s zu betreffen – und hier reicht die Liste der betroffenen Prozessoren bis ins Baujahr 1995 zurück.

Leben mit fehlerhafter Hardware

Veröffentlich wurden die beiden Sicherheitslücken ja bekanntlich am 3. Januar 2018, die betroffenen Unternehmen wie Intel und andere hatten jedoch schon seit dem Sommer 2017 Kenntnis davon. Damals war ein Stillschweigen vereinbart worden, um zuerst Lösungen erarbeiten zu können. Die Öffentlichkeit zu informieren, war für den 9. Januar 2018 geplant gewesen. Aber wie bereits gesagt, platzte die Bombe dann schon sechs Tage früher.

In den ersten Tagen nach der Veröffentlichung überschlugen sich die Meldungen, da auch nicht klar war, welche Prozessoren-Hersteller und in welchem Ausmass wirklich betroffen waren. Insbesondere Intel wehte ein scharfer Wind ins Gesicht. Und im Gegenzug bemühte sich das Unternehmen zu betonen, dass auch andere Hersteller betroffen seien.

Auch die sonst gut informierte Linux-Community war nicht vorab informiert worden. Linus Torvalds kritisierte Intel sehr heftig und warft Intel vor, auch nach der Bekanntgabe der Lücken mehr an öffentlichkeitswirksamen Statements interessiert zu sein, als an einer effektiven Behebung der Fehler.

Bleiben wir für den weiteren Verlauf des Artikels bei den Intel-Prozessoren. Die grosse Frage war, wie man das Problem lösen sollte. Die alten Prozessoren einfach durch neue auszutauschen, war aus verschiedenen Gründen nicht möglich, denn es existierten keine Prozessoren, welche gegen die Angriffslücken abgesichert waren. Und auch wenn die Möglichkeit schnell neue Prozessoren herzustellen bestanden hätte, wäre die Aufgabe bei allen Computern und Servern weltweit diese austauschen schlicht nicht umsetzbar gewesen. In der IT-Branche existieren keine Abläufe wie man es beispielsweise von der Automobil-Branche kennt, die immer wieder mal Rückrufaktionen durchführt.

Also musste man Wege finden mit der fehlerbehafteten Hardware zu Leben. Konkret bedeutete dies, ein Hardware-Problem rein mit Software zu lösen. Klar war auch, dass es in absehbarer Zeit keinen kompletten Schutz gegen die unerlaubten Zugriffe auf Informationen im Speicher geben würde.

Ein erster Ansatzpunkt hierfür waren Anwendungsprogramme und Betriebssysteme: Entwickler und Hersteller veröffentlichten zahlreiche Updates und Sicherheitspatches. Ältere Software oder Programme, die nicht mehr weiter entwickelt wurden, bekamen natürlich keine Anpassungen mehr.

Einen weiterer Hebel setzte direkt bei den Prozessoren an: Auch sie haben ein Betriebssystem, den so genannten Mikrocode. Dieser ist immer auf den jeweiligen Prozessoren-Typ zugeschnitten. Intel veröffentlichte für viele seiner verschiedenen Prozessor-Generationen und -Baureihen Mikrocode-Updates. Zudem wurde der Chip-Hersteller nicht müde zu betonen wie wichtig es sei, vom System- oder Betriebssystem-Hersteller veröffentliche Updates unverzüglich zu installieren: "Check with your operating system vendor or system manufacturer and apply any available updates as soon as they are available..." schrieb Intel schon in einem am 3. Januar 2018 veröffentlichten Statement.

Was in der Theorie so einfach tönte, entpuppte sich in der Praxis jedoch schnell als das Gegenteil: Verwirrung und Verunsicherung stifteten Berichte über veröffentlichte Updates, die fehlerhafte Mikrocodes enthielten und deshalb schnell wieder zurückgezogen wurden. Und Hardware-Probleme rein mit Software zu lösen, schien auch bei der Rechen-Leistung seinen Preis zu fordern: Zur Frage, wieviel langsamer Systeme nach dem Einspielen von Sicherheits-Patches sein würden, gab es die unterschiedlichsten Meldungen. So genannte "Update-Verweigerer" benutzten ihre Systeme lieber weiter im ungepatchten Zustand, weil sie Performance-Einbussen oder Probleme mit der Stabilität befürchten.

Updaten, aber wie?

Auch wenn sich die Situation nach ein paar Monaten etwas beruhigt hatte und fehlerhafte Updates korrigiert worden waren, blieb eine Frage grundsätzlich bestehen: Wie gelangen die Updates auf die Millionen von PC-Systemen der Endverbraucher?

Grundsätzlich können Mikrocode-Updates via das BIOS/UEFI des jeweiligen Mainboards eingespielt werden. Ein anderer Weg führt über das Betriebssystem, welches bei jedem Bootvorgang die angepassten Mikrocodes aufspielt. Zur rein technischen Herausforderung, Lösungen gegen Spectre und Meltdown zu finden, kam also noch das Problem der Distribution.

Firmware direkt flashen

In diesem Kapitel wollen wir schildern, wie weit wir gegangen sind bzw. gehen mussten, um bei einem einzelnen PC die aktuellste Version von Mikrocodes aufzuspielen. Der von Intel propagierten Aufforderung immer alle zur Verfügung stehenden Updates einzuspielen auch tatsächlich nachzukommen, erwies sich beim PC einer Bekannten als alles andere als einfach – und das rund 10 Monate nachdem die beiden Sicherheitslücken bekannt geworden waren.

Werfen wir kurz einen Blick zurück: Das System basierte auf einem Intel i7-7700K und einem STRIX Z270E-Mainboard von Asus. Im August 2018 hatten wir die Windows 10-Installation auf den neusten Stand gebracht und die letzte BIOS/UEFI-Version (vom 18. April 2018 / Version 1302) von Asus installiert. Alles lief zuerst einwandfrei, dennoch erwies sich danach das System im täglichen Betrieb als zunehmend instabil und es kam immer wieder zu unmotivierten Neustarts, die sich jedoch nicht reproduzieren liessen. Für die Benutzerin war diese Situation natürlich sehr unbefriedigend. Ein folgendes Windows-Update brachte dann das System sogar zum Total-Absturz.

Mit dem Wissen über Spectre und Meltdown im Hinterkopf machten wir uns auf die Suche nach möglichen Ursachen. Wir stellten fest, dass man sich vom oben erwähnten BIOS/UEFI-Update vom April 2018 nicht täuschen lassen sollte, denn es enthielt nur Mikrocode-Updates vom Januar, obwohl Intel im April eine neuere Version nachgeliefert hatte, wie man unten auf dem Screenshot zur CPU-ID 906E9 erkennen kann. Dies war auch in den gängigen Online-News kommuniziert worden, nur hatte ASUS die neuen Mikrocodes nie mehr in die Firmware eingepflegt. Hier vermuteten wir auch eine Ursache für die Probleme mit der Stabilität der Windows-Installation.

Also war die nächste Frage, wie wir die Mikrocodes trotzdem installieren könnten. Mit weiteren Online-Recherchen sind wir dann auf das Tool UEFI BIOS Updater (UBU) gestossen. Mit ihm haben wir die aktuellste BIOS-Version von Asus und den aktuellsten Mikrocode von Intel zu einem neuen Update zusammengefügt – eine Aufgabe, die eigentlich ASUS als Mainboard-Hersteller hätte übernehmen müssen. Im folgenden Screenshot sieht man, dass das letzte Update für den Prozessor 906E9 vom 16. Juli 2018 stammt.

Abgesehen vom notwendigen Vertrauen in die Entwickler, dass man hier keinen schadhaften Code untergeschoben bekommt, hatte diese Geschichte noch einen anderen Haken: Die Sicherheits-Signatur des Original-BIOS/UEFI von Asus geht bei diesem Prozess verloren, daher scheiterten alle Versuche, "unser" Update zu installieren. Es klappte weder mit EZ Flash von Asus noch mit diversen Tools unter Windows. Und über die Möglichkeit, das BIOS von einem USB-Stick zu flashen (USB BIOS Flashback), verfügte das Mainboard auch nicht. Asus verweigert aus gutem Grund die Installation von unsignierten BIOS-Versionen, nur entpuppte sich genau dieses Sicherheits-Feature in unserem Fall als unüberwindbares Hindernis. Und etwas anderes darf man auch nicht vergessen: Bei all diesen Versuchen bestand auch immer die Möglichkeit, den BIOS-Chip zu beschädigen und das Mainboard unserer Bekannten in einen wertlosen "Brick" zu verwandeln.

Da wir an einem Punkt angelangt waren, wo wir alle Möglichkeiten ausgeschöpft hatten, blieb uns nur noch eins übrig, den BIOS-Chip auf dem Mainboard direkt zu flashen und somit die Sicherheits-Barrieren von Asus auf sehr brachiale Weise zu umgehen. Dazu haben wir uns in die Thematik eingelesen und uns die notwendigen Werkzeuge besorgt. Das linke Bild zeigt einen Flasher, mit dem man BIOS-Chip lesen und beschreiben kann. Weil der Chip auf dem Mainboard verlötet war, mussten wir die rechts abgebildete Zange verwenden, um an den Chip ranzukommen.

Text. Quelle: amazon.de
Text. Quelle: amazon.de

Nachdem wir mit einem BIOS-Chip von einem alten Mainboard das Lesen, Löschen und Wiederbeschreiben des Chips geübt hatten, haben wir uns an das System unserer Bekannten gewagt. Hier haben wir zuerst alle Kabelverbindung getrennt, das Mainboard ausgebaut und alle Komponenten wie CPU, RAM und M.2-SSD entfernt, um sie vor möglichen Stromflüssen und Interaktionen mit dem BIOS-Chip zu schützen. Auch hier bestand natürlich die Gefahr Hardware zu beschädigen, was dann auch durch die Garantie nicht mehr abgedeckt gewesen wäre. Auf den folgenden beiden Bildern sieht man, wie wir die Zange auf dem BIOS-Chip angeklemmt haben.

Mit dem Flasher haben wir es schlussendlich im ersten Anlauf geschafft die neue Firmware, welche wir mit UBU vorbereitet hatten, auf den Chip aufzuspielen. Nachdem wir die Hardware wieder zusammengebaut hatten, startete der PC zu unserer Erleichterung ohne Probleme. Wir haben dann Windows 10 neu installiert, und das System läuft seitdem wieder stabil und ohne Abstürze.

Glücklicherweise hat alles so geklappt, wie wir es uns vorgestellt hatten. Sonst wäre es für unsere Bekannte sehr unbefriedigend geworden, denn sie hätte sich sehr wahrscheinlich mit einem unstabil laufenden PC arrangieren müssen. Aber somit war ihr Computer jetzt auch nach dem aktuellen Kenntnisstand abgesichert. Die Kosten für die Tools und unsere Arbeit gingen zu ihren Lasten – auch wenn wir sie natürlich gerne ASUS in Rechnung gestellt hätten!

Grosse und kleine Assemblierer

Ganz anders als bei diesem Beispiel mit dem selbstgebauten PC unserer Bekannten war die Situation bei den grossen Assemblierern wie Acer, Dell, HP oder Lenovo. Hier erwarteten die Kunden zu recht, dass die Unternehmen Updates bereitstellen würden, auch wenn es dann natürlich an den Kunden selbst lag, diese auch zu aufzuspielen. Für welche Baujahre und Modelle dies im einzelnen von Seiten der Hersteller getan wurde, können wir von aussen heute nicht nachvollziehen.

Bei kleineren Marken wie Digitec oder Steg dürfte die Situation dann allerdings wieder ganz anders ausgesehen haben. Einmal zusammengebaute Systeme werden verkaufsfertig verpackt und danach bleibt es am Kunden hängen, anstehende Updates durchzuführen. Und nur schon aus Garantie-Gründen würde kein Assemblierer so weit gehen und BIOS-Chip so zu flashen, wie wir es im vorangegangen Kapitel beschrieben haben.

Eine Sonderstellung in diesem Zusammenhang nahmen Apple sowie Microsoft mit den Surface-Geräten ein. Für die Mac-Computer konnte Apple die Sicherheitsupdates mit Mikrocodes direkt über die macOS-Updatefunktion bereitstellen, da Apple ja genau weiss, welche Prozessoren in den Macs verbaut worden sind. Die Surface-Geräte erhielten ihre Updates über das normale Windows-Update.

In der Linux Community war Ende Januar 2018 die erste Kernel-Version (4.15) frei gegeben worden, die Anpassungen für Spectre und Meltdown enthielt. Seitdem sind natürlich weitere Versionen veröffentlich worden, weil mit der Zeit von der Community auch bessere Methoden gegen die unerlaubten Speicherzugriffe entwickelt wurden.

Zudem nutzen zahlreiche Linux-Distributionen die Möglichkeit, während dem Startvorgang des Computers angepassten Mikrocode nachzuladen. Auch Microsoft hat in der Zwischenzeit für Windows 10 die Möglichkeit freigegeben beim Bootvorgang eine aktualiserte Version vom Mikrocode zu laden.

Die Situation ist immer noch unbefriedigend

Ein Jahr nach der Veröffentlichung der Sicherheitslücken sind die grossen Schlagzeilen von den Frontseiten verschwunden. Sie sind schon lange von neuen Horrormeldungen über Hacks, Datendiebstähle und Sicherheitsprobleme abgelöst worden.

Daraus darf man jedoch nicht den Schluss ziehen, dass heute bei der Mehrheit der Systeme und Prozessoren die Lücken geschlossen wurden. Wenn man davon ausgeht, dass viele der weltweit im Einsatz stehenden Computer heute vier bis fünf Jahre alt sind, dürften bei den meisten von ihnen die benötigten Mikrocode-Updates nie angekommen sein.

Den Mainboard-Herstellern müssen wir ein schlechtes Zeugnis ausstellen: Intel stellte zwar Mikrocodes für viele der betroffenen Prozessoren bereit. Aber die Mainboard-Hersteller integrierten diese nicht immer in ihre Firmware, weil die Boards viel zu schnell als "end-of-life" gelten, auch wenn das Mainboard noch nicht alt ist. So blieb der Mikrocode vieler Prozessoren ungepatchet, was potentiell wiederum zu neuen Problem führen kann, zum Beispiel wenn es mit späteren Windows-Updates zu Konflikten im System kommt, weil die Mikrocodes auf einem alten Stand sind.

Derartige Probleme mit der grossflächigen Verteilung von Updates sind in der IT-Welt aber leider kein Einzelfall. Denn es geht hier nicht um Software- oder Treiberupdates, die dem Benutzer zur Installation angezeigt werden, sondern um Firmware-Updates. Als Benutzer hat man meistens keinen direkten Zugriff auf derartige Updates und kann sie auch nicht selbstständig installieren.

Unterdessen hat Intel erste Prozessoren herausgebracht, die auch auf der Hardware-Ebene teilweise gegen Spectre und Meltdown abgesichert sind. Es handelt sich dabei um die so genannten Whiskey Lake-U Prozessoren, die im September 2018 lanciert worden sind und für den Einsatz in stromsparenden Notebooks, Tablets und Convertibles gedacht sind.

Eine weitere Entwicklung die sich abzeichnet, ist das "Wettrennen" um die Anzahl Prozessor-Kerne. Aktuell hat Intel-Konkurrent AMD hierbei die Nase vorn und macht mit Prozessoren mit bis zu 16 Kernen mächtig Druck im Desktop-Segment. Da somit Technologien wie Hyper-Threading eher überflüssig werden, kann man sich auch von dieser Entwicklung ein Plus an Sicherheit versprechen, welches nicht auf Kosten der Leistung geht.

Quelle: Shutterstock

Abschliessend sei gesagt, dass Spectre und Meltdown im wahrsten Sinne des Wortes grosse Lücken offenbart haben. Und dies nicht nur in den betroffenen Prozessoren, sondern auch bei der Bewältigung der Probleme und der Verteilung von Lösungen. IT-Systeme, auch wenn es nur der PC zuhause unterm Schreibtisch ist, sind extrem komplex und es sind viele verschiedene Parteien und Komponenten involviert. Dies hat schlussendlich dazu geführt, dass gerade der durchschnittliche Endverbraucher oft mit den Problemen alleine sitzen gelassen wurde oder er selber viel Energie, Zeit und Geld investieren musste, um wieder einen abgesicherten und stabil laufenden Computer zu haben. Wobei "abgesichert" in diesem Zusammenhang sich natürlich immer auf den aktuellen Kenntnisstand bezüglich möglicher Angriffsflächen bezieht.

Als Konsequenz von Spectre und Meltdown sollte die IT-Industrie anerkennen, dass es sich bei den Problemen mit der Verteilung von sicherheitsrelevanten Updates um einen Mangel an Service handelt, was eine Herausforderung für die gesamte Branche darstellt und die Verantwortung nicht einfach zwischen den grossen Unternehmen hin- und hergeschoben werden kann. Es muss in Zukunft sichergestellt sein, dass sicherheitsrelevante Updates auch wirklich für Endkunden bereitgestellt werden – auch wenn die betroffenen Geräte schon älteren Datums sind.

Bildquellen:
Header-Bild: Shutterstock