Forscher der University of Maryland in den USA und der Tsinghua University in China haben eine Forschungsarbeit veröffentlicht, die eine neue Side-Channel-Angriffsmethode dokumentiert, die eine bislang unbekannte Hardware-Schwachstelle in Intel-Prozessoren ausnutzt. Obwohl die Schwachstelle die neuesten Prozessoren des Chip-Herstellers zu betreffen scheint, ist sie besonders effektiv bei Angriffen auf ältere Modelle, die ebenfalls von der Schwachstelle Meltdown betroffen sind. Das Paper wäre vermutlich von rein wissenschaftlichem Interesse, wäre da nicht folgender Umstand: Angreifer können sensible Informationen stehlen, indem sie die Daten von Statusregistern verändern.
Sie verstehen nur Bahnhof?
Sicherheitslücken in Hardware-Prozessoren, die mit der spekulativen Ausführung von Befehlen zusammenhängen, werden seit mehr als fünf Jahren intensiv erforscht. Um das Ganze möglichst zu vereinfachen, kann man alle vorgeschlagenen Angriffe folgendermaßen zusammenfassen: Die CPU wird irgendwie dazu gezwungen, Daten zu lesen, auf die der Benutzer keinen Zugriff haben sollte. Stellen Sie sich folgendes theoretisches Szenario vor: Das Programm des Angreifers hat keinen Zugriff auf den Verschlüsselungsschlüssel, der zum Schutz sensibler Daten verwendet wird. Wird die CPU angewiesen, „den Verschlüsselungscode einer bestimmten Adresse zu lesen“, wird diese Anweisung einfach nicht befolgt. Hilfe bekommt (der Angreifer) aber in Form einer spekulativen Ausführung von Befehlen – ein wichtiges Merkmal moderner CPUs, das es seit fast drei Jahrzehnten gibt: Denn zur Beschleunigung der Abläufe wartet der Prozessor nicht, bis ein Befehl beendet ist, sondern führt den nächsten bereits parallel zum vorherigen aus.
Überprüft der erste Befehl die Zugriffsrechte auf sensible Informationen, sollte er theoretisch nicht zulassen, dass der nachfolgende Befehl diese Informationen liest. Doch dafür ist es bereits zu spät, da der nachfolgende Befehl spekulativ ausgeführt wird. Man bedenke dabei, dass wir zu diesem Zeitpunkt noch keinen Zugriff auf diese Daten haben – die CPU aber schon. Im Falle bekannter Sicherheitslücken wie Spectre werden die Daten vorübergehend in den Cache der CPU geladen, können aber nicht einfach so gelesen werden. Sie lassen sich jedoch über Seitenkanäle auslesen, z. B. durch die wiederholte Ausführung eines Befehls, dessen Verarbeitungszeit von den Daten im Cache abhängt. Die Wiederholung eines solchen Vorgangs viele (tausende!) Male ermöglicht es Angreifern, Daten wiederherzustellen, indem sie einfach beobachten, wie schnell oder langsam ein scheinbar harmloser Befehl ausgeführt wird.
Wir sind uns darüber im Klaren, dass diese „einfache“ Beschreibung immer noch kompliziert klingt. In dem jüngsten Paper wird es sogar noch verwirrender, zumal die Autoren auf eine detaillierte Beschreibung des Angriffs verzichtet haben. Das nachstehende Diagramm gibt einen vollständigen Überblick:
Versuchen wir erneut Licht ins Dunkel zu bringen. EFLAGS ist ein Statusregistser im Intel-Prozessor, das den Betriebsstatus der CPU protokolliert. In diesem Register kann das Ergebnis von Berechnungen gespeichert werden, insbesondere wenn es gleich Null ist (das so genannte Nullflag oder Zero Flag). Jetzt kommt die Magie: Angenommen, ein Kollege von Ihnen denkt an eine Zahl zwischen 1 und 10 und wird aufgefordert, diese für sich zu behalten. Sie nennen ihm immer wieder die Zahlen von 1 bis 10 (auf der Suche nach irgendwelchen Hinweisen, die Ihren Kollegen verraten könnten), doch dieser will die richtige Antwort nicht mit Ihnen teilen und antwortet jedes Mal mit dem Wort „Chrysanthemum“. Doch immer wenn Sie die richtige Zahl erwähnen, braucht Ihr Kollege im Vergleich zu anderen Gelegenheiten etwas länger, um „Chrysanthemum“ zu antworten.
Etwas Ähnliches passiert bei diesem neuen Angriff: Wir führen zahlreiche Berechnungen mit sensiblen Daten durch. All diese Berechnungen werden spekulativ durchgeführt. Die Ergebnisse werden im Nullflag erfasst (gleich oder ungleich Null). Den Status dieses Flags können wir nicht direkt erfahren, bis wir einen ziemlich nutzlosen JCC-Befehl aus (speziell den JZ-Befehl – „jump if zero„), der etwas langsamer ausgeführt wird, sofern wir richtig liegen! Und genau diese messbare Verzögerung in der Antwort macht die Schwachstelle aus.
Bis dato kein Problem
Interessant an diesem Angriff ist vor allem, dass er nicht eigenständig funktioniert. Um sicherzustellen, dass die spekulative Ausführung der erforderlichen Anweisungen möglich ist, müssen die Angreifer eine weitere Sicherheitslücke ausnutzen. Das von uns behandelte Paper nutzt die 2018 entdeckte Meltdown-Schwachstelle, die gerne Zugriff auf Informationen gewährt, die für Außenstehende tabu sind. So konnten sensible Daten mit 100%iger Zuverlässigkeit auf allen alten CPUs gelesen werden, die von dieser Schwachstelle betroffen waren (in der Studie wurden Intel Core i7 der sechsten und siebten Generation verwendet). Zwar schlug das Experiment bei CPUs der zehnten Generation fehl, doch auch bei ihnen kam es zu einer gewissen Verzögerung bei der Ausführung eines bestimmten Befehls der JCC-Klasse.
Tatsächlich haben selbst flexiblere Angriffstypen wie Spectre, bei denen Informationen aus dem Cache der CPU gestohlen werden, einen eher begrenzten Anwendungsbereich. Doch zumindest in ihrem Fall war es offensichtlich, dass etwas unternommen werden musste: Die Wahrscheinlichkeit eines fortgeschrittenen Angriffs auf sensible Daten war nicht gleich null. In der neuen Studie geht es eher um eine Idee, die, wenn sie überhaupt funktioniert, auf ältere Intel-Prozessoren zutrifft.
Die Neuigkeiten selbst sind jedoch bedeutsam: Es gibt nun einen neuen Side-Channel-Mechanismus zum Extrahieren von Daten unter Verwendung des Flag-Statusregisters. Man kann nicht ausschließen, dass dieser Ansatz, in Kombination mit einer anderen Sicherheitslücke, in Zukunft auch neue CPUs betreffen wird. Möglicherweise wird das Problem aber auch gelöst, bevor wir einen neuen Angriff zu Gesicht bekommen: immerhin ist die Abhängigkeit der Befehlsausführungszeit von den Daten ein ziemlich gravierendes Problem. Es gibt eine ganze Unterdisziplin der Kryptographie, die sich mit dem Schutz von Verschlüsselungsalgorithmen vor Timing-Attacken beschäftigt.
In jedem Fall wird die Forschung im Hinblick auf die Besonderheiten moderner CPUs fortgesetzt. Zum Glück ist es genauso schwierig, Angriffe auf Hardware-Schwachstellen auszuführen, wie sie zu verstehen. Und auch wenn wir bisher keinerlei Möglichkeiten zur massiven Anwendung gesehen haben, sollten Sicherheitsbeauftragte in Unternehmen, die mit hochsensiblen Daten arbeiten, solche Bedrohungen einkalkulieren und zumindest deren Entwicklung beobachten.