NX比特

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实作了数据运行防止技术。

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.