Menü

RAMBleed-Attacke liest Speicher an beliebigen Adressen

Sicherheitsforscher zeigen, wie verbesserte Rowhammer-Angriffe sämtliche Speicher-Schutzfunktionen über Seitenkanäle aushebeln.

Lesezeit: 2 Min.
In Pocket  speichern vorlesen Drucken Kommentare lesen 170 Beiträge

RAMBleed-Attacke auf den (Server-)Arbeitsspeicher

(Bild: RAMBleed.com)

Security
Von

Sicherheitsexperten von drei Universitäten demonstrieren mit ihrer "RAMBleed"-Attacke, wie Malware Daten aus vermeintlich geschützen Adressbereichen des Arbeitsspeichers ausliest. RAMBleed funktioniert sehr ähnlich wie die seit 2014 bekannten Rowhammer-Angriffe, bringt aber mehrere gefährliche Neuerungen: Daten können einfach ausgelesen werden, ohne andere Daten zu verändern. Außerdem trickst RAMBleed den Error Correction Code (ECC) aus, der den Arbeitsspeicher vor 1-Bit-Fehlern schützt.

RAMBleed nutzt zusätzliche Seitenkanäle, um Informationen zu ergattern, etwa vorhersagbare Latenzunterschiede beim Zugriff auf Speicherzellen, bei denen Bitfehler per ECC korrigiert wurden oder nicht. Außerdem leitet der Angriff den Inhalt geschützter Speicherbereiche indirekt durch Zugriffe auf benachbarte Speicherzellen ab: Damit kommt RAMBleed an geheime Daten, ohne jemals direkt die Speicherzellen auszulesen, die sie speichern. Das erschwert auch Schutzmaßnahmen gegen RAMBleed

Mit RAMBleed lassen sich theoretisch viele moderne Systeme angreifen, unabhängig von Betriebssystem und Prozessor. Proofs-of-Concept (PoCs) haben die Autoren des RAMBleed-Papers mit drei verschiedenen x86-Systemen unter Ubuntu 18.04 durchgeführt, jeweils mit Intel-Prozessoren (Core i5-4570, Core i7-6700, Xeon E3-1270) und mit DDR3-SDRAM, beim Xeon sogar mit ECC-Speicher. Die Autoren erwarten, dass der Angriff auch mit DDR4-SDRAM funktioniert.

Als Proof-of-Concept haben die RAMBleed-Autoren jeweils den geheimen RSA-2048-Schlüssel von OpenSSH 7.9 ausgelesen. Weil RAMBleed dazu sehr viele RAM-Zugriffe ausführt, muss der Angriff relativ lange laufen, nämlich rund 3 bis 4 Minuten lang.

Die Autoren des RAMBleed-Papers, das unter anderem mit Zuwendungen von Intel finanziert wurde, empfehlen einige Schutzmaßnahmen. Weil das Lesen der vermeintlich geschützten Speicherbereiche recht langsam vonstatten geht, kann es etwa helfen, sensible Daten möglichst rasch wieder aus dem RAM zu löschen. Außerdem schützt Speicherverschlüsselung (Memory Encryption), etwa AMDs SME oder Intels SGX.

Bestimmte Anti-Rowhammer-Maßnahmen wirken hingegen nicht gegen RAMBleed, etwa die angedachte Trennung der physischen Speicherbereiche von Kernel- und User-Spaces. Denn RAMBleed liest die Zellen mit sensiblen Informationen nicht direkt aus.

Rowhammer-Angriffe verändern den Inhalt von Speicherzellen in einer bestimmten Zeile (Row) eines DRAM-Chips, indem sie mit sehr vielen Lesezugriffen auf benachbarten Zeilen "einhämmern" – siehe dazu auch der Artikel in der aktuellen c't 13/2019. Der Witz daran: Physisch – also im DRAM-Chip – benachbarte Speicherzellen können zu logischen Adressbereichen gehören, die das Betriebssystem unterschiedlichen Prozessen zugewiesen hat. Damit lässt sich etwa die Abschottung zwischen User- und Kernel-Space überwinden.

Es gibt verschiedene Rowhammer-Techniken, etwa Single- und Double-Side Rowhammer

Der Angreifer muss allerdings erst einmal herausbekommen, welche Adressbereiche überhaupt manipulierbar sind – denn das hängt vom individuellen System ab, also vom CPU-Typ, der Bestückung des Arbeitsspeichers, dem Typ der Speichermodule und der Speicherchips. Dann muss der Angriff Zugriffe direkt auf das RAM ausführen, also an Caches vorbei.

Hat die Malware schließlich für Rowhammer "empfindliche" Adressbereiche gefunden, muss sie Daten laufender Prozesse dorthin verschieben. Dafür kommen auch aus anderen Zusammenhängen bekannte Angriffstechniken ähnlich wie Heap Spraying zum Einsatz.

Um zusammenhängende, manipulierbare Adressbereiche unter Linux zu finden, haben sich die RAMBleed-Entdecker die Technik namens Memory Massaging (Speichermassage) ausgedacht. Außerdem nutzen sie Latenzen von DRAM-Chips beim Laden von Speicherzeilen in den Row Buffer als Seitenkanal: Latenzunterschiede verraten dabei, ob Zeilen in derselben SDRAM-Bank liegen oder in unterschiedlichen Banks. Um Daten dorthin zu verschieben, verwenden sie "Frame Feng Shui", deren Vorläufer wie Flip Feng Shui bereits in früheren Publikationen beschrieben wurden.

Siehe dazu auch in c't 13/2019, S. 110:

(ciw)