Die Adressraum-Layout-Randomisierung (ASLR) ist eine Sicherheitstechnik, die in Betriebssystemen verwendet wird und erstmals 2001 implementiert wurde. Die aktuellen Versionen aller gängigen Betriebssysteme (iOS, Android, Windows, macOS und Linux) bieten ASLR-Schutz. Aber in der vergangenen Woche eine neue Methode zur Umgehung von ASLR wurde gefunden . Also, sollten Sie sich Sorgen machen?
Für diejenigen ohne einfachen Programmierhintergrund kann ASLR verwirrend sein. Um es zu verstehen, müssen Sie zuerst den virtuellen Speicher verstehen.
Was ist virtueller Speicher?
Virtueller Speicher ist eine Speicherverwaltungstechnik mit vielen Vorteilen, die jedoch in erster Linie entwickelt wurde, um die Programmierung zu vereinfachen. Stellen Sie sich vor, Sie haben Google Chrome, Microsoft Word und mehrere andere Programme auf einem Computer mit 4 GB RAM geöffnet. Insgesamt verbrauchen die Programme auf diesem Computer viel mehr als 4 GB RAM. Es sind jedoch nicht alle Programme immer aktiv oder benötigen gleichzeitigen Zugriff auf diesen RAM.
Das Betriebssystem weist den aufgerufenen Programmen Speicherblöcke zu . Wenn nicht genügend RAM vorhanden ist, um alle Seiten gleichzeitig zu speichern, werden die Seiten, die am wenigsten benötigt werden, auf der langsameren (aber geräumigeren) Festplatte gespeichert. Wenn die gespeicherten Seiten benötigt werden, wechseln sie die Leerzeichen mit weniger erforderlichen Seiten, die sich derzeit im RAM befinden. Dieser Vorgang wird als Paging bezeichnet und erhält seinen Namen die Datei pagefile.sys unter Windows .
Der virtuelle Speicher erleichtert Programmen die Verwaltung ihres eigenen Speichers und macht sie sicherer. Programme müssen sich keine Gedanken darüber machen, wo andere Programme Daten speichern oder wie viel RAM noch übrig ist. Sie können das Betriebssystem bei Bedarf einfach um zusätzlichen Speicher bitten (oder nicht verwendeten Speicher zurückgeben). Alles, was das Programm sieht, ist ein einzelner fortlaufender Block von Speicheradressen für seine ausschließliche Verwendung, sogenannte virtuelle Adressen. Das Programm darf nicht in den Speicher eines anderen Programms schauen.
Wenn ein Programm auf den Speicher zugreifen muss, gibt es dem Betriebssystem eine virtuelle Adresse. Das Betriebssystem kontaktiert die Speicherverwaltungseinheit (MMU) der CPU. Die MMU übersetzt zwischen virtuellen und physischen Adressen und gibt diese Informationen an das Betriebssystem zurück. Das Programm interagiert zu keinem Zeitpunkt direkt mit dem RAM.
Was ist ASLR?
Die Adressraum-Layout-Randomisierung (ASLR) wird hauptsächlich zum Schutz vor Pufferüberlaufangriffen verwendet. Bei einem Pufferüberlauf geben Angreifer einer Funktion so viele Junk-Daten, wie sie verarbeiten können, gefolgt von einer böswilligen Nutzlast. Die Nutzdaten überschreiben Daten, auf die das Programm zugreifen möchte. Anweisungen zum Springen zu einem anderen Punkt im Code sind eine häufige Nutzlast. Die Berühmten JailbreakMe-Methode zum Jailbreak von iOS 4 Beispielsweise wurde ein Pufferüberlaufangriff verwendet, bei dem Apple aufgefordert wurde, ASLR zu iOS 4.3 hinzuzufügen.
Bei Pufferüberläufen muss ein Angreifer wissen, wo sich die einzelnen Teile des Programms im Speicher befinden. Dies herauszufinden ist normalerweise ein schwieriger Prozess des Versuchs und Irrtums. Nachdem sie dies festgestellt haben, müssen sie eine Nutzlast herstellen und einen geeigneten Ort zum Injizieren finden. Wenn der Angreifer nicht weiß, wo sich sein Zielcode befindet, kann es schwierig oder unmöglich sein, ihn auszunutzen.
ASLR arbeitet mit der Verwaltung des virtuellen Speichers zusammen, um die Positionen verschiedener Teile des Programms im Speicher zufällig zu bestimmen. Jedes Mal, wenn das Programm ausgeführt wird, werden Komponenten (einschließlich Stapel, Heap und Bibliotheken) an eine andere Adresse im virtuellen Speicher verschoben. Angreifer können nicht mehr durch Ausprobieren erfahren, wo sich ihr Ziel befindet, da die Adresse jedes Mal anders ist. Im Allgemeinen müssen Anwendungen mit ASLR-Unterstützung kompiliert werden. Dies wird jedoch zur Standardeinstellung und ist sogar für Android 5.0 und höher erforderlich.
Schützt Sie ASLR immer noch?
Am vergangenen Dienstag präsentierten Forscher von SUNY Binghamton und der University of California, Riverside, ein Papier mit dem Titel Über ASLR springen: Zweigprädiktoren angreifen, um ASLR zu umgehen . Das Papier beschreibt eine Möglichkeit, den Branch Target Buffer (BTB) anzugreifen. Das BTB ist Teil des Prozessors, der if-Anweisungen beschleunigt, indem er das Ergebnis vorhersagt. Mit der Methode der Autoren ist es möglich, Positionen bekannter Verzweigungsanweisungen in einem laufenden Programm zu bestimmen. Der fragliche Angriff wurde auf einem Linux-Computer mit einem Intel Haswell-Prozessor (erstmals 2013 veröffentlicht) durchgeführt, konnte jedoch wahrscheinlich auf jedes moderne Betriebssystem und jeden modernen Prozessor angewendet werden.
Das heißt, Sie sollten nicht unbedingt verzweifeln. Das Papier bot einige Möglichkeiten, wie Hardware- und Betriebssystementwickler diese Bedrohung mindern können. Neuere feinkörnige ASLR-Techniken würden vom Angreifer mehr Aufwand erfordern, und eine Erhöhung der Entropie (Zufälligkeit) kann den Jump Over-Angriff unmöglich machen. Höchstwahrscheinlich sind neuere Betriebssysteme und Prozessoren gegen diesen Angriff immun.
Also, was bleibt übrig machen? Der Jump Over-Bypass ist neu und wurde in freier Wildbahn noch nicht entdeckt. Wenn Angreifer es ausnutzen, erhöht der Fehler den potenziellen Schaden, den ein Angreifer auf Ihrem Gerät verursachen kann. Diese Zugriffsebene ist nicht beispiellos. Microsoft und Apple haben ASLR nur in ihren ab 2007 veröffentlichten Betriebssystemen implementiert. Selbst wenn diese Art des Angriffs an der Tagesordnung ist, werden Sie nicht schlechter dran sein als zu Zeiten von Windows XP.
Denken Sie daran, dass Angreifer ihren Code immer noch auf Ihrem Gerät haben müssen, um Schaden anzurichten. Dieser Fehler bietet ihnen keine zusätzlichen Möglichkeiten, Sie zu infizieren. Wie immer solltest du Befolgen Sie die bewährten Sicherheitsmethoden . Verwenden Sie Antivirus, halten Sie sich von skizzenhaften Websites und Programmen fern und halten Sie Ihre Software auf dem neuesten Stand. Wenn Sie diese Schritte ausführen und böswillige Akteure von Ihrem Computer fernhalten, sind Sie so sicher wie nie zuvor.
Bildnachweis: Steve / Flickr