- Data Execution Prevention
-
Das NX-Bit (No eXecute) ist die Bezeichnung einer Technik zur „Verbesserung der Sicherheit eines Computers“, die der Chiphersteller AMD mit dem Prozessor Athlon 64 für den x86-Markt einführte. Die Technik wird von AMD als „Enhanced Virus Protection“ (EVP) vermarktet.
Auch Intel verwendet in den Itanium-Prozessoren und in den neuesten Pentium-4- und Pentium-M- sowie den Core-Modellen diese Technik, allerdings unter dem Namen XD-Bit (Execute Disable).
Auch Transmeta und VIA/Centaur bieten CPUs mit NX-Bit an.
Ähnliche Techniken gibt es schon länger, etwa beim PowerPC von IBM, beim Sun SPARC und bei den Alpha-Prozessoren.
Funktionsweise
Computerwürmer basieren oft auf einem Pufferüberlauf, der ihnen ermöglicht, ihren Programmcode auf dem Zielsystem auszuführen. Der Code besteht aus Routinen zur selbstständigen Weiterverbreitung und in der Regel auch Schadensfunktionen, die Daten zerstören können. Das NX-Bit wird nun vom Betriebssystem für den Stack im Arbeitsspeicher so gesetzt, dass zwischen Daten und Code unterschieden wird. Durch diese strikte Trennung kann nun in einem als Daten markiertem Speicherbereich, zum Beispiel einem Bild, kein Code mehr ausgeführt werden. Dieser Schutz funktioniert allerdings nur mit Betriebssystemen, die Unterstützung für das NX-Bit enthalten.
Durch dieses Vorgehen wird das Von-Neumann-Prinzip, Daten und Programm in einem gemeinsamen Speicher abzulegen, teilweise gebrochen. Allerdings wird nur der Ausführung von Code in Datensegmenten (z. B. in einem Stack oder Heap) vorgebeugt. Der Pufferüberlauf an sich wird nicht unterbunden. Wenn dabei ein Sprung in eine Codepage ausgelöst wird, ist die No-Execute-Technik wirkungslos. Allerdings lässt sich trotz dieser Technik beliebiger Code beispielsweise durch ein „return into libc“ ausführen.
Vor Ganzzahlüberläufen, Programmabstürzen und DoS-Attacken schützt das NX-Bit nicht.
CPUs mit NX-Bit:
- AMD Athlon 64
- AMD Athlon 64 X2
- AMD Athlon 64 FX
- AMD Opteron
- AMD Sempron (ab Paris)
- AMD Turion 64
- AMD Turion 64 X2
- AMD Phenom
- Intel Atom
- Intel Celeron (ab Conroe-L-Kern)
- Intel Celeron D
- Intel Celeron M (ab Dothan-Kern)
- Intel Core Duo
- Intel Core Solo
- Intel Core 2 Duo
- Intel Core 2 Extreme
- Intel Core 2 Quad
- Intel Core i7
- Intel Pentium 4 (ab Prescott-F/J-Typ)
- Intel Pentium D
- Intel Pentium Extreme Edition
- Intel Pentium M (ab Dothan, neuere Modelle)
- Transmeta Efficeon
- VIA C7
- VIA Nano
Weblinks
- Vortrag über das NX-Bit von AMD (englisch)
- Linux-Magazin: Implementation von ASLR und NX/XD-Bit im Linux 2.6 Kernel
- heise.de:Verwundbar trotz No Execute
Wikimedia Foundation.