Original-URL des Artikels: https://www.golem.de/news/rowhammer-ram-chips-geben-angreifern-root-rechte-1503-112850.html    Veröffentlicht: 10.03.2015 07:26    Kurz-URL: https://glm.io/112850

Rowhammer

RAM-Chips geben Angreifern Root-Rechte

Durch permanente Speicherzugriffe lassen sich bei manchen Arbeitsspeichermodulen Bits umkippen. Dadurch sind verschiedene Angriffe möglich. Der Fehler liegt in der Hardware, ohne einen Austausch der Speichermodule ist der Angriff kaum zu verhindern.

Den IT-Sicherheitsforschern Mark Seaborn, Matthew Dempsky und Thomas Dullien ist es gelungen, durch permanente Speicherzugriffe ausgelöste Bitflips auszunutzen, um aus einer Sandbox auszubrechen und auf einem Linux-System Root zu werden. Das Problem betrifft zahlreiche aktuelle PCs, bei einem Test mit aktuellen Laptops war etwa die Hälfte betroffen. Verhindern lässt sich der Angriff nur durch neue Hardware. Seaborn hat die Angriffsmethoden im Blog von Googles Project Zero erläutert.

Speicherzugriffe verändern den Speicher nebenan

Die Grundidee des sogenannten Rowhammer-Angriffs ist simpel. Greift man permanent auf eine bestimmte Stelle im Speicher zu, so führt das unter Umständen dazu, dass im Speicher, der sich physikalisch daneben befindet, ein Bit verändert wird. Schuld daran ist die kompakte Bauform moderner Speicherchips: Die Bits liegen immer näher beieinander und beeinflussen sich dadurch gegenseitig.

Bekannt ist das Problem schon länger, allerdings ist dies der erste praktische Angriff. Im vergangenen Jahr hatte ein Forscherteam von der Carnegie Mellon University und von Intel die Problematik anhand verschiedener DRAM-Chips mit Hilfe von speziell dafür programmierten FPGAs getestet.

Um vom theoretischen Szenario zu einem praktischen Angriff auf handelsüblichen PCs zu kommen, musste Seaborn einige Probleme lösen. Unter Linux kann ein Benutzerprozess über das Proc-Dateisystem Informationen dazu auslesen, welche Teile des virtuellen Speichers an welcher Stelle im physikalischen Speicher abgelegt werden. Das hilft zwar teilweise, ohne genaue Kenntnis der Hardware lässt sich allerdings nur erraten, welche physikalischen Speicherstellen sich direkt in nebeneinander liegenden Reihen befinden. Es lassen sich allerdings mehrere mögliche Abstände von Speicherreihen parallel testen. Deutlich effektiver lässt sich ein Angriff durchführen, wenn man parallel eine Speicherstelle auf beiden Seiten angreift.

Ausbruch aus der Chrome-Sandbox

Ein erfolgreicher Rowhammer-Angriff führt zu einem umgekippten Bit. Um das für einen Angriff auszunutzen, sind verschiedene Tricks möglich. Seaborn beschreibt einen ersten Angriff anhand der NaCl-Sandbox, die unter anderem von Chrome genutzt wird. Die Idee bei NaCl: Der Maschinencode wird vor dem Ausführen auf Instruktionen getestet, die gefährlich sein könnten und einen Ausbruch aus der Sandbox erlauben.

Durch einen Rowhammer-Angriff lassen sich diese gefilterten Instruktionen durch gefährliche Instruktionen ersetzen. Ein einfaches Beispiel wäre ein Sprungbefehl, der durch einen Bitflip in einen Sprung zu einer Adresse in einem normalen CPU-Register umgewandelt wird. Der Sandbox-Code kann diese Veränderung prüfen und dann durch einen erlaubten Sprung auf diesen Code einen Sprung an eine beliebige Adresse im Arbeitsspeicher erreichen.

Um zu verhindern, dass die Speicherzugriffe gecachet werden, ruft der Rowhammer-Angriffscode permanent den Befehl Clflush auf. In neueren Versionen der NaCl-Sandbox wurde daher Clflush in die Liste der nicht erlaubten Befehle aufgenommen. Dadurch ist der Angriff zumindest in dieser Form nicht mehr möglich. Die in früheren Versionen fehlende Clflush-Filterung in NaCl wird als Sicherheitslücke CVE-2015-0565 geführt. Es ist allerdings nicht klar, ob das Problem damit vollständig behoben wird. Seaborn diskutiert mehrere Möglichkeiten, wie man einen ähnlichen Angriff auch ohne Clflush ausführen könnte, allerdings hat er keine davon praktisch umgesetzt.



Root-Rechte mittels Page Tables

Ein weiterer möglicher Angriff betrifft die Rechteverwaltung von Linux. Mit einigen Tricks gelingt es, als Nutzer Root-Rechte zu erlangen. Dafür versucht Seaborn, mit Hilfe von Bitflips die Kontrolle über einen Page Table des eigenen Prozesses zu erlangen. In den Page Tables ist die Zuordnung des physikalischen Speichers zum virtuellen Speicher eines Prozesses geregelt. Gelingt dem Angreifer die Kontrolle über einen Page Table, kann er nach Belieben den Speicher des Systems manipulieren.

Seaborn nutzt für seinen Angriff ein Suid-Programm. Suid-Programme sind vom Nutzer ausführbare Programme, die mit Root-Rechten laufen. Auf vielen Systemen ist das Ping-Tool ein Suid-Programm. Durch die Kontrolle des Arbeitsspeichers kann der Angreifer den Code des entsprechenden Programms überschreiben und somit die Kontrolle über das System erlangen.

Der konkrete Angriff wurde unter Linux umgesetzt. Seaborn betont aber, dass er davon ausgehe, dass sich der Angriff ähnlich auch auf anderen Betriebssystemen umsetzen ließe.

Betriebssystem kann Cache-Flush nicht verhindern

Einen ähnlichen Ausweg wie bei der NaCl-Sandbox gibt es für Betriebssysteme nicht: Es ist nicht vorgesehen, dass die Ausführung des Clflush-Befehls einem Nutzer verboten wird. Seaborn findet es überraschend, dass Clflush von Nutzern generell ausgeführt werden kann, denn eigentlich gibt es außerhalb des Kernel-Codes kaum Gründe, diesen Befehl aufzurufen. Er leert den gesamten Memory-Write-Cache und sorgt dafür, dass ein Schreibzugriff auf den Arbeitsspeicher vollendet wird. Auch in virtualisierten Systemen lässt sich der Aufruf von Clflush nicht verhindern.

Der GrSecurity-Patch für Linux verhindert den Zugriff auf die Pagemaps von Nutzerprozessen. Das dürfte zumindest die hier beschriebene Angriffsstrategie verhindern und führt auch dazu, dass ein zur Verfügung gestelltes Test-Tool nicht funktioniert. Eine wirkliche Sicherheitsgarantie ist das allerdings nicht.

Lösung ohne Hardwareaustausch kaum möglich

Seaborn diskutiert mehrere Möglichkeiten, wie sich das Rowhammer-Problem verhindern ließe. Der Hardwarebranche ist das Problem seit längerem bekannt. Der kürzlich veröffentlichte LPDDR4-Standard für DRAM-Speicher schlägt bereits Methoden vor, wie man das Problem im Controller des Arbeitsspeichers verhindern kann. Bei einem DRAM-Hersteller fand Seaborn im Datenblatt Hinweise auf Methoden, die Rowhammer-Probleme verhindern sollen.

Obwohl das Problem in der Vergangenheit schon öfters diskutiert wurde, ist es bislang praktisch nicht als Sicherheitsproblem wahrgenommen worden. Außer dem eingangs erwähnten Papier von der Carnegie Mellon University und von Intel erwähnt keine bisherige Veröffentlichung mögliche Angriffe. Derartige Bitflips wurden lediglich als Risiko für die Zuverlässigkeit von PCs wahrgenommen.

Bei einem Laptop fand Seaborn heraus, dass durch ein Bios-Update das Problem deutlich verzögert auftrat. Während ein Angriff mit dem alten Bios innerhalb von wenigen Minuten funktionierte, dauerte er nach dem Update 40 Minuten. Seaborn vermutete, dass das neue Bios die Refresh-Zyklen des Arbeitsspeichers erhöht hatte und somit den Angriff erschwerte. Eine wirkliche Lösung ist eine Verzögerung des Angriffs natürlich nicht.

Von 29 getesteten handelsüblichen Laptops waren 15 für das Rowhammer-Problem anfällig. Seaborn erwähnt allerdings, dass seine Tests keine Garantie liefern könnten, dass die Geräte nicht betroffen seien. Die Ergebnisse hat er nur anonymisiert veröffentlicht.

ECC-Speicher hilft vielleicht

Bei Tests auf verschiedenen Desktop-PCs mit ECC-Speicher ließ sich das Problem nicht reproduzieren. Die ECC-Funktion von DRAM-Chips garantiert die Korrektheit der Daten im Arbeitsspeicher anhand von Prüfbits. ECC-Speicher kommt vor allem in teureren PCs zum Einsatz. Wenn sich herausstellt, dass ECC-Speicher generell nicht betroffen ist, könnte das die Lösung für das Rowhammer-Problem sein. Eine einfache Methode, um zu prüfen, ob ECC wirklich aktiviert ist, gibt es allerdings nicht.

Ein Test-Tool wurde auf Github veröffentlicht. Das Tool führt keinen vollständigen Angriff durch. Es versucht lediglich, eine Speicherstelle zu manipulieren und testet, ob ein Bit gekippt wurde. Den Rowhammer-Test sollte man jedoch nur mit Bedacht einsetzen: Zufällige Veränderungen im Arbeitsspeicher könnten zu Abstürzen, undefiniertem Verhalten oder in ungünstigen Fällen auch zu korrupten Daten auf der Festplatte führen.

Spannend dürfte werden, wie die Hardwareindustrie mit dem Problem umgeht. Bislang scheint es keine zuverlässige Möglichkeit zu geben, das Problem durch Bios-Updates oder durch Änderungen am Betriebssystem zu beheben. Eigentlich müssten sämtliche betroffenen Arbeitsspeicherchips ersetzt werden.  (hab)


Verwandte Artikel:
DRAM & Flash-Speicher: China wird wegen Preisabsprachen aktiv   
(27.12.2017, https://glm.io/131868 )
Halbleiter: Wafer-Preise werden um 20 Prozent steigen   
(06.02.2018, https://glm.io/132617 )
Xi'an UniIC Semiconductors: Chinesen starten eigene DDR4-Speicherproduktion   
(27.02.2018, https://glm.io/133033 )
APT28: Behörden untersuchen Angriff auf Regierungsnetzwerk   
(28.02.2018, https://glm.io/133063 )
Zertifikate: Trustico verwundbar für Root-Code-Injection   
(01.03.2018, https://glm.io/133089 )

© 1997–2019 Golem.de, https://www.golem.de/