Der Meltdown Exploit Erklärt (Teil 1): Die Grundlagen

hardware news

Es ist schon eine Weile her, seit die Begriffe „Meltdown“ und „Spectre“ im Internet förmlich explodiert sind.

 

Medien und verschiedene Teile der IT-Security Branche nennen es die zwei schwerwiegendsten Sicherheitsprobleme der letzten Jahre.

Medien und verschiedene Teile der IT-Sicherheitsgemeinschaft nennen es die zwei schwerwiegendsten Sicherheitsprobleme der letzten Jahre.Für die meisten Menschen – vor allem, wenn sie nicht in der IT arbeiten – bleiben die inneren Abläufe von Meltdown und Spectre ein Mysterium. Selbst für jene, die beruflich mit IT zu tun haben, bleiben einige Fragen offen.

Dieser Artikel konzentriert sich hauptsächlich auf eine einzige Fragestellung: Wie funktioniert der Meltdown-Angriff auf technischer Ebene und wie kann man es verstehen, ohne die ganzen fiesen Details moderner CPU-Architekturen kennen zu müssen. Als Hilfestellung nehmen wir ein Beispiel aus dem echten Leben zur Hand, mit dem jeder vertraut ist: ein Bankinstitut.

Dieser Artikel behandelt NICHT die folgenden Themen, zumal sie bereits ausführlich in anderen Artikeln diskutiert wurden:

  • Spectre. Dies wird Teil eines zweiten Artikels in dieser Reihe sein.
    Welche Gegenmaßnahmen zum Schutz betroffener Systeme ergriffen werden sollten.
    Wie ein Angreifer die Schwachstellen in einem Unternehmen oder im persönlichen Umfeld ausnutzen könnte.
  • Wie bestehende Gegenmaßnahmen die aktualisierten Systeme beeinflusst haben.
Mann mit vielen Armen

Die Wurzel allen Übels - Woher kam das Problem?

Zuallererst ist es wichtig darauf hinzuweisen, dass Meltdown und Spectre auf einem Fehler in der Hardware (genauer gesagt, dem Prozessor oder der CPU) und nicht auf Software basieren. Es ist im Grunde genommen ein Konstruktionsfehler, der in einer überwiegenden Anzahl von Prozessoren seit 1995 hergestellt wurde und niemanden störte. Bis jetzt.

Was ist in all den Jahren falsch gelaufen? Beginnen wir mit den Grundlagen. Die folgenden nicht verwandten Merkmale müssen auf einer hohen Ebene verstanden werden, um den Meltdown-Angriff zu verstehen:

  • Multitasking
  • Leistungsunterschiede zwischen CPU und Speicher
  • Optimierungstechniken
  • Side-Channel Angriffe
Rakete

Multitasking: Wie ist es möglich, auf einem Computer mehr als eine Sache gleichzeitig zu erledigen?

Die meisten modernen Betriebssysteme (Operating Sytem, kurz „OS“) funktionieren im Multitasking-Modus. Aber was bedeutet das? Per Definition führt eine CPU nur jeweils einen Befehl aus. Die Benutzer erwarten jedoch, dass Computer verschiedene Aufgaben (oder Prozesse) parallel ausführen können. Dies ist in aktuellen OS-Architekturen nicht möglich, sondern wird nur „simuliert“ durch ständiges Umschalten zwischen mehreren Tasks innerhalb von Millisekunden. Dies erzeugt die Illusion, dass mehrere Prozesse gleichzeitig parallel ablaufen.

Die Sicherheit dieser Multitasking-Funktion beruht vollständig auf der Annahme, dass der Prozessor eine perfekte Trennung zwischen laufenden Prozessen gewährleistet. Wenn diese Annahme nicht zutrifft, kann im schlimmsten Fall jeder Prozess buchstäblich auf alle Daten zugreifen, die von anderen Prozessen verarbeitet werden. Dies würde zu großen Sicherheitsproblemen führen. Eine solche Isolationsfehler würde es nicht autorisierten Prozessen erlauben, sensible Daten wie Passwörter, kryptografische Schlüssel oder private Dateien zu lesen, zu ändern oder zu löschen. Um ein anschauliches Beispiel zu geben: Stellen Sie sich vor, Ihr Webbrowser mit nicht vertrauenswürdigem HTML- und JavaScript-Code könnte plötzlich die vertraulichen Inhalte einer Textdatei lesen, an der Sie gerade „parallel“ arbeiten.

In den letzten Jahrzehnten haben sich Prozessorhersteller voll auf diese Annahme verlassen und ihre Prozessoren entsprechend produziert.

Geschwindigkeitsunterschied zwischen CPU und RAM Grafik
Grafik 1: Geschwindigkeitsunterschied zwischen CPU und RAM.

Leistungsunterschiede zwischen CPU und Speicher: CPU-Geschwindigkeit übersteigt die Speichergeschwindigkeit

Ein anderes scheinbar nicht zusammenhängendes Thema, das eine Einführung benötigt, ist die unterschiedliche Geschwindigkeit zwischen CPUs und Speicher. Lassen Sie uns wiederholen, wer in einem modernen Computersystem was macht:

  • Die CPU dient zur Verarbeitung von elementaren Anweisungen und Daten des aktuellen Prozesses.
  • Der Speicher (RAM) enthält alle Anweisungen und Daten des aktuellen Prozesses.

Mit der Zeit wurden moderne CPUs stark leistungsoptimiert. Während dieser Optimierungen wuchsen die Arbeitsfrequenzen der Prozessoren viel schneller als die Arbeitsfrequenzen des Speichers. Die CPU verarbeitet Daten also viel schneller, als der Speicher bereitstellt und dies führte effektiv zu einem Leistungsengpass.

Die folgende Grafik veranschaulicht dieses Problem:

Idee Bildschirm und Lampe

Diese Leistungsengpässe zwangen CPU-Hersteller, eine Vielzahl verschiedener Optimierungstechniken zu entwickeln, die zu zusätzlichen Schichten zwischen CPU und Speicher führten. Als Ergebnis wurden zwei neue Konzepte eingeführt:

  1. Out-of-Order-Ausführungsblöcke: intelligente CPU-Optimierungstechnik für intelligente Annahmen, was als nächstes zu tun ist.
  2. Prozessor-Cache (oder nur Cache): sehr schneller Speicher mit einer geringen Speicherkapazität,  sehr nahe an der CPU-Geschwindigkeit. Hier werden nur Daten gespeichert.

Out-of-Order-Ausführungsblöcke treffen Annahmen darüber, welche Daten in naher Zukunft vom laufenden Prozess benötigt werden. Basierend auf diesen Entscheidungen werden Daten einfach vorab aus dem Speicher abgerufen und von der CPU im Cache gespeichert:

  • Wenn sich die Annahme als korrekt herausstellt und der laufende Prozess die Zugriffsrechte auf die abgerufenen Daten hat, werden die Daten verarbeitet.
  • In allen anderen Fällen wird es einfach vom Prozessor weggeworfen.

Die Anwendung oder das Betriebssystem hat keinerlei Einfluss auf dieses Verhalten. Es ist alles hardcodiert in der Hardware.

 

Einführung in Side-Channel Angriffe

Die Grundproblematik, die vom Angreifer während des Meltdown-Angriffs missbraucht werden kann

Bis jetzt scheinen die oben beschriebenen Merkmale nicht problematisch zu sein. Es gibt jedoch zwei Hauptprobleme, bei denen Dinge schief gehen:

  • Problem 1: Abrufen aus dem Speicher in den Cache, ohne zuerst die Berechtigungen zu prüfen.
    Die Berechtigungen für den Zugriff auf die Daten durch die betroffenen CPUs werden nach dem Abrufen von Daten aus dem Speicher in den Cache überprüft.
  • Problem 2: Keine Daten aus dem Cache löschen
    Im Cache gespeicherte Daten werden nach dem Überprüfen der Berechtigungen nicht sofort bereinigt – selbst wenn die Berechtigungsprüfung fehlgeschlagen ist.

Dies ist der Punkt, an dem sich ein sogenannter Side-Channel öffnet und beginnt, wertvolle Informationen an einen Angreifer auszugeben. Definitionsgemäß ist ein Side-Channel eine implizite Informationsquelle, die von einem Angreifer zur Offenlegung sensibler Daten verwendet werden kann.

Side-Channel-Angriffe sind in der IT-Sicherheitswelt nicht neu. Häufige Angriffe, die in der Vergangenheit erfolgreich waren, basierten auf Änderungen des Stromverbrauchs, elektromagnetischer Strahlung oder zeitlichen Schwankungen der Systemleistung. Zum Beispiel wurde das KeeLog-System im März 2008 durch eine hochpräzise Messung des Stromverbrauchs des Geräts während der Verschlüsselung unterbrochen. KeeLog ist eine proprietäre hardwarebedingte Blockchiffre, die von Microchip Inc. entwickelt wurde. Sie wird in einer Vielzahl von entfernten Fahrzeug- und Gebäudekontrollsystemen verwendet. Als Ergebnis wurde das Schließsystem vollständig kompromittiert.

 

Zusammenfassung aller verwendeten Komponenten in einem modernen anfälligen System

Das Vorhandensein der folgenden Standardkomponenten in modernen Computern führte schließlich zur „Kernschmelze“:

Komponente Beschreibung
Abstraktes Computersystem Vereinfachtes Modell eines modernen (anfälligen) Computersystems, das aus einem Speicher, einer CPU und einem Cache besteht.
Prozesse, die auf einem Computersystem ausgeführt werden Der vollständige Satz aktiver Anwendungen und ihrer Komponenten.
Böswilliger Prozess, der darauf aus ist, geheime Daten zu erhalten Prozess, der im System ausgeführt wird und versucht, nicht autorisierten Zugriff auf Daten anderer Prozesse zu erhalten.
Geheimdaten, die der Angreifer stehlen will Daten, die von einem Prozess verwendet werden und vor dem Lesen, Ändern und Löschen durch andere Prozesse geschützt sind.
CPU Eine integrierte Schaltung, die Anweisungen des gerade laufenden Prozesses ausführt.
Memory/RAM Der Speicher (RAM) wird verwendet, um alle Anweisungen und Daten des aktuellen Prozesses zu speichern. Auf einen bestimmten Speicher (RAM) kann von der CPU unter Verwendung einer Adresse im Speicher zugegriffen werden.
CPU Cache Sehr schneller und kleiner Speicher in unmittelbarer Nähe der CPU. Es dient zum Speichern von Daten (keine Anweisungen!).
Out-of-Order-Ausführungsblock in der CPU Optimierungstechnik, die vorhersagt, welche Daten bald benötigt werden. Es holt Daten im Voraus aus dem Speicher und speichert sie im Cache der CPU.
Seitenkanal, den der Angreifer missbraucht Eine implizite Informationsquelle (z. B. Änderungen des Stromverbrauchs oder der elektromagnetischen Strahlung), die sensible Daten offenlegt.

Haben Sie nun Feuer gefangen? Mehr zum Meltdown-Mechanismus und wie man den Angriff mit der Metapher eines einfachen Bankinstituts veranschaulichen kann, finden Sie im nächsten Teil: „Der Meltdown-Exploit erklärt (Teil 2): der Banküberfall“, den wir demnächst hier veröffentlichen.