Sie sind hier

Execution Protection (NX)

Eintrag zuletzt aktualisiert am: 07.03.2004

Microsoft führt mit XP SP2 die sogenannte Execution Protection (NX) ein, die verhindert, dass Daten als Code ausgeführt werden (was üblicherweise bei Buffer-Overflow-Attacken ausgenutzt wird).

Auf 64-Bit-Prozessoren wird das hardwareseitig (NX-Flag), auf 32-Bit-Prozessoren nur softwareseitig unterstützt.

Probleme kriegen alle Anwendungen, die bewußt oder unbewußt (!) Speicher als Datenbereich allokieren und darin Code ausführen. Betroffen sein könnten Treiber sowie alle Anwendungen, die mit Laufzeitcodegenerierung arbeiten.

.NET-Anwendungen (Managed Code) sind *nicht* betroffen, auch wenn Sie mit Laufzeitcodegenerierung arbeiten.
Betroffen sind auch alle Anwendungen, die nicht sauber programmiert sind und die einen Buffer-Overflow produzieren und nur durch glückliche Umstände in der Regel dabei nicht abstürzen, weil zufällig was sinnvolles im Datenbereich steht. Diese Anwendungen werden nun immer mit einer ACCESS_VIOLATION beendet werden.

Wenn Entwickler mit Laufzeitcodegenerierung arbeiten, muss der Entwickler sicherstellen, dass Sie Speicher mit einem PAGE_EXECUTE-Flag anfordern. Solche Anwendungen sollten unbedingt intensiv getestet werden unter SP2. Auch alle Treiberhersteller sollten unbedingt testen.

Wie gross der Aufwand im einzelnen Fall ist, hängt natürlich vom Umfang der Anwendung, der Qualität der Programmierung und der vorhandenen Quelleocodedokumentation ab. Im Allgemeinen halte ich den Aufwand aber bei gut entwickelter Software für sehr überschaubar.