Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

NX-Bit

aus Wikipedia, der freien Enzyklopädie

DasNX-Bit (No eXecute, AMD) bzw.XD-Bit (ExecuteDisable, Intel) ist eine Technik vonProzessoren derx86-Familie zur Verbesserung der Sicherheit eines Computers. Sie soll verhindern, dass beliebige Daten als Programmcode ausgeführt werden und auf diese WeiseSchadcode starten, wie z. B.Viren,Backdoors u. ä. Das NX-Bit wurde vonAMD 2004 bei derx86-Architektur eingeführt und auch vonIntel und anderenHerstellern von x86-Prozessoren übernommen. BeiWindows-Betriebssystemen (ab Windows XP SP2) wird die Technik auch alsData Execution Prevention[1] (kurzDEP;deutschDatenausführungsverhinderung) bezeichnet.

Ähnliche Techniken gibt es auf anderenProzessorarchitekturen schon länger, etwa beimPowerPC vonIBM undMotorola, derSPARC-Architektur vonSun und denAlpha-Prozessoren vonDEC.

Geschichte

[Bearbeiten |Quelltext bearbeiten]

Seit dem80286-Prozessor von Intel besteht im sogenanntenProtected Mode die Möglichkeit, einzelneSpeichersegmente alsausführbar (Code-Segmente) odernicht ausführbar (Daten-Segmente) zu kennzeichnen. Wird versucht, Code an einer Adresse in einem alsnicht ausführbar markierten Speichersegment auszuführen, löst die CPU einen Hardware-Interrupt aus, welcher vom Betriebssystem abgefangen wird. Das betreffende Programm wird daraufhin abgebrochen.

Seit den 1990er Jahren nutzen moderne Betriebssysteme zwar ebenfalls denProtected Mode, jedoch verwenden sie ein sogenanntes „flachesSpeichermodell“ (linearer Adressraum), in dem sämtliche Segmente den gleichen linearen Speicherbereich überdecken. Der segmentbasierteSpeicherschutz ist damit ausgehebelt, eine Trennung zwischen Code- undDatensegmenten ist nicht mehr vorhanden.

Die Technik wurde daher vom ChipherstellerAMD 2004 mit dem ProzessorAthlon 64 unter dem NamenNX-Bit für den x86-Markt eingeführt[2] und alsEnhanced Virus Protection (EVP) vermarktet.Intel setzte eine vergleichbare Technik bereits bei der gemeinsam mitHewlett-Packard entwickeltenItanium-Architektur ein und zog 2005 mit denPentium-4-[3] undPentium-M-Modellen, sowie bei der 2006 eingeführtenCore-Mikroarchitektur auch auf der x86-Architektur nach, allerdings unter dem NamenXD-Bit (Execute Disable). AuchTransmeta undVIA/Centaur übernahmen die Technik in deren x86-Prozessoren.[2][4][5][6]

Funktionsweise

[Bearbeiten |Quelltext bearbeiten]
64-Bit-Eintrag im Seitenverzeichnis (Page directory entry)
Bits:6362 … 5251 … 32
Inhalt:NXreservedBit 51 … 32 der Basisadresse
Bits:31 … 1211 … 9876543210
Inhalt:Bit 31 … 12 der BasisadresseAVLig0igAPCDPWTU/SR/WP

Heutige Betriebssysteme verlassen sich beim Speicherschutz ausschließlich aufseitenbasiertes Speichermanagement. Dieses gestattet bei der 32-Bit-x86-ArchitekturIA-32 zwar die Unterscheidung zwischen Seiten, die „nur lesbar“ und welchen, die „les- und schreibbar“ sind (siehe Bit 1 („R/W“) im Seitentabelleneintrag), jedoch ist dort keine Unterscheidung zwischen (Daten) „Lesen“ und (Code) „Ausführen“ vorgesehen. AMD hat für das NX-Bit das Bit 63 in den 64-Bit-Seitentabellen und -verzeichnissen verwendet. 64-Bit-Seitentabellen und -verzeichnisse werden nur im 64-Bit-Modus und im 32-Bit-Modus mit aktivierterPhysical-Address Extension (PAE) verwendet.

Das NX-Bit wird vom Betriebssystem, sofern es dieses unterstützt, für denStack und andereDatensegmente im Arbeitsspeicher gesetzt, so dass diese nicht mehr ausführbar sind. Versucht ein Programm nun, aufgrund eines Bugs oder einer Infektion mit Schadcode diese so markierten Speicherseiten auszuführen, fängt die CPU dies ab und meldet dies über einen Hardware-Interrupt an das Betriebssystem, welches daraufhin das betroffene Programm beendet.

Durch dieses Vorgehen wird dasVon-Neumann-Prinzip, Daten und Programm in einem gemeinsamen Speicher abzulegen, teilweise verletzt. Allerdings wird nur der Ausführung von Code in Datensegmenten (z. B. in einem Stack oderHeap) vorgebeugt. Der Pufferüberlauf an sich wird nicht unterbunden. Wenn dabei einSprung in eine Codepage ausgelöst wird, ist die No-Execute-Technik wirkungslos. Des Weiteren lässt sich trotz dieser Technik beliebiger Code beispielsweise durch ein „return into libc“ ausführen.

Betriebssysteme

[Bearbeiten |Quelltext bearbeiten]

Auf 64-Bit-x86-Systemen (x64: auch oft „x86_64“ oder „amd64“ bezeichnet) ist das NX-Bit in jedem Fall nutzbar. Auf 32-Bit-x86-Betriebssystemen (IA-32, meist „x86“ oder „i386“) ist technisch das NX-Bit nur nutzbar, wenn auchPAE aktiviert ist.[7] Bei älteren Betriebssystemen muss PAE noch manuell vom Benutzer aktiviert werden, etwa unterWindows 2000. Auch derLinux-Kernel kann auf IA-32 sowohl mit als auch ohne PAE konfiguriert werden; die Voreinstellung wurde jedoch Mitte der 2000er Jahre bald aktiviertes PAE bei den 32-Bit-Varianten von Windows, Mac OS X und Linux, und somit auch die Unterstützung für das NX- bzw. XD-Bit.OS/2 bzw. dessen NachfolgerArcaOS (vormals eComStation) hingegen nutzt PAE aus Gründen der Kompatibilität mit Treibern und Anwendungssoftware nicht. (Mit ArcaOS 5.1 von 2023 kam zwar PAE-Unterstützung hinzu, damit ist jedoch nur eineRAM-Disk nutzbar.)

Windows

[Bearbeiten |Quelltext bearbeiten]

Das BetriebssystemWindows vonMicrosoft unterstützt DEP abWindows XP SP 2, sofern der jeweilige Prozessor die Möglichkeit bietet. AbWindows Vista sind die Einstellungen dem Benutzer sichtbar (Systemeigenschaften → Erweitert → Leistung → Einstellungen → Datenausführungsverhinderung).Windows 8 und neuere Windows-Versionen können auf Prozessoren ohne NX-Bit nicht gestartet werden.[8]

Linux

[Bearbeiten |Quelltext bearbeiten]

FürLinux wurde vom beiRed Hat angestellten Entwickler Ingo Molnar einPatch zur Unterstützung des NX-Bit für denLinux-Kernel der 2.6er-Reihe entwickelt, der für Kernel 2.6.6 inRed Hat Linux zur Verfügung gestellt wurde.[9][10] Im offiziellen Linux-Kernel ist der Patch ab Version 2.6.8 enthalten.

macOS

[Bearbeiten |Quelltext bearbeiten]

Das Betriebssystem für Computer vonApple,macOS (früher „Mac OS X“ und „OS X“), unterstützt das NX-Bit seit der ersten Intel-Version (fürIntel-Macs) 10.4.4 „Tiger“.[11]

CPUs mit NX-Bit

[Bearbeiten |Quelltext bearbeiten]

Prozessoren mit dem NX-Bit-Feature lassen sich per Software an einem gesetzten 11. Bit imExtended Feature Enable Register erkennen. Dieses „model specific register“ lässt sich nur von privilegierter Software (Systemsoftware), also beispielsweise vom Betriebssystemkern, auslesen.

AMD

[Bearbeiten |Quelltext bearbeiten]

Intel

[Bearbeiten |Quelltext bearbeiten]

Übrige

[Bearbeiten |Quelltext bearbeiten]

Weblinks

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. msdn.microsoft.com
  2. abTom Krazit: Transmeta targets Pentium M users with NX security bit. No Execute feature for security gets backing. In: InfoWorld. 17. Mai 2004, abgerufen am 18. September 2022 (amerikanisches Englisch): „Earlier this month, AMD released two Mobile Athlon 64 processors for thin and light notebooks that support NX, or what AMD calls Enhanced Virus Protection.“ 
  3. Christof Windeck: Intel lässt Details zu kommenden Pentium-4-Versionen entschlüpfen. In:Heise online. 4. Juni 2004. Abgerufen am 18. September 2022.
  4. Christof Windeck: Transmetas Efficeon-Prozessoren bald mit NX-Speicherschutz. In:Heise online. 18. Mai 2004. Abgerufen am 18. September 2022.
  5. Christof Windeck: VIA will auch bald C3-Prozessoren mit NX-Speicherschutz liefern. In:Heise online. 19. Mai 2004. Abgerufen am 18. September 2022.
  6. Andreas Stiller: Fall Processor Forum: 64-Bit-Prozessor von VIA. In:Heise online. 6. Oktober 2004. Abgerufen am 18. September 2022.
  7. https://devblogs.microsoft.com/oldnewthing/20210510-00/?p=105200
  8. https://support.microsoft.com/de-de/help/12660/windows-8-system-requirements
  9. Jürgen Schmidt: No eXecution für Linux. In:Heise online. 4. Juni 2004. Abgerufen am 18. September 2022.
  10. corbet: x86 NX support. In: LWN.net. 2. Juni 2004, abgerufen am 6. April 2024 (englisch). 
  11. Muhammad Arif Butt, Zafar Iqbal Khan, Muhammad Idrees, Zarafshan Ajmal:An In-Depth Survey of Bypassing Buffer Overflow Mitigation Techniques; Applied Sciences. Hrsg.: MDPI. Basel, Schweiz 1. Juli 2022,S. 11,doi:10.3390/app12136702 (englisch,mdpi.com [abgerufen am 6. April 2024]):“The mac OS X 10.4.4 onwards supports NX bit on all Apple-supported processors.” 
Befehlssatzerweiterungen derx86-Architektur (16 Bit;32 Bit:IA-32;64 Bit:x64)
Betriebsmodi

Real ModeProtected ModeVirtual 8086 ModeSystem Management ModeLong ModeCompatibility Mode

Befehlssatzerweiterungen

x87PAENXAMD64/Intel 64 (x64) ⬝HTTVT-x/AMD-V/VIA VT3DNow!MMXSSESSE2PadLockSSE3SSSE3SSE4SSE4aSSE5F16CAVXCLMULAES-NIFMATSXBMIMPXSGX

Abgerufen von „https://de.wikipedia.org/w/index.php?title=NX-Bit&oldid=253051630
Kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp