Skip to content

Meltdown und Specter

In der letzten Woche sind etwas früher als vermutlich geplant zwei Sicherheitslöcher in CPUs öffentlich gemacht worden. Die erste namens Meltdown betrifft wohl nur Intel-CPUs, während die zweite namens Specter neben Intel- auch in ARM- und vielleicht AMD-CPUs anzutreffen ist.

Details über die Löcher sind noch eher weniger verfügbar, aber was ich bisher mitgenommen habe, liegen beide Fehler darin begründet, dass schon seit bummelig zwanzig Jahren CPUs nicht mehr auf Speicherzugriffe warten um Befehle schon mal spekulativ auszuführen. Wenn dann die Speicherinhalte gefühlte Ewigkeiten später in der CPU eintreffen, hat die hinter dem jeweiligen Befehl schon mal weitergemacht. Haken daran: Es gibt ja auch bedingte Verzweigungen in Programmen. Dagegen haben die CPU-Architekten dann Branch Prediction gebastelt, die vorhersagen soll, welcher Zweig des Programmflusses ausgeführt werden soll.

Und da setzen nun die Bugs an: Wenn ein Programmzweig abhängig von bestimmten Speicherinhalten (die kommen später erst in der CPU an) ausgeführt werden könnte, führt die also schon mal auf Verdacht Befehle aus. Wenn sich dann nach der Speicherlieferung herausstellt, dass die Befehle doch nicht ausgeführt werden sollten, hat die CPU umsonst gearbeitet, tut aber so, als wäre nichts geschehen. Bei den nutzbaren CPU-Registern merkt man das nicht, aber bei Caches rund um die CPU. Und mit bestimmten Tricks kann so Speicherinhalt indirekt ausgelesen werden, sofern man die CPU dazu bringen kann, Code auszuführen.

Aufgefallen sind die Bugs, weil im Lnux-Kernel größere Umbauten eingearbeitet wurden, die bestimmte Adresstabellen dupliziert haben, um die Kernel-Adressen nicht in den Lookup-Tabellen zu haben, während andere Programme laufen. Das ist als Kernel Page Table Isolation schon in der theoretischen Betrachtung gewesen, wurde nun aber kurzfristig wichtiger. Dabei kam dann raus, dass es den Meltdown-Bug in Intel-CPUs seit 1995 gibt, der irgendwie den gesamten Speicher des physischen Rechners angreifbar macht, was besonders bei virtuellen Rechnern unangenehm ist. Und in dem Zusammenhang hat Googles Project Zero auch gleich noch Specter veröffentlicht, der irgendwie anders ist, und laut den davon betroffenen Hardware-Herstellern weniger schlimm wäre.

In dem Dunstkreis wurde auch bekannt, dass die Bugs schon im letzten Juni oder Juli gefunden wurden. Anders als bei Software-Löchern gab es hier keine harte 100-Tage-Frist, bis zu der irgendwas behoben sein musste, aber Software-Hersteller bekamen Hinweise. So ist zu erklären, dass im Linux-Kernel gerade umgebaut wurde, in Windows ein Patch kurzfristig erschienen wäre, und beim Mac mit dem Update auf 10.13.2 wohl bereits die Kernel-Adresstabellen gedoppelt wurden.

Längerfristig wird wohl eine neue Hardware-Generation nötig werden, aber so eine CPU entwickelt sich nicht mal eben in Monaten, da gehen eher Jahre für drauf. Bis dahin gibt es Workarounds, und die Hoffnung, dass bei betroffener Hardware maximal die Kernel-Adressen ermittelt werden können. Denn wenn der gesamte RAM beliebig ausgelesen werden könnte, wären sämtliche Sicherheitsmaßnahmen hinfällig.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

HTML-Tags werden in ihre Entities umgewandelt.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

BBCode-Formatierung erlaubt
Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!