Sie sind hier: Startseite | Wissen
BASTA 2016
Begriff Execution Protection
Abkürzung NX
Eintrag zuletzt aktualisiert am 07.03.2004

 Zur Stichwortliste unseres Lexikons

Was ist Execution Protection?

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.

Beratung & Support:

Schulungen zu diesem Thema:

 Anfrage für eine individuelle Schulung zum Thema Execution Protection  Gesamter Schulungsthemenkatalog