Microsoft EMET 2.0: So soll Windows sicherer werden

Eine der am häufigsten ausgenutzten Schwachstellen sind Pufferüberläufe. Ihre Funktionsweise ist einfach: Eine Datenstruktur ist vom Programmierer auf eine bestimmte Größe, beispielsweise 256 Byte, begrenzt. Ein Angreifer verwendet absichtlich mehr Bytes für diese Struktur und hofft darauf, dass der Programmierer nicht überprüft, ob der Angreifer das Limit eingehalten hat.

Fehlt diese Überprüfung, werden benachbarte Daten überschrieben. Nach Möglichkeit versucht der Angreifer die Rücksprungadresse auf dem Stack zu überschreiben. So kehrt eine Routine nach ihrer Beendigung nicht zum aufrufenden Programmteil zurück, sondern zu einer Adresse, die der Angreifer bestimmt.

Er versucht nach Möglichkeit, die Rücksprungadresse auf die von ihm missbräuchlich genutzte Datenstruktur zu setzen. Sie enthält nämlich keine Daten, sondern Schadcode. Neben APIs nutzen Angreifer vor allem "präparierte" Dokumente wie PDF-, JPG- oder WMF-Dateien. Wenn der ahnungslose Benutzer ein präpariertes Dokument mit einer verwundbaren Applikation öffnet, wird der Schadcode ausgeführt.

Dagegen hilft die die Data Execution Protection. Sie benötigt Unterstützung durch den Prozessor. Alle neueren Intel- und AMD-Prozessoren besitzen das sogenannte NX-Bit im Pagetable. Damit lässt sich für jede Speicherseite die Ausführung von Code verbieten. So kommt es zu einer Exception, wenn ein Angreifer Code in einer Datenstruktur versteckt, weil der Speicherbereich der Datenstruktur nicht für ausführbaren Code freigegeben ist. Statt der Ausführung von Schadcode kommt es "nur" zu einem Absturz.

Problematisch dabei ist, dass es eine Reihe von Programmen gibt, sie selbstpatchenden Code verwenden. Typischerweise ist das der Fall, wenn eine Anwendung einen erweiterten Befehlssatz wie SSE2 nutzen kann, aber auch ohne ihn auskommt. Oft patchen Programme SSE2-Code an bestimmten Stellen, wenn beim Starten festgestellt wird, dass der Prozessor SSE2 unterstützt. Solche Programme laufen mit aktiviertem DEP nicht. Es ist daher erforderlich, DEP abzuschalten. Die Abschaltung von DEP für bestimmte Programme betrifft nur 32-Bit-Prozesse. Für 64-Bit-Prozesse ist selbstpatchender Code vom Betriebssystem verboten.

Adress Space Layout Randomization

Address Space Layout Randomization (ASLR) ist eine Technik, um Programmcode zufallsgesteuert an andere Adressen zu laden. Moderne Betriebssysteme verwenden einen virtuellen linearen Adressraum, der bei Null beginnt. Grundsätzlich kann man daher jede Applikation (EXE) so designen, dass sie mit absoluten Adressen arbeitet. Besser ist es jedoch eine EXE-Datei mit einem Relocation Table auszustatten, der es erlaubt, die Anwendung an jede beliebige Adresse zu laden. DLL-Dateien müssen grundsätzlich so gestaltet sein, dass sie an jede beliebige Adresse geladen werden können, ansonsten ist kein dynamisches Nachladen möglich.

Lädt man den Programmcode an zufällige Adressen, ist es für den Angreifer schwieriger, Code aus der Anwendung oder einer DLL zu nutzen. Das funktioniert aber nur mit Anwendungen, die sich im Speicher beliebig verschieben lassen. Microsoft erlaubt daher keine globale Anwendung von ASLR. Mit EMET lässt sich ASLR jedoch für jede Anwendung einzeln aktivieren. Allerdings ist damit zu rechnen, dass viele Programme mit ASLR nicht funktionieren. ASLR ist erst ab Windows Vista verfügbar.

Themenseiten: Betriebssystem, Microsoft, Security-Praxis, Windows

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Microsoft EMET 2.0: So soll Windows sicherer werden

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *