Login
Login-Name Passwort


 
Newsletter
Werbung

Mo, 8. Januar 2018, 14:00

Software::Security

Meltdown und Spectre: Ein Zwischenstand

Fünf Tage nach dem Bekanntwerden der Prozessorfehler Meltdown und Spectre liegen zahlreiche detaillierte Informationen sowie einige Updates vor. Somit ist es an der Zeit für eine kleine Übersicht.

Natascha Eibl

Meltdown und Spectre sind Prozessorfehler mit wahrhaft katastrophalen Ausmaßen. Sie ermöglichen das unbemerkte Auslesen beliebigen Speichers des Rechners und können somit Passwörter und andere sensible Daten verraten. Fast alle modernen Prozessoren sind mehr oder weniger stark betroffen.

Die von Googles »Project Zero« zusammen mit mehreren Sicherheitsforschern entdeckten Meltdown und Spectre sind drei separate Sicherheitslücken mit ähnlichen Ursachen. Drei deshalb, weil es von Spectre zwei Varianten gibt. Meltdown (CVE-2017-5754) bricht die fundamentalen Sicherheitsbarrieren zwischen Programmen und Kernel. Es nutzt aus, dass manche CPUs den Code hinter einer Verzweigung »auf Verdacht« ausführen, selbst wenn noch nicht sicher ist, dass der Code tatsächlich ausgeführt werden soll. Dies dient dazu, die sehr lange Befehls-Pipeline stets gefüllt zu halten. Wenn in der Pipeline schließlich entschieden ist, dass der Code tatsächlich ausgeführt werden soll, werden die Ergebnisse von den Zwischen- in die eigentlichen Register übertragen, ansonsten werden sie verworfen.

Der fatale Fehler besteht darin, dass einige CPUs bei Speicherzugriffen während dieser spekulativen Ausführung keine Prüfung der Zugriffsrechte vornehmen. Dadurch können Daten, auf die der Prozess eigentlich keinen Zugriff hat, in den Cache geladen werden. Zwar gibt es keine Möglichkeit, den Inhalt der Caches auszulesen. Misst man jedoch die Ausführungszeiten, so findet man einen erheblichen Unterschied zwischen Daten, die sich im Cache befinden, und solchen, die sich noch nicht im Cache befinden. Dieser Unterschied kann bei geschickter Programmierung genutzt werden, um ein Bit an beliebiger Stelle im Speicher auszulesen. Bei mehrfacher Anwendung kann man ganze Bytes und schließlich den ganzen Speicher lesen. Das ist nicht schnell, aber mit rund 1500 Bytes pro Sekunde schnell genug, um Angreifern eine praktikable Möglichkeit zu geben, Passwörter und andere sensitive Daten zu erbeuten.

Der Meltdown-Fehler ist deshalb fatal, da keine besonderen Privilegien benötigt werden. Ein normaler Anwender-Prozess genügt, um den Speicher auszulesen. Von Meltdown sind nahezu alle Intel-Prozessoren seit 1995 betroffen, ausgenommen Itanium und Atom-CPUs bis 2013. Einige ARM64-Chips, aber nur solche auf Basis des Cortex-A75, sind ebenfalls betroffen, AMD-Prozessoren sind dagegen vollständig immun.

Spectre (CVE-2017-5753 und CVE-2017-5715) hingegen bricht die gegenseitige Isolation der einzelnen Programme, ist noch schwerer zu bekämpfen als Meltdown und wird die Entwickler daher wie ein Gespenst noch lange verfolgen. Spectre benötigt Kernel-Code, besondere Gefahr besteht daher, wenn normale Anwender eBPF-Programme in den Kernel laden können. Die eine Variante von Spectre funktioniert ähnlich wie Meltdown, die andere nutzt ein ähnliches Problem bei der Sprungvorhersage der CPU bei indirekten Sprüngen. Von Spectre sind wiederum alle Intel-Prozessoren und fast alle ARM-Cortex-Prozessoren (nicht aber die im Raspberry Pi) betroffen. Die AMD-Prozessoren sind nach aktuellem Stand nur für die erste Variante von Spectre anfällig.

Natascha Eibl

Wie sich herausstellte, sind gegen die Sicherheitslücken Maßnahmen in Software möglich. Daher hat eine Flut von Updates für Betriebssysteme, Hypervisoren und Clouds eingesetzt, die wohl noch eine Weile anhalten wird, während die Maßnahmen ergänzt und verbessert werden. In Linux wurde eine Serie von Patches mit der Bezeichnung KPTI (Kernel Page Table Isolation) aufgrund der Geschehnisse außerordentlich schnell in den aktuellen Kernel-Entwicklungszweig aufgenommen und wird daher bereits in Linux 4.15 vorhanden sein. Diese Patch-Serie weist jedem Prozess eine zweite Seitentabelle zu, die nur bei Systemaufrufen gültig ist. Dies trennt Prozess- und Kernel-Speicher schärfer voneinander, bedeutet aber einen fundamentalen Eingriff tief ins System.

Der Patch wurde außerdem bereits auf 4.14 zurückportiert. Die älteren Kernel 4.9 und 4.4 erhielten eine frühere Variante dieser Patches, die unter dem Namen KAISER seit ungefähr Mitte 2017 entwickelt wurde. Noch keine Maßnahmen gibt es zur Zeit gegen Spectre, obwohl laut Greg Kroah-Hartman bereits einige Patches kursieren. Die Kernel-Entwickler sind zur Zeit allerdings mit Meltdown bereits ausgelastet, umso mehr, als die Veröffentlichung der Sicherheitslücken sechs Tage früher als geplant erfolgte, nachdem einige Leute aus den kursierenden Patches und einigen Anmerkungen dazu ableiteten, was vor sich ging.

Kroah-Hartman prangert das Vorgehen der Sicherheitsforscher als Musterbeispiel dafür an, wie man nicht mit der Open-Source-Gemeinschaft umgehen sollte. Jetzt habe zwar die Korrektur der Probleme die höchste Priorität, aber später werde es noch ein paar ernste Worte zu reden geben. In ein ähnliches Horn stießen Dragonfly BSD, FreeBSD und OpenBSD. Alle wurden zu spät und zu spärlich informiert. FreeBSD, einen Tag vor Weihnachten informiert, kann noch keinen Veröffentlichungstermin für Updates nennen.

Details zu den Sicherheitslücken enthalten sowohl die Arbeiten der Sicherheitsforscher als auch ein Beitrag von Project Zero. Erläuterungen wurden unter anderem von Google und Red Hat publiziert. Updates wurden von mehreren Distributionen bereits vorgenommen, weitere sind im Anrollen. Erste Erfahrungen mit den Geschwindigkeitsverlusten durch die Workarounds liegen von »nahe 0« über »Systemaufruf-Overhead verlängert sich von 100 auf 350 ns« (Dragonfly BSD) bis zu verdoppelter CPU-Last bei Cloud-Anbietern.

Auch Browser-Hersteller wie Mozilla und Google haben Maßnahmen ergriffen, um die Angriffe durch JavaScript zu erschweren. Compiler wie GCC und LLVM werden neue Optionen und Änderungen in der Code-Generierung gegen die Lücken erhalten. Detaillierte Informationen zu den betroffenen CPUs gibt es von AMD und ARM. Intel arbeitet nach eigenen, vage gehaltenen Angaben an Microcode-Updates und Workarounds. Eine Auswahl weiterer Links findet man auf LWN.

Werbung
Pro-Linux
Pro-Linux @Twitter
Neue Nachrichten
Werbung