Skip to content

Schutzmaßnahmen: ASLR gegen Pufferüberlauf-Schwachstellen

Eine der ersten beiden Schutzmaßnahmen gegen Angriffe auf Pufferüberlauf-Schwachstellen ist die Data Execution Prevention (DEP). Aber die lässt sich umgehen, reicht also als alleiniger Schutz nicht aus.

Angriff trotz DEP

Beim klassischen Angriff auf eine Pufferüberlauf-Schwachstelle schreibt der Angreifer seinen Schadcode auf den Stack oder den Heap und springt ihn dann durch eine Manipulation der Rücksprungadresse auf dem Stack an. Wird über die DEP verhindert, dass Code auf dem Stack oder im Heap ausgeführt wird, schlägt diese Taktik fehl. Die Pufferüberlauf-Schwachstelle existiert aber trotz DEP, der Angreifer muss also nur nach einem Weg suchen, die DEP zu umgehen. Ein solcher Weg ist der Return-to-libc-Angriff.

Rücksprung in die C-Library

Beim "Return (in)to libc" springt der Angreifer keinen eigenen, eingeschleusten Code an, sondern Funktionen der C-Library libc. Die stellt eine Vielzahl von Funktionen für C-Programm bereit und ist naturgemäß ausführbar. Der Angreifer muss also "nur" die Rücksprungadresse auf dem Stack mit der Adresse einer libc-Funktion seiner Wahl überschreiben, um diese Funktion anstelle der eigentlich im Programmablauf vorgesehenen auszuführen. Gut geeignet ist dafür zum Beispiel die Funktion system() zum Ausführen beliebiger Systemprogramme, dem dann nur noch das auszuführende Programm übergeben werden muss. Die DEP ist bei so einem Angriff wirkungslos, da nur für die Ausführung von Code vorgesehene Speicherbereiche angesprungen werden. Ein Canary zum Erkennen des Pufferüberlaufs ist wirksam, da beim Angriff der canary-Wert überschrieben wird. Es gibt jedoch auch Möglichkeiten, diesen Schutz zu umgehen (PDF). Aber das würde hier jetzt zu weit führen. Kommen wir zurück zum Return-to-libc-Angriff und DEP.

Auf 32-Bit-Systemen sind Return-to-libc-Angriff relativ leicht zu realisieren, da die Parameter für die libc-Funktionen ebenfalls über den Stack übergeben werden. Und der kann ja durch den Pufferüberlauf nahezu nach Belieben manipuliert werden. Auf 64-Bit-Systemen dagegen werden die Parameter über Prozessorregister übergeben, und die lassen sich vom Angreifer nicht manipulieren. Aber schon 2005 zeigte Sebastian Krahmer von Suse, wie ein Angreifer durch das Kombinieren von Codefragmenten aus Standardbibliotheken beliebige Register mit den über den Pufferüberlauf eingeschleusten Werten besetzen kann. Dadurch sind Return-to-libc-Angriffe auch unter 64-Bit-Systemen möglich (PDF). Sebastian Krahmer nannte diesen Angriff "Code Chunk Borrow Technique", da kleine Teile des Codes neu kombiniert werden.

Außer dem Return-to-libc-Angriff gibt es weitere entsprechende Angriffe, die alle zusammen unter dem Begriff Return-oriented programming (ROP) zusammengefasst werden. Alle laufen darauf hinaus, dass der Angreifer die Kontrolle über den Programmablauf übernimmt und vorhandenen Code anspringt.

Da die DEP umgangen werden kann, muss eine neue, zusätzliche Schutzmaßnahme her. Was könnte man gegen die Return-to-libc-Angriffe machen?

Die Lösung: Das Finden von Code erschweren

Return-to-libc-Angriffe funktionieren nur, wenn der Angreifer weiß, wohin er springen muss. Da der Speicher der Reihe nach an die Programme vergeben wird und jedes Programm einen einheitlichen Speicherbereich belegt, ist das relativ einfach. Aber was wäre, wenn der Speicher nicht mehr so gleichmäßig vergeben würde, sondern jedem Programm eine zufällige Auswahl an Speicherblöcken zugewiesen würde? Oder jedes Programm seine Bibliotheken zufällig im zugewiesenen Speicher verteilen würde? Dann wüssten die Angreifer nicht mehr, an welchen Adressen die gesuchten Funktionen oder Code-Fragmente zu finden sind, und das Anspringen wird zum Glücksspiel.

Und genau so wurde das Problem auch gelöst. Das Verfahren wird als Adress Space Layout Randomization (ASLR) bezeichnet. Mit ASLR werden die Adressbereiche den Programmen auf zufälliger Basis zugewiesen. Codesegment, Heap und Stack beginnen an zufällig gewählten Adressen, und auch die Bibliotheken werden bei jedem Programmstart an andere zufällige Adressen geladen. Ein Angreifer weiß also beim Schreiben seines Exploits nicht, wo er die für den Angriff benötigten Funktionen und Code-Fragmente findet, was einen erfolgreichen Angriff schwierig macht.

ASLR wird von den aktuellen Versionen aller wichtigen Betriebssysteme unterstützt.

Auch ASLR lässt sich natürlich umgehen. Wie, erfahren Sie in der nächsten Folge.

Carsten Eilers


Übersicht über alle Artikel zum Thema

Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 1
Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 2
Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 3
Schutzmaßnahmen: Content Security Policy gegen XSS, Teil 4
Schutzmaßnahmen: Der Pufferüberlauf im Überblick
Schutzmaßnahmen: Canary und DEP gegen Pufferüberlauf-Schwachstellen
Schutzmaßnahmen: ASLR gegen Pufferüberlauf-Schwachstellen
Schutzmaßnahmen: ASLR kann unterlaufen werden
Schutzmaßnahmen: Weitere Angriffe trotz ASLR

Trackbacks

Dipl.-Inform. Carsten Eilers am : 0-Day-Schwachstelle im Internet Explorer, die dritte

Vorschau anzeigen
Es gibt schon wieder eine 0-Day-Schwachstelle im Internet Explorer. Insgesamt die 15. in diesem Jahr, und die dritte im Internet Explorer (und dann gab es da ja auch noch die Ende Dezember 2012 im IE gemeldete, die es fast in dieses Jahr geschaff

Dipl.-Inform. Carsten Eilers am : 0-Day-Schwachstelle in Microsoft Graphics betrifft Office und Windows

Vorschau anzeigen
Es gibt mal wieder eine 0-Day-Schwachstelle. Sie befindet sich in Microsoft Graphics und betrifft Windows (Vista und Server 2008, Microsoft Office und Lync. Es handelt sich um die 17. 0-Day-Schwachstelle in diesem Jahr. Wie (mit einer Ausnahme)

Dipl.-Inform. Carsten Eilers am : 0-Day-Exploit für Internet Explorer entdeckt

Vorschau anzeigen
FireEye hat einen 0-Day-Exploit für den Internet Explorer entdeckt. Der im Rahmen einer Drive-by-Infektion eingesetzte Exploit kombiniert ein Informationsleck und einen "out-of-bounds memory access" zur Ausführung eingeschleusten Schadco

Dipl.-Inform. Carsten Eilers am : Microsoft Graphics: Eine 0-Day-Schwachstelle, mindestens zwei Angriffe

Vorschau anzeigen
Es gibt weitere Informationen zur 0-Day-Schwachstelle in Microsoft Graphics, die über präparierte Word-Dateien ausgenutzt wird. Und die sind sehr interessant, denn es könnte sich ein neuer Trend für 0-Day-Angriffe herauskristal

Dipl.-Inform. Carsten Eilers am : Der 0-Day-Patchday am 10.12.2013: 4x Microsoft, 1x Adobe

Vorschau anzeigen
Wie angekündigt hat Microsoft am Dezember-Patchday am 10.12. einen Patch für die 0-Day-Schwachstelle in MS Graphics veröffentlicht. Außerdem wurden von Microsoft drei weitere 0-Day-Schwachstellen behoben, die bisher nicht &ou

Dipl.-Inform. Carsten Eilers am : Drucksache: windows.developer Magazin 1.2014 - Wie sicher ist Windows 8?

Vorschau anzeigen
Im windows.developer 1.2014 ist ein Artikel über die Entwicklung der Sicherheit von Windows 8 seit seinem Erscheinen erschienen. Seit der Veröffentlichung von Windows 8 ist etwas mehr als ein Jahr vergangen. Ein Jahr, in dem es kei

Dipl.-Inform. Carsten Eilers am : Die erste 0-Day-Schwachstelle 2014 befindet sich im Flash Player

Vorschau anzeigen
Es geht wieder los: Der erste 0-Day-Exploit 2014 wurde entdeckt: Eine Schwachstelle im Flash Player erlaubt die Ausführung eingeschleusten Codes und wird bereits für Angriffe ausgenutzt. 4. Februar 2014: Adobe veröffentlicht

Dipl.-Inform. Carsten Eilers am : Wasserloch-Angriffe über 0-Day-Schwachstelle im Internet Explorer

Vorschau anzeigen
Die zweite 0-Day-Schwachstelle des Jahres 2014 befindet sich im Internet Explorer und wird im Rahmen von Wasserloch-Angriffen über die Website der "U.S. Veterans of Foreign Wars" ausgenutzt. FireEye hat den Exploit am 11. Februar entdeckt

Dipl.-Inform. Carsten Eilers am : 0-Day-Schwachstelle im Flash Player, die zweite (im Februar 2014)

Vorschau anzeigen
Die dritte 0-Day-Schwachstelle des Jahres befindet sich im Flash Player. Und weil das so harmlos klingt: Es ist nicht nur die dritte 0-Day-Schachstelle des Jahres, sondern auch des Monats - die erste wurde von Adobe am 4. Februar behoben, am 13.

Dipl.-Inform. Carsten Eilers am : Dritter 0-Day-Exploit für den Internet Explorer in 2014 entdeckt

Vorschau anzeigen
Microsoft warnt vor einem 0-Day-Exploit für den Internet Explorer. Es ist der dritte für den IE und der sechste insgesamt im Jahr 2014. Das besondere an diesem Exploit: Er betrifft alle IE-Versionen von 6 bis 11 und damit auch das nic

Dipl.-Inform. Carsten Eilers am : Drucksache: Mobile Technology 3.2014 - Androids Sicherheit aus Forschersicht

Vorschau anzeigen
Im Magazin Mobile Technology 3.2014 ist ein Artikel über die Vorträge zu Android auf den Sicherheitskonferenzen erschienen. "IT-Sicherheit" ist allgemein ein sehr dynamischer Bereich, und Android macht da keine Ausnahme. Neue Technol

Dipl.-Inform. Carsten Eilers am : Neues eBook: Android Security - Von Fake-Apps, Trojanern und Spy Phones

Vorschau anzeigen
Bei entwickler.press ist mein E-Book über die Sicherheit von Android erschienen: "Android Security - Von Fake-Apps, Trojanern und Spy Phones". Es gibt einen Überblick über die aktuelle Sicherheitslage von Android: W

Dipl.-Inform. Carsten Eilers am : Microsoft patcht, und wieder sind 0-Day-Schwachstellen dabei!

Vorschau anzeigen
Auch am Februar-Patchday hat Microsoft wieder einige 0-Day-Schwachstellen behoben. Für eine davon gibt es sogar einen 0-Day-Exploit. Zum Glück werden davon aber nur Schutzmaßnahmen umgangen und kein Code ausgeführt. Obwohl auc

Dipl.-Inform. Carsten Eilers am : Der Juli-Patchday war ein 0-Day-Patchday

Vorschau anzeigen
Microsoft hat am gestrigen Patchday mal wieder einige 0-Day-Schwachstellen behoben. Darunter sowohl bereits für Angriffe ausgenutzte als auch "nur" öffentlich bekannte Schwachstellen. Und auch Oracle hat an deren Patchday zugeschlagen

Dipl.-Inform. Carsten Eilers am : Drucksache: Windows Developer 10.15 - Wie sicher ist C# 6.0?

Vorschau anzeigen
Im windows.developer 10.15 ist ein Artikel zur Sicherheit von C# 6.0 erschienen. C# 6 ist da. Ebenso Visual Studio 2015 und .NET 4.6. Und auch wenn C#6 keine sicherheitsrelevanten Änderungen enthält gibt es Neuigkeiten rund um die S

entwickler.de am : PingBack

Die Anzeige des Inhaltes dieses Trackbacks ist leider nicht möglich.

Dipl.-Inform. Carsten Eilers am : Drucksache: Mobile Technology 4.2015 - Android auf der Black Hat USA 2015

Vorschau anzeigen
Im Magazin Mobile Technology 4.2015 ist ein Artikel über die auf der Black Hat USA 2015 vorgestellten Schwachstellen in und Angriffe auf Android wie Stagefright und Certifi-gate erschienen. Die Sicherheitsforscher haben auf der Black

Dipl.-Inform. Carsten Eilers am : Drucksache: Windows Developer 1.16 - Edge und die Sicherheit

Vorschau anzeigen
Im windows.developer 1.16 ist ein Artikel über die Sicherheit von Edge erschienen. Edge ist sicherer als der IE, daran besteht wohl kein Zweifel. Was auch kein Wunder ist, hat man doch reichlich alten Code und alte Funktionen entsorgt,

entwickler.de am : PingBack

Die Anzeige des Inhaltes dieses Trackbacks ist leider nicht möglich.

Dipl.-Inform. Carsten Eilers am : Drucksache: Windows Developer 7.16 - Alles im Fluss?

Vorschau anzeigen
Im windows.developer 7.16 ist ein Artikel über Angriffe auf den Kontrollfluss von .NET-Anwendungen erschienen. Das alte Wettrennen zwischen Angreifern auf und Verteidigern von Windows-Rechnern geht in eine neue Runde: Auf der DEF CON 2