Rowhammer, jetzt auch mit JavaScript: Sicherheitsleck durch Software-Angriff auf DRAM-Chips

Beim Rowhammer-Angriff klöppelt der Angreifer so lange auf einem Speicherbereich rum, bis benachbarte Bits flippen. So kann man Systeme lahmlegen und sich sogar Admin-Rechte verschaffen. Unglaublicherweise klappt das auch mit JavaScript über das Internet.

In Pocket speichern vorlesen Druckansicht 99 Kommentare lesen
Rowhammer, jetzt auch mit JavaScript
Lesezeit: 3 Min.
Von
  • Fabian A. Scherschel

Im März schlug die Veröffentlichung einer Reihe von Google-Forschern große Wellen: Auf DRAM-Chips lassen sich mit Gewalt Bits flippen und Angreifer können so den Rechner des Opfers abstürzen lassen oder gar Admin-Rechte erlangen. Jetzt haben Forscher der Technischen Universität Graz und der Firma Technicolor es geschafft, den sogenannten Rowhammer-Angriff auf JavaScript zu übertragen. Damit kann man den Speicher aus der Ferne malträtieren, wenn das Opfer eine präparierte Webseite besucht. Die Gefahr eines gezielten Angriffs im Alltag ist zwar nach wie vor begrenzt, wenn es dem Angreifer aber nur darum geht, Daten in den Systemen zu verfälschen oder diese zum Absturz zu bringen, so ist dem Tür und Tor geöffnet und zwar nicht etwa nur für x86, sondern prinzipiell auch für ARM und andere Architekturen.

Die Google-Forscher hatten bei ihrer Version des Angriffs die Chrome-Funktion Native Client (NaCl) verwendet, um den CLFLUSH-Befehl des x86-Befehlssatzes auszulösen. So hämmerten sie so lange auf einem bestimmten Speicherbereich herum, bis ein kritisches Bit in einer benachbarten Zelle – auf die sie eigentlich keinen Zugriff haben – flippte. Um das zu Verhindern, kappte Google kurzerhand die CLFLUSH-Unterstützung bei NaCl. Außerdem verstärkten die Linux-Entwickler die Vorkehrungen gegen Speichermanipulationen in ihrem Kernel.

Ob diese Maßnahmen den Angriff verhindern, wurde schon kurz nach der Entdeckung von Rowhammer bezweifelt, auch die Google-Entwickler gaben lternative Wege an. Dank Rowhammer.js ist diese Frage jetzt nebensächlich. Denn der JavaScript-Angriff umgeht solche Beschränkungen völlig. Die Forscher nutzen geschicktes Timing und Wissen über die anzugreifende CPU-Infrastruktur, um direkt auf einen bestimmten Speicherbereich zuzugreifen, ohne dass die Zugriffe aus dem Cache kommen. Ihre Adaptive Cache Eviction Strategy rät ein wenig, welcher Prozessor und was für Speicher im Zielsystem verbaut sind –. Eine ausgeklügelte Zugriffssequenz soll für die meisten Haswell-, Ivy-Bridge- und, wenn auch ein bisschen schlechter, für Sandy-Bridge-Systeme funktionieren.

Aus dem Paper der Forscher kann man schließen, dass sie auf einem Linux-System getestet haben,das Transparent Hugepages zur Verfügung stellt – also einen relativ modernen Kernel nutzt, denn Javascript unter Firefox 39 bekommt 2-MByte-große Seiten geliefert, was die Autoren für ihr Programm ausnutzen.

Auf üblichen Windows-Systemen dürfte das nur selten der Fall sein, denn ohne vorherige Freigabe der "Verrieglung im Speicher" durch den Eingriff eines Administrators geht es nicht. Außerdem muss nach Angabe der Autoren zumindest bei Haswell-Prozessoren zuerst die Refresh-Rate des Speichers im BIOS verringert werden, damit dieser anfälliger für Speicherfehler wird. All das verkleinert die Zahl der verwundbaren Systeme und führt dazu, dass der Rowhammer.js-Angriff für gezielte Angriffe weniger praktikabel ist, als auf den ersten Blick ersichtlich.

Sicher schützen kann man sich vor flippenden Bits aber wohl nur, in dem man RAM mit Fehlerkorrektur (ECC-Speicher) verwendet. Der ist vor allem in Server-Systemen verbaut. Wer selber mit der JavaScript-Variante des Rowhammer experimentieren will, sollte das auf jeden Fall auf einem Testsystem oder mit einem Live-Linux tun. Wahllos im Speicher rumzuhämmern kann nämlich einiges im System kaputt machen.

Mehr Hintergründe und Details zum Rowhammer-Angriff liefert Andreas Stiller auf ct.de:

(fab)