Spectre & Meltdown: CPU-Schwachstellen im Jahr 2019

7 Jan 2019

Auf dem 35. Chaos Communications Congress, fast ein Jahr nach der ersten Veröffentlichung über die CPU-Hardwareschwachstellen Meltdown und Spectre, sprach eine Forschungsgruppe der Technischen Universität Graz, Österreich, über den aktuellen Stand der Dinge im Hinblick auf bekannte CPU-Hardwareschwachstellen. Achtung, Spoileralarm: Das vergangene Jahr brachte eine Vielzahl von ihnen ans Licht.

Spectre und Meltdown in CPUs: Das erwartet uns 2019

Spectre und Meltdown kurz zusammengefasst

Erinnern wir uns zunächst daran, was Meltdown und Spectre eigentlich sind und wie sie sich voneinander unterscheiden.

Die Schwachstelle Meltdown liegt der Fähigkeit moderner CPUs, Anweisungen in anderer Reihenfolge (Out-of-order execution) ausführen zu können, zugrunde. Dieses Feature ist besonders zur Beschleunigung der Codeverarbeitung sehr praktisch; in einigen Fällen verarbeitet die CPU jedoch fehleranfälligen Code, der nicht ausgeführt werden sollte. Das heißt, dass der Code zunächst von der CPU ausgeführt wird und erst dann offensichtlich wird, dass der Vorgang nicht abgeschlossen werden kann – derartige Situationen treten deshalb auf, weil Befehle „out of order“ ausgeführt werden.

Obwohl die Ergebnisse solcher Vorgänge nicht übermittelt oder gar verwendet werden, hinterlassen sie dennoch Spuren auf Mikroarchitekturebene – nämlich im Cache-Speicher der CPU, von dem sie dann extrahiert werden können. Aus diesem Grund kann der Cache dazu verwendet werden, an Daten zu gelangen, auf die unter normalen Umständen nicht zugegriffen werden könnte; beispielsweise auf Passwörter. Und so funktioniert’s: Ein Programm fordert den Zugriff auf Daten im Speicher. Das System antwortet auf diese Forderung vernünftigerweise mit einer Zugriffsverweigerung aufgrund fehlender Zugriffsberechtigung. Aufgrund der Out-of-order-Ausführung landet das Kennwort aber dennoch im Cache und kann von dort aus herausgefiltert werden.

Die Sicherheitslücke Spectre ist Meltdown im Grunde genommen sehr ähnlich, und obwohl sie ebenfalls mit der CPU-Rechenbeschleunigung verbunden ist, ist Spectre auf das Sprungvorhersagefeature moderner CPUs zurückzuführen. Im Wesentlichen kann eine CPU mit einer gewissen Genauigkeit vorhersagen, dass Aktion B, da diese für gewöhnlich auf Aktion A folgt, ausgeführt werden kann, bevor die Ergebnisse von Aktion A überhaupt bekannt sind. Wird die Vermutung bestätigt, indem Aktion B folgt, ist alles in Ordnung – wenn die Ergebnisse von Aktion A zeigen, dass die CPU Aktion С anstelle von Aktion B abgeschlossen haben sollte, verlässt die CPU den B-Branch und wechselt zu einem anderen, um Aktion C abzuschließen.

Die Sprungvorhersage ist trainierbar und speichert in den meisten Fällen die Aktionssequenzmuster, wodurch die CPU-Leistung deutlich verbessert werden kann (wenn auf Aktion A mehrmals Aktion B folgt, nimmt die CPU logischerweise an, dass dies der Normalfall ist); und dennoch gibt es Fehlprognosen.

Wenn Sie das System lange genug trainieren, indem Sie ihm zeigen, dass ein bestimmter Sprung der richtige ist und dann einen Parameter zu einem fehlerhaften Parameter verändern, führt die CPU diesen trotzdem erstrangig aus und hebt ihn erst dann wieder auf, wenn sie herausgefunden hat, dass eigentlich ein anderer Parameter hätte ausgeführt werden sollen. Ähnlich wie bei Meltdown kann das Ergebnis der Aktion jedoch weiterhin bestehen bleiben – beispielsweise im Cache, wo es erneut extrahiert werden kann.

Die Folgen sind in etwa gleich: Spectre öffnet eine Falltür für den unberechtigten Zugriff auf Daten. Dieser Zugriff kann nur dann erfolgen, wenn die Sprungvorhersage fehlschlägt. Die einfache Wahrscheinlichkeitstheorie sagt uns allerdings, dass das früher oder später geschehen wird.

Ein Jahr später: zwei Dutzend neue Specter- und Meltdown-Variationen

Nach Entdeckung der ersten Meltdown- und Spectre-Schwachstellen begannen die Forscher, sich immer aktiver mit der Materie auseinanderzusetzen und entdeckten bald ähnliche Probleme, die lediglich kleinste Unterschiede aufwiesen. Wie sie herausfanden, setzen CPU-Entwickler auch andere Optimierungen ein, die zu Meltdown- oder Spectre-ähnlichen Schwachstellen führen. Das Forschungsteam der Grazer Universität erwähnt 14 Meltdown- und 13 Spectre-ähnliche Sicherheitslücken – das sind insgesamt 27 CPU-Hardwareschwachstellen; deutlich mehr als die zwei Schwachstellen, die noch Anfang 2018 zu diesen beiden Familien gehörten.

Klassifizierung der diesjährigen Meltdown- und Spectre-Varianten

Auch wenn der Chip-Entwickler AMD zuvor behauptet hatte, dass seine CPUs keiner Meltdown-Schwachstelle ausgesetzt waren, entdeckten die Forscher eine Meltdown-Variante (Meltdown-BR), die perfekt mit AMD-CPUs funktioniert hätte. Somit sind/waren zu diesem Zeitpunkt die CPUs der drei weltweit größten Anbieter – AMD, ARM und Intel – sowohl für Meltdown als auch für Spectre anfällig – zumindest für einige der Varianten beider Familien.

Im Januar 2018 begannen Unternehmen mit der Veröffentlichung von Patches für CPU-Mikrocodes, Betriebssysteme und individuelle Programme, um dem ganzen Spuk ein Ende zu setzen. Leider sind Spectre und Meltdown Hardwareschwachstellen; somit existieren sie auf Hardwareebene und können daher nicht vollständig mit Software-Patches behoben werden.

Aus diesem Grund wurde einer der Patches im Linux Betriebssystemkern integriert, verlangsamte jedoch das System zu sehr und wurde nach einiger Zeit erneut aus dem Code entfernt.

Die Sicherheitslücke Spectre ist deshalb problematisch, weil sie auf verschiedene Komponenten der Mikroarchitektur abzielt; daher wäre die Erstellung eines individuellen Patches für jede Komponente notwendig. Für jeden dieser Patches müssten dann bestimmte Funktionen deaktiviert oder spezifische zusätzliche Aktionen ausgeführt werden, was zu einem zusätzlichen Leistungsabfall führen würde.

Tatsächlich wirken sich Patches in vielen Fällen so stark auf die Leistung aus, dass ein gepatchtes System langsamer arbeitet als eines, bei dem die anfälligen CPU-Komponenten vollständig deaktiviert werden.

Radikale Lösung — so entfernen Sie die Schwachstelle mit Sicherheit 😉

Die Zukunft von Spectre und Meltdown

Im Oktober 2018 kündigte Intel an, dass seine neuen CPUs (2019er Generation) Spectre- und Meltdown-Schutz auf Hardwareebene bieten werden. Das gilt allerdings nur für die „Basisversionen“, von denen es, wie bereits zuvor erwähnt, weitere Varianten gibt. AMD plant außerdem, eine der Spectre-Varianten in seiner neuen Generation der Zen-2-Architekturprozessoren zu patchen, die 2019 veröffentlicht werden soll. Auch ARM verspricht Hardwareaktualisierungen und behauptet, dass „alle künftigen CPUs gegen Angriffe im Spectre-Stil resistent sein werden.“

Das sind tolle Neugikeiten – für diejenigen, die sich in Zukunft neue Geräte zulegen möchten. Diejenigen von uns, die 2018 oder früher Computer, Smartphones oder irgendein anderes Gerät gekauft haben, das auf einer Intel-, AMD- oder ARM-CPU basiert, müssen die Installation zahlreicher Patches in Kauf nehmen, die darüber hinaus die Leistung nicht unerheblich einschränken.

CPU-Hersteller haben Schwachstellen auf Hardwareebene viel zu lange ignoriert und ihre CPUs ausschließlich der Leistung zuliebe optimiert. All diese Optimierungen haben allerdings nicht nur Verbesserungen, sondern auch zahlreiche Probleme mit sich gebracht. Nun ist es eine Herausforderung, diese besonders tief sitzenden Schwachstellen zu beseitigen. Es muss jedoch auch darauf hingewiesen werden, dass es nicht ganz einfach ist, derartige Sicherheitslücken auszunutzen, und das gibt Anlass zur Hoffnung – zumindest, bis die nächste Generation der CPUs auf den Markt kommt.