NX位(全名“No eXecute bit”,即「禁止執行位」,或“執行停用位元”),是應用在CPU中的一種安全技術。

原理

支持NX技术的系统会把電腦記憶體中的區域分类為只供儲存處理器指令集与只供存储數據使用的两种。任何标记了NX位的区块代表僅供存储數據使用而不是儲存處理器的指令集,处理器将不会将此处的数据作为程式碼执行,以此這種技術可防止多數的缓存溢出式攻擊(即一些惡意程式把自身的惡意指令集通过特殊手段放在其他程式的儲存區並被執行,從而攻击甚至控制整台電腦系统)。

背景

類似的技術其實早已應用在SPARCDEC AlphaIBMPowerPC、甚至是英特爾IA-64架構處理器Itanium上;但「NX」這個名稱最先在AMDAthlon 64Opteron等支援AMD64的處理器上使用,並成為這些技術的代名詞。

x86處理器的頁表索引中,NX位元置於63號的位置(以0作第一位),即64位中的最後一位。如果NX位元的數值是0(關閉),在頁表內的指令集可正常執行;但如果是1(啟動)的話則不能執行頁表的指令集,並會把頁表的一切皆當作數據。在格式上,頁表需為PAE格式,而非x86傳統的格式。

2001年,英特爾在自家的Itanium處理器加入這種技術,但未有在PentiumCeleronXeon等x86處理器上使用。在AMD把NX應用在AMD64之後,英特爾也為Prescott版本的Pentium 4處理器加入類似技術,並以“執行停用位元”(eXecute Disable,XD)的名義推出市場。在功能上,AMD的“NX”和Intel的“XD”完全相同,只是名稱不同。

Microsoft在Windows XP SP2實作了資料執行防止技術。