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 markierten 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.