Rowhammer: RAM-Manipulationen mit dem Vorschlaghammer

Unter Linux kann man sich Root-Rechte alleine dadurch verschaffen, dass man bestimmte Speicheradressen ausliest. Wie der Name schon sagt geht der Rowhammer-Angriff dabei recht ruppig vor. Endgültig verteidigen kann man sich nur durch neue Hardware.

In Pocket speichern vorlesen Druckansicht 377 Kommentare lesen
Rowhammer: RAM-Manipulationen mit dem Vorschlaghammer
Lesezeit: 5 Min.
Von
  • Fabian A. Scherschel
Inhaltsverzeichnis

Auf modernen DRAM-Chips kann man Bits alleine dadurch flippen, dass man benachbarte Speicherzellen ausliest – so lautet das Ergebnis einer Untersuchung der Google-Forscher von Project Zero. Das eigentliche Problem war der Hardware-Industrie schon länger bekannt, dass man es für einen Angriff – von den Forschern Rowhammer getauft – verwenden kann, ist neu. Wie der im Detail funktioniert, ist äußerst faszinierend. Verteidigen kann man sich nur schwer, wirklich Abhilfe schafft höchstwahrscheinlich lediglich RAM mit Fehlerkorrektur (ECC-Speicher), aber der wird außer in Server-Systemen kaum verbaut. Trotzdem ist das Prozedere so wackelig und enthält so viele unbekannte Größen für den Angreifer, dass die Gefahr im Alltag momentan eher gering ist.

Die Idee hinter Rowhammer ist, dass man mit normalen Nutzerrechten einen Speicherbereich manipuliert, von dem man weiß, dass dieser an System-Speicher grenzt. Auf den hat man normalerweise natürlich ohne System-Rechte keinen Zugriff. Die Manipulation funktioniert allein durchs Auslesen der Speicherzellen und wird dadurch begünstigt, dass modernes RAM so eng gebaut ist, dass es unmöglich ist, eine Interaktion zwischen verschiedenen Zellen zu verhindern. Ein lohnendes Ziel auf Linux-Systemen für solch einen Angriff ist etwa die Tabelle, die spezifiziert, welchem Nutzer der Speicher eines bestimmten Prozesses gehört. Schafft es der Angreifer, hier Bits zu flippen, kann er den Speicherbereich eines Root-Prozesses übernehmen, selbst Code ausführen und das System unter seine Kontrolle bringen.

Den Forschern gelang es so unter anderem, Linux-Systeme anzugreifen und zu übernehmen. Allerdings flippen sie dabei wie wild Bits, um ihre gefälschten Berechtigungen in den Speicher zu bringen – und zwar gleich Gigabyte-weise. Die Wahrscheinlichkeit, dass sich das System dabei unvorhersehbar verhält oder abstürzt, ist ziemlich hoch. Um den richtigen Speicherbereich zu treffen, müssen die Forscher wissen, wo im physischen Speicher sich ihr Ziel befindet und dann aus benachbarten Speicherzellen lesen. Das hängt sowohl von der Konfiguration des Systems als auch vom verbauten Speicher ab. Ausschlaggebend sind zum einen das BIOS, wie dessen Speicherzugriff konfiguriert ist und was für eine Art Speicherchips verbaut ist.

Da unterschiedliche Chips die Daten auf unterschiedliche Weise organisieren, ist der Angriff viel erfolgversprechender, wenn man weiß, mit was für einer Hardware man es zu tun hat. Zwar kann man verschiedene Muster ausprobieren, um die richtige Stelle zu treffen, die direkt neben dem Bit liegt, das man flippen will, dabei läuft man aber Gefahr, dass das Zielsystem abschmiert. Ein weiteres Hindernis stellt der Cache dar. Um Bits zu flippen, muss man direkt auf den Speicher zugreifen und jedes Mal den Cache ausleeren, um sicherzustellen, dass man auch wirklich vom eigentlichen Chip und nicht aus dem Cache gelesen hat. Die Forscher machen das mit dem CLFLUSH-Befehl des x86-Befehlssatzes.

Unter anderem schafften sie es, mit ihrem Trick aus der NaCl-Sandbox des Chrome-Browsers auszubrechen. Diese prüft nativen Quellcode auf gefährliche Befehle und soll es Entwicklern erlauben, sichere Web-Apps zu entwickeln, die mehr Möglichkeiten benötigen als etwa in JavaScript zur Verfügung stehen. Die Sicherheitslücke in Chrome ist mittlerweile geschlossen (CVE-2015-0565). Zwar existiert das grundlegende Problem noch, die Chrome-Sandbox verhindert allerdings den CLFLUSH-Befehl und verhindert so den Angriff. Die Lücke in Linux ist nach wie vor offen, die Forscher fragen sich, warum hier Userspace-Programme überhaupt die Möglichkeit haben, diesen Befehl zu nutzen. Auf ARM-Prozessoren stehe dieser grundsätzlich nicht zur Verfügung. Neben Linux sind allerdings prinzipiell auch andere Betriebssysteme betroffen.

Dass der Angriff überhaupt funktioniert, ist erstaunlich. Die Forscher lassen allerdings offen, auf welcher Hardware genau sie die Angriffe durchgeführt haben. Erfolg hatten sie nur bei Laptop-Systemen, die einzigen Desktops, die getestet wurden hatten ECC-RAM und waren nicht anfällig. Typischere Desktop-Systeme ohne ECC-RAM wurden nicht untersucht. Außerdem geben die Forscher zu bedenken, dass es schwer sein kann, herauszufinden, wo genau im physischen Speicher bestimmte Daten liegen. Zwar könne man Adressen zufällig flippen, das erhöht allerdings die Wahrscheinlichkeit, dass das laufende System instabil wird.

Bis jetzt haben Hardware-Hersteller das Rowhammer-Problem nur als Einschränkung der Zuverlässigkeit von Systemen gesehen. Spätestens nach der Veröffentlichung des Google-Teams, die auf bereits publizierten Erkenntnissen anderer Forscher beruht, muss klar sein, dass hier auch Gefahren für die Sicherheit schlummern. Unterstrichen wird das durch Testcode für den Angriff, den die Forscher mitliefern. Massenhafte Attacken auf Nutzer scheinen aber im Moment noch unpraktikabel zu sein. (fab)