Wie man sich vor Spectre, Meltdown und Co. schützt

Seit dem Aufkommen von Spectre und Co sind Sicherheitsverantwortliche damit beschäftigt, die Bedrohungen einzudämmen beziehungsweise zu vermindern.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Wie man sich vor Spectre, Meltdown und Co. schützt
Lesezeit: 30 Min.
Von
  • Kurt Garloff
Inhaltsverzeichnis

Seitdem im Januar 2018 die gravierenden Prozessor-Sicherheitslücken Spectre und Meltdown publik wurden, kommen Sicherheitsverantwortliche nicht zur Ruhe. Sicherheitsforscher der TU Graz, von Googles Project Zero und andere hatten Spectre und Meltdown 2017 entdeckt und im Juni 2018 die betroffenen Prozessorhersteller informiert: vorneweg Intel, aber auch ARM, AMD, IBM und andere. Mittlerweile sind weitere Sicherheitslücken dazugekommen, jüngst die ZombieLoad-Lücke von Mitte Mai 2019.

Vereinfacht gesagt liegt das Problem bei den Sicherheitslücken Spectre und Meltdown darin, dass die meisten auf Performance optimierten modernen CPUs Maschinenbefehle im Voraus spekulativ ausführen. Das bringt einen hohen Leistungsgewinn, denn die CPU ist im Vergleich zu den anderen Komponenten sehr schnell. Benötigt sie etwa ein Datum aus dem Hauptspeicher, das nicht im Cache liegt, wartet sie oft über 200 Taktzyklen. Oder sie verbringt ihre Zeit mit Sinnvollerem, etwa einem anderen Hyperthread oder eben dem spekulativen Ausführen von Befehlen, die eigentlich später dran wären. Das passiert versteckt im Prozessor, das Programm soll davon nichts merken. Meistens geht das gut, und kommt das Datum endlich aus dem Speicher, sind schon Dutzende weitere Schritte fertig und können offiziell sichtbar gemacht werden. Diese Vorausberechnung heißt Out-of-Order-Architektur (OoO).

Natürlich verspekuliert sich der Prozessor hin und wieder. Dann macht er alles wieder rückgängig: Er verwirft die Ergebnisse und versetzt alle Register wieder in den Zustand, als hätte die Fehlspekulation nie stattgefunden. Das wäre kein Sicherheitsproblem, hätten die CPU-Designer nicht übersehen, dass das messbare Seiteneffekte hat. So landet Speicher im Cache – und der wird nicht aufgeräumt. An die Daten im Cache kommt man nicht direkt ran, sehr wohl lässt sich aber an der Geschwindigkeit des Zugriffs ablesen, ob eine Adresse im Cache ist oder nicht. Hängt diese von spekulativ genutzten Daten ab, kann man auf Letztere rückschließen.