Sicherheitslücke in Prozessoren Was hinter »Meltdown« und »Spectre« steckt

Die Sicherheitslücken existieren schon seit 20 Jahren. Während Meltdown nur Intel-Systeme zu betreffen scheint, bezieht sich Spectre auf ein grundsätzliches Design-Feature moderner Prozessoren. Einen wirkungsvollen Schutz gibt es noch nicht.

Nach der Nachricht, dass Intel-Prozessoren eine Sicherheitslücke aufweisen, die bereits seit 20 Jahren existiert, wurde nach und nach bekannt, dass das Problem tiefer liegt und mit einem grundsätzlichen Designansatz moderner Prozessoren zu tun hat. Zwar wurde die Lücke zuerst auf Intel-Prozessoren demonstriert, aber auch AMD- und ARM-Chips sind betroffen. Eine internationale Forschergemeinschaft, an der Mitarbeiter der Universität Graz beteiligt sind und Forscher von Google haben zwei Angriffsszenarien demonstriert.

Vorbeugende Programmausführung

Die Sicherheitslücke nutzt den Mechanismus der »speculative execution« aus. Programme enthalten zahlreiche Wenn-dann-Bedingungen oder »Case-of«-Verzweigungen, an denen der Programmablauf unterschiedliche Pfade einschlagen kann. Die Entscheidung, welcher Pfad genommen wird, hängt oft von Werten ab, die erst aus dem Speicher geladen werden müssen. Dazu benötigt ein Prozessor mehrere hundert Taktzyklen. Anstatt diese Zyklen mit Warten zu verbringen, berechnet der Prozessor Pfade, die mit hoher Wahrscheinlichkeit ausgeführt werden, schon im Voraus und verwirft die nicht benötigten Berechnungen später wieder. Der Programmablauf wird beschleunigt, weil das das Ergebnis für den "richtigen" Programmpfad dann schon feststeht.

Ein Angriff namens »Meltdown« nutzt aus, dass bei der Vorausberechnung, der »speculative execution«, auf Speicherbereiche zugegriffen wird, ohne dass geprüft wird, ob der ausführende Prozess dazu überhaupt berechtigt ist. Diese fehlerhafte »Privilege Escalation« ist ein Spezifikum von Intel-Prozessoren, was bedeutet, dass von Meltdown nur Intel-Prozessoren betroffen sind. Durch den Angriff kann der Speicherschutz für den Kernel unterlaufen werden. Wann immer ein laufendes Programm etwas Sinnvolles tun muss – wie z.B. in eine Datei schreiben oder eine Netzwerkverbindung öffnen – muss es vorübergehend die Kontrolle über den Prozessor an den Kernel übergeben, um die Aufgabe auszuführen. Um den Übergang vom User Mode in den Kernel Mode und zurück so schnell wie möglich zu gestalten, ist der Kernel in den virtuellen Speicheradressräumen aller Prozesse vorhanden, obwohl er für diese Programme unsichtbar ist. Wenn der Kernel benötigt wird, führt das Programm einen Systemaufruf durch, der Prozessor wechselt in den Kernel Mode und führt den Kernel aus. Wenn das erledigt ist, kehrt die CPU in den User Mode zurück und führt den ursprünglichen Prozess weiter aus. Durch den Meltdown-Angriff könnten Speicherinhalte wie Passworte oder geheime Schlüssel ausgelesen werden.