NXビット
NXビットは、端的に言えば「データの誤実行」を防ぐために用いられる。そのしくみは、メモリをコード(プロセッサ命令)領域とデータ領域とに分離し、データを配置したメモリ領域にあらかじめ特別な印(属性)を付与することで、この領域のデータを実行しないようにする(実行を試みた際に例外=エラーを発行する)ものである。
典型的には、バッファオーバーラン攻撃(後述)等に代表される、ヒープやスタック領域等に置かれたデータを破壊ないしは書き換えて任意のコードを挿入し実行を誘う攻撃を、オペレーティングシステムとCPUの協調により保護するために用いられる機能である。 その機能自体は、汎用機やワークステーション等の分野では既に特に目新しいものではなかったが、パーソナルコンピュータ用に最も普及したIA-32/AMD64アーキテクチャにおける実装は比較的最近の出来事であり、最初に実装したAMD64系列が搭載したものを"NXbit"と呼称したため、一般にはこの名称が普及した。
ノイマン型アーキテクチャのコンピュータでは、プログラムをメモリ上にデータとして読み込み、逐次実行する。メモリを読み取った際それがデータであるかプログラムであるのかを、単にメモリ上のデータのみをもって判断することは、ノイマン型では本質的に不可能である。バッファオーバーラン(バッファーオーバーフロー)等と呼ばれる攻撃は、ノイマン型コンピュータのこのような性質を悪用して行われる。
なお、インテルはこの機能をXDビット (eXecute Disable) と称している。しかしながら、インテルのXDビットとAMDのNXビットは同一の機能を持ち、従って名称以外は全く同一のものである。
Windows XP Service Pack 2とWindows Server 2003 Service Pack 1から、x86アーキテクチャでは初めてNX機能が実装された。
Windowsでは重要なWindowsのサービスのみにNXによる保護が使用される。Windows XPもしくはServer 2003では、この機能はデータ実行防止 (DEP) と呼ばれ、「マイ コンピュータ」の「詳細設定」より設定できる。もしx86プロセッサがハードウェアでこの機能をサポートしている場合、NX機能はWindows XP/Server 2003ではデフォルトで有効となる。機能がサポートされていない場合には、保護は提供されない。
「ソフトウェアDEP」はNXビットに関係なく、マイクロソフトが「安全な例外ハンドラ」に付けた名称である。「ソフトウェアDEP」や「安全な例外ハンドラ」は、アプリケーションのファンクションテーブルに例外が登録されていることを確認し、プログラムがそのように設計されていることを要求するものである。これは、DEPがNXフォールトを扱う方法により悪用可能な弱点を対策するものである。他の対策法がそのままプログラムを終了するのに対し、DEPは例外を発生させる。