Vergitterte Fenster, Teil 1

Seite 4: Befehlsverweigerung

Inhaltsverzeichnis

Die Execution Protection (NX, no execute) soll die Auswirkungen von Angriffen über Buffer Overflows, Integer Overflows, Heap Overflows, Format-String-Schwächen und anderen Fehlern minimieren. Ziel solcher Angriffe ist es, eigenen Code in das System einzuschleusen und auszuführen [3]. Üblicherweise überschreibt man dazu Bereiche in denen Daten abgelegt werden, etwa Stacks und Heaps, mit Code und springt ihn durch Manipulation des Instruction Pointers an. NX verhindert das Ausführen von Code, der in Datenbereichen abgelegt ist, sofern die als "nicht ausführbar" gekennzeichnet sind. Ein Angriff des Wurms Lovsan/MSBlaster hätte mit dieser Funktion auf Windows XP allenfalls den RPC-Dienst zum Absturz gebracht - den Rechner hätte er nicht infizieren können. NX ist standardmäßig aktiviert und markiert Datenbereiche wie Stacks und Heaps als nicht-ausführbar.

Um Execution Protection zu implementieren, greift Microsoft auf die Fähigkeiten moderner 64-Bit-Prozesoren zurück, die Funktionen zur NX-Kennzeichnung von Speicherbereichen mitbringen. Derzeit stehen dafür der Athlon64 von AMD und der Itanium von Intel zur Verfügung. Bislang kann nur der Athlon64 mit dem 32-bittigen Windows XP zuammenarbeiten und dies auch nur im PAE-Mode (Physical Address Extension). Einige Treiber könnten hier zukünftig ihren Dienst versagen, da PAE einen 64-Bit-Adressraum benutzt, den 32-Bit-Adapter nicht adressieren können. Microsoft hat deshalb auch den Hardware Abstraction Layer (HAL) und den Memory Manager modifiziert, um weitestgehende Kompatibilität zu älteren 32-Bit-Treibern zu erhalten.

Ruft eine Applikation eine als NX markierte Speicherseite auf, löst der Prozessor eine Exception (STATUS_ACCESS-VIOLATION im User Mode) aus, die in den meisten Fällen unbehandelt bleibt und zur Terminierung des auslösenden Prozesses führt. Greift der Kernel auf einen geschützten Speicherbereich zu, stürzt Windows ab (ATTEMPTED_EXECUTE_OF_NONEXECUTE_MEMORY). Leider schützt Execution Protection den Kernel Mode im 32-Bit-Windows-XP nur halb: Einzig der Stack wird als NX markiert. Anders beim 64-Bit-Windows-XP: Außer dem Stack sind auch die Heaps geschützt.

Einige Applikationen, die etwa zur Laufzeit neuen Programmcode generieren und ausführen wollen, dürften nach der Installation des Service Packs nicht mehr funktionieren. Über spezielle Funktionen können neue Anwendungen ausführbaren Speicher anfordern, ältere Programme müssen dazu überarbeitet werden.

In den Schutz von NX kommen bis auf weiteres nur Besitzer aktueller 64-Bit-CPUs. Damit hat Microsoft den Abstand zur Konkurrenz zwar verkürzt -- aber noch nicht ganz aufgeholt. OpenBSD und Linux mit der Erweiterung PaX bieten ähnliche Schutzmechanismen bereits auf gewöhnlichen x86-Systemen [4].

Der zweite und letzte Teil dieses Artikels beleuchtet unter anderem die Verbesserungen durch Service Pack 2 bei Internet Explorer, Outlook Express und Patch Management.

[1] Changes to Functionality in Service Pack 2 for Microsoft Windows XP

[2] Deploying Internet Connection Firewall Settings for Windows XP with Service Pack 2

[3] Buffer-Overflows und andere Sollbruchstellen

[4] Speicherschutz mit PaX (dab)