Die Sicherheitslücken Spectre und Meltdown profitieren von der Architektur moderner Hochleistungs-Prozessoren.

Spectre und Meltdown: Warum sind die Prozessor-Sicherheitslücken so schwerwiegend?

Elemente Aufmacherbild: Eric Gaba – Wikimedia Commons user: Sting (CPU), MrNick2018 (Spectre), Natascha Eibl (Meltdown), CC BY-SA 3.0

Autor: Stefan Achleitner

Selten war eine von Sicherheitsforschern entdeckte Lücke so schwerwiegend und so fundamental wie es bei den Anfang Januar veröffentlichten Lücken „Spectre“ und „Meltdown“ der Fall ist. Der folgende Artikel erklärt, warum es sich in diesen Fällen ohne Übertreibung um einen Sicherheits-GAU (Größter anzunehmender Unfall) handelt, und warum Software-Updates allein das Problem nicht vollständig aus der Welt schaffen können.

Um die Prozessorleistung von modernen Rechnern zu erhöhen, wird oft Caching verwendet. Daten, die häufig gebraucht werden, werden in einen schnellen lokalen Speicher geladen, auf den der Prozessor im Bedarfsfall sehr schnell zugreifen kann.

Moderne  Prozessoren gehen noch weiter und nutzen ein ähnliches Prinzip auch für Befehle. Man spricht dabei von „Out-of-order Execution”. Wird ein Befehl, der schon spekulativ ausgeführt wurde, während des Programmablaufs tatsächlich gebraucht, kann das die Performance  signifikant erhöhen.

Dazu führt der Prozessor spekulativ eine Reihe von Befehlen aus, die möglicherweise später bei der Ausführung des gerade aktiven Programms gebraucht werden. Diese spekulative Befehlsausführung lädt üblicherweise auch Daten in den Cache des Prozessors.

Aber genau dieses spekulative Ausführen von Befehlen ermöglicht die Sicherheitslücken, die unter den Namen „Spectre“ oder „Meltdown“ bekannt wurden. Ein Angreifer, der diese Lücken ausnutzen will, verfolgt das Ziel, dass die spekulative Befehlsausführung immer schief geht – die ausgeführten Befehle beziehungsweise ihre Ergebnisse also später nicht benötigt werden. Gleichzeitig versucht der Angreifer, dafür zu sorgen, dass es möglichst lange dauert, bis diese Fehlspekulation vom Prozessor bemerkt wird. Denn je länger die fehlerhafte Spekulation nicht bemerkt wird, desto mehr Nachfolgebefehle werden ausgeführt, und umso mehr Daten werden geladen.

Solang der Prozessor die Fehlspekulation nicht bemerkt, solange wird auch keine Fehlermeldung ausgelöst. In dieser Zeit können fast beliebige Folgebefehle ausgeführt werden, um ein bösartiges Ziel zu erreichen.

Meltdown vor allem für Intel-Rechner gefährlich

Um das Problem dieser Sicherheitslücke genau zu verstehen muss man den Unterschied zwischen „physischem“ und „virtuellen” Arbeitsspeicher im Rechners kennen und verstehen. Da physischer Arbeitsspeicher zwar sehr leistungsfähig, aber begrenzt ist, erweitern moderne Betriebssysteme diesen durch virtuellen Arbeitsspeicher. Um so eine Erweiterung für einen Prozess (ein Teilprogramm) transparent zu realisieren, wird der virtuelle Arbeitsspeicher entweder im schnellen physischen Arbeitsspeicher (RAM) oder auf einem langsameren Massenspeicher, zum Beispiel der Festplatte, abgebildet.

In Abhängigkeit von ihrer Nutzungsrate werden einzelne Speicherseiten des virtuellen Speichers entweder im schnellen physischen oder im langsamen Massenspeicher gelagert. Die Zugriffszeit auf den physischen Arbeitsspeicher kann dabei um ein Millionenfaches schneller sein als auf den langsameren Massenspeicher.

Dieses „Mapping“ zwischen verschiedenen Speichertabellen wird dem System beim Meltdown-Angriff zum Verhängnis.

Betriebssysteme wie Windows oder MacOS mappen üblicherweise den Addressraum des Kernels (also des Betriebssystemkerns) aus Performancegründen auf die Speicherseiten-Tabellen jedes User-Prozesses. Der Speicherbereich des Kernels ist dabei geschützt. Versucht ein User Prozess darauf zuzugreifen wird eine Fehlermeldung, eine sogenannte Exception (Ausnahmezustand) ausgelöst. Bis dies passiert kann aber einige Zeit vergehen – im Fall eines Angriffs vor allem dann, wenn der Angreifer sicherstellt, dass die abgefragte Seitentabelle sich nicht im Cache befindet.

Wird nun ein Befehl ausgeführt, der auf eine geschützte Speicheradresse zugreift, können weitere Folgebefehle ausgeführt werden, die vom Ergebnis des vorherigen Befehles abhängen. Dies kann so lange stattfinden, bis der Prozessor realisiert, dass er auf eine geschützte Speicheradresse zugegriffen hat. Durch diese Folgebefehle kann ein sogenannter Covert Channel (ein verdeckter Kanal) erzeugt werden, über den sich Informationen aus dem Prozessor nach Außen schmuggeln lassen.

Der Spectre-Angriff funktioniert bei Intel-, AMD- und ARM-Prozessoren

Anders als bei Meltdown wird bei Spectre nur auf den Adressraum eines User-Prozesses zugegriffen. Hierfür werden auch keine Exceptions benutzt, vielmehr basiert der Angriff auf einer bewusst falsch vorhergesagten spekulativen Ausführung eines Befehls. Die dadurch ausgeführten Folgebefehle können den gesamten Addressraum eines User-Prozesses auslesen. So kann zum Beispiel nach Passwörtern gesucht werden, die im Addressraum eines Browsers gespeichert sind.

Die beschriebenen Grundprinzipien sind bei Prozessoren unterschiedlicher Hersteller gleichermaßen zu finden. Deshalb sind AMD-Prozessoren entgegen erster Meldungen doch für beide Angriffsarten (also Spectre und auch Meltdown) empfindlich. Und auch die Prozessorarchitektur von ARM, auf denen praktisch alle aktuellen Smartphone- und Tablet-Prozessoren basieren, sind betroffen.

Das Grundproblem liegt in der Prozessorarchitektur

Die Probleme, die sich aus der spekulativen Ausführung von Befehlen ergeben, gehen sogar noch weiter:

Bei „wenn-dann-andernfalls“-Bedingungen (auf englisch if-then-else) wird vom Programm abhängig von Ergebnissen einer Berechnung ein bestimmter Pfad im Code eingeschlagen. Methoden wie „Branch Prediction“ versuchen, den Pfad, den ein Programm nehmen, vorherzusagen und den dort vorgesehenen Programmcode auszuführen, um so wieder eine Leistungssteigerung zu erzielen. Modernen Prozessoren gelingt diese Vorhersage von Programmabläufen großteils sehr zuverlässig.

Spectre und Meltdown machen sich auch dieses Prinzip zunutze. Dazu messen sie die Zeit, die der Prozessor für den Zugriff auf verschiedene Speicheradressen benötigt. Aus der gemessenen Zugriffszeit lassen sich Rückschlüsse darauf ziehen, welchen Programmzweig der Prozessor gerade spekulativ ausgeführt hat und welche Adresse sich somit gerade im Cache befindet. Auch auf diese Weise können Angreifer Daten auslesen, auf die sie eigentlich keinen Zugriff haben sollten.

Browseranbieter haben darauf reagiert, indem sie Zeitmesswerte, die etwa von Webseiten ausgeführten Java-Scripts zur Verfügung stehen, künstlich ungenauer gemacht haben. Doch auch diese Gegenmaßnahme kann Angriffe nur erschweren, aber keinen hundertprozentiegen Schutz bieten.

Ist die Hardware oder die Software schuld?

Diese Frage lässt sich gar nicht ganz eindeutig beantworten. Wie erklärt ist die Grundlage der beschriebenen Angriffsszenarien die „Out-of-order Execution” von Befehlen. Wirklich sicher sind nur Prozessortypen, die dieses Prinzip nicht nutzen. Dazu zählt etwa auch die CPU im beliebten Minicomputer Raspberry Pi. Sein Hersteller erklärt in einem Blog-Beitrag, warum die von ihm eingesetzten Prozessoren nicht von den Sicherheitslücken betroffen sind.

Doch bei Prozessoren, die „Out-of-order Execution” nutzen, ist diese Vorgehensweise gewollt, um ihre Rechengeschwindigkeit zu steigern. Das Problem liegt also nicht grundsätzlich darin, dass dieses Prinzip in Prozessoren verwendet wird – sondern wie es genau verwendet wird.

So gibt Intel zum Beispiel an, dass es sich bei Meltdown um keinen Bug in Intel-Produkten handle, sondern dass die neuen Angriffsvektoren bestimmte Eigenschaften von modernen Prozessoren ausnützen – auch wenn und gerade weil diese entsprechend ihrem Design korrekt funktionieren.  Zudem, so erklärt Intel, handelt es sich bei dem Angriff um einen sogenannten „Side channel attack” – also einen Angriff, bei dem der Angreifer indirekt bestimmte Effekte wie etwa Zeitabstände oder Energieverbrauch misst.  Laut Intel lassen sich solche Kanäle daher auch nicht vollständig schließen.

Es mag also berechtigt sein, dass sich die Hersteller dagegen wehren, wenn von einem „Prozessor-Bug“ gesprochen wird. Doch die Empfindlichkeit gegen die beschriebenen Angriffsvektoren liegt eben in der grundsätzlichen Architektur der Prozessoren begründet. Deshalb sind die Sicherheitslücken auch nicht ohne weiteres zu beheben – und lassen sich allein durch Softwareupdates auch nicht vollständig schließen.

Betriebssystem-Updates und Sicherheits-Patches können bis zu 30 Prozent Leistung kosten

Dennoch haben Hersteller wie Microsoft oder Apple haben bereits Softwareupdates herausgegeben, die die beschriebenen Angriffsszenarien zumindest erschweren sollen. Intel wird zudem Updates der sogenannten Microcodes herausgeben – Software, die das Verhalten der Prozessoren steuert und dazu vollständig innerhalb des Chips abläuft.

Insbesondere die Software-Patches der Betriebssysteme können jedoch je nach Platform in manchen Fällen Leistungseinbußen bis zu 30 Prozent verursachen – auch wenn die Beeinträchtigung bei vielen typischen Office- oder Web-Anwendungen eher in der Größenordnung von 5 Prozent liegt. Doch gerade Datenbank-Anwendungen und der Zugriff auf schnelle Massenspeicher wie SSDs kann stärker beeinträchtigt werden.  Dies ist vor allem für Cloud-Anbieter ein großes Problem, da ihr Geschäftsmodell stark von der Leistungsfähigkeit der Prozessoren abhängt. Gleichzeitig müssen sie aber auch die Sicherheit der Kundendaten gewährleisten.

Es sind bei Schwachstellen wie dieser vor allem die Hardware Hersteller gefragt. Zumindest hat Intel nach der Veröffentlichung von Spectre und Meltdown mit der Gründung einer neuen Sicherheitsabteilung reagiert.

Doch bis eine neue Hardwarearchitektur entwickelt ist, die komplette Sicherheit gegen Spectre und Meltdown bietet und dennoch das gewohnte Leistungsniveau beibehält oder es sogar weiter steigen kann, wird wohl noch einige Zeit vergehen. Zum Glück sind nach aktuellem Kenntnisstand noch keine Angriffe außerhalb von Labors, also in „freier Wildbahn“ bekannt. Aber die Sicherheitsforscher sind sich einig, dass dies nur eine Frage der Zeit sein wird.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert