Ausführungsschutz (Data Execution Prevention - DEP)

Gelegentlich werde ich nach detaillierteren Informationen zum Thema DEP gefragt. Auf diesem Wege möchte ich die Gelegenheit nutzen, das Thema genauer zu beleuchten:

Mit Service Pack 1 wurden DEP-Sicherheitsprüfungen zu Windows Server 2003 hinzugefügt (wie bereits im Service Pack 2 für Windows XP auf Client Seite). Diese Prüfungen werden auch als Software-DEP bezeichnet - sie wurden entwickelt, um Angriffe im Bezug auf die Ausnahmenbehandlung von Windows zu verhindern. Software-DEP kann mit jedem Prozessor genutzt werden, auf dem Windows Server 2003 mit Service Pack 1 (oder Windows XP Service Pack 2) ausgeführt werden kann. Unabhängig von eventuellen Hardware-DEP-Fähigkeiten des Prozessors, schützt Software-DEP das System.

Software-DEP führt zusätzliche Prüfungen im Bezug auf die Ausnahmenbehandlung von Windows aus. Wenn die Programm-Imagedateien mit SafeSEH (Safe Structured Exception Handling) erstellt wurden, stellt Software-DEP sicher, dass der Exception-Handler vor der Abarbeitung der Exeption in der Funktionstabelle in der Imagedatei registriert ist. Wenn die Imagedateien nicht mit SafeSEH erstellt wurden, stellt Software-DEP sicher, dass sich der Exception-Handler vor der Abarbeitung in einem als ausführbar markierten Speicherbereich befindet.

Soweit die technische Beschreibung, welchen Vorteil hat DEP denn im Praktischen Einsatz?

Der Hauptvorteil von DEP ist, dass die Ausführung von Code aus Speicherbereichen wie zum Beispiel dem Heap, verschiedenen Stacks und Memory-Pools verhindert wird. Im normalen Systembetrieb wird normalerweise kein Code vom Heap oder einem Stack ausgeführt. Hardware-DEP erkennt Code, der von diesen Orten ausgeführt wird - in diesem Fall wird eine Ausnahme ausgelöst. Wenn die Ausnahme nicht verarbeitet wird, wird der Prozess beendet. Die Ausführung von Code aus geschützten Speicherbereichen im Kernelmodus führt zu einem Fehler.

Die Beendigung eines Prozesses - oder ein möglicher Systemabsturz durch einen Fehler - erscheint zwar nicht ideal, es schützt aber vor der Ausführung von schädlichem Code - so wird das System des Kunden vor Schaden geschützt. Außerdem können die negativen Auswirkungen durch die Verbreitung von schädlichem Code die Probleme durch die Beendigung eines Prozesses oder durch einen Systemfehler bei Weitem übersteigen.

DEP kann solche Angriffe verhindern. Im Besonderen kann DEP verhindern, dass ein Virus oder ein Angreifer einen Prozess mit zusätzlichem Code einschleust und dann versucht, diesen Code auszuführen. Auf einem System mit DEP führt die Ausführung von eingeschleustem Code zu einer Ausnahme. Software-DEP kann Angriffe über die Ausnahmebehandlung von Windows verhindern.

Ein weiterer Vorteil von DEP ist die bessere Treiber- und Anwendungsentwicklung. DEP zwingt die Entwickler dazu, keinen Code aus Datenseiten auszuführen, ohne diese explizit als ausführbar zu markieren.

cu
//.<