Ein sauberer Schnitt: Das neue Tool "Blade" schneidet Spectre-Angriffe von Krypto-Code ab
Die Absicherung von Code gegen Spectre-Angriffe ohne größere Leistungseinbußen beschäftigt Cybersecurity-Forscher:innen schon seit Jahren. Jetzt hat CISPA-Forscher Dr. Marco Vassena zusammen mit Kollegen von der University of California in San Diego und der Vrije Universiteit in Amsterdam einen neuen Ansatz gefunden, um Sicherheit und Leistung für kryptografischen Code in Einklang zu bringen. Das Forscherteam präsentierte seine Ergebnisse auf der renommierten ACM Principles of Programming Languages (POPL) Konferenz und erhielt einen Distinguished Paper Award.
„Kryptographische Algorithmen sicher zu implementieren ist schwierig", erklärt Marco Vassena. Die Entwickler müssen den Code so schreiben, dass er sowohl schnell als auch sicher ist. Insbesondere darf er keine Spuren von geheimen Informationen in den gemeinsam genutzten Teilen des Prozessors hinterlassen, wo Angreifer sie finden und stehlen könnten. Fast zwei Jahrzehnte lang haben sich Forscher:innen mit diesem Problem befasst und verschiedene Techniken und Werkzeuge entwickelt, die Entwickler:innen bei dieser Aufgabe helfen sollen. Die Spectre-Attacken haben dieser Arbeit dann einen Strich durch die Rechnung gemacht.
Im Januar 2018 entdeckten Forscher:innen eine Sicherheitslücke in modernen Prozessoren, die nahezu jedes Gerät weltweit anfällig für sogenannte Spectre-Angriffe macht. Angreifer:innen können diese Schwachstelle ausnutzen, um hochsensible Daten wie kryptografische Schlüssel auszuspionieren – selbst in Code, der als sicher eingestuft und formal überprüft wurde. „Als Spectre-Angriffe bekannt wurden, wurde uns klar, dass selbst gut abgesicherte kryptografische Implementierungen nicht mehr sicher sind", sagt Vassena.
Die Schwachstelle, die Spectre-Angriffen zugrunde liegt, hat ihren Ursprung in einer Funktion moderner CPUs, die als spekulative Ausführung bezeichnet wird. Statt CPU-Zeit zu verschwenden, indem sie auf das Ergebnis einer langsamen Anweisung warten, spekulieren die Prozessoren, welche anderen Anweisungen als nächstes im Programm ausgeführt werden sollen, und beginnen frühzeitig mit deren Verarbeitung. Versierte Angreifer:innen können den Prozessor zwingen, Teile eines Programms auszuführen, die eigentlich nicht ausgeführt werden sollten. Insbesondere können sie die CPU dazu bringen, Anweisungen auszuführen, die geheime Spuren hinterlassen. Der Prozessor löscht diese auch dann nicht, wenn er den Fehler bemerkt. So können Angreifer:innen geheime Daten Bit für Bit unbemerkt durchsickern lassen.
Eine einfache Maßnahme gegen Spectre-Angriffe besteht darin, Prozessoren daran zu hindern, solche „undichten“ Anweisungen überhaupt erst auszuführen. Dazu müssen die Entwickler:innen spezielle Spekulationsbarrieren, so genannte Fences, in den Code einfügen. Theoretisch verhindern Fence-Befehle die Spekulation und können so Spectre-Angriffe aufhalten. In der Praxis ist allerdings bei realen kryptografischen Implementierungen nicht klar, wo die Entwickler die Fences einfügen sollten. „Um auf Nummer sicher zu gehen, können Entwickler Fences vor jeder solchen Anweisung einfügen, aber das führt zu extrem langsamem Code", erklärt Vassena. Alternativ können sie eine fundierte Vermutung darüber anstellen, wo sie Fences platzieren sollten. Dies führt zu weniger Fences und schnellerem Code, aber wenn auch nur ein einziger Fence fehlt, kann das gesamte Programm anfällig für Spectre-Angriffe werden.
Blade bietet eine einfache Lösung für dieses Problem. „Unser Tool fügt Fences nur dort ein, wo sie benötigt werden", sagt Vassena. Der Algorithmus, der hinter Blade steht, ist in der Programmiersprachtheorie verwurzelt. Er spürt auf, wo Daten in einem Programm fließen, und fügt automatisch Fences ein, um potenzielle Lecks aufgrund von Spekulationen zu verhindern. Daher konnten Vassena und seine Kollegen formal beweisen, dass die von Blade reparierten Programme tatsächlich sicher gegen Spectre-Angriffe sind. Da Blade zudem nur dann Fences einfügt, wenn sie wirklich benötigt werden, sind die Auswirkungen auf die Gesamtleistung minimal.
Die Arbeit an Blade wurde auf dem jährlichen Symposium on Principles of Programming Languages (POPL), einer hochrangigen Konferenz über Programmiersprachen und -systeme, der Community vorgestellt und mit dem "Distinguished Paper" ausgezeichnet. Mit dieser Auszeichnung sollen Arbeiten hervorgehoben werden, die sich durch ihre Originalität und Klarheit auszeichnen und so einem breiteren Publikum nähergebracht werden.
Marco Vassena ist seit 2019 Postdoktorand am CISPA und Mitglied des CISPA-Stanford Center of Cybersecurity, einem vom Bundesministerium für Bildung und Forschung geförderten Programm. Marco ist in Italien aufgewachsen und hat an der Chalmers University of Technology in Schweden promoviert. Seine Forschungsinteressen erstrecken sich auf die Bereiche Sicherheit und Programmiersprachen, mit dem übergeordneten Ziel, praktische sichere Systeme auf einer soliden Grundlage zu entwickeln.