一位安全研究专家在本周三召开的“黑帽子”大会上发表演说时称,目前新型处理器中所集成的、旨在避免系统遭受恶意攻击的非执行(no-execute, NX)技术并不像许多用户认为的那样是包治百病的灵丹妙药。这样的说法不一定是Intel和AMD这些芯片制造商们爱听的话,但用户们却可以从各种各样的媒体报道中听到一些零星的细节。
无论是AMD的“增强型病毒防护”(EVP)还是Intel的“执行禁止”(XD)技术,它们从一般性来讲都是属于非执行技术,即NX。其保护方法的本质,就是在内存中指定一些受保护的片断,使得处理器指令无法在该片断执行。将部分内存设置为隔离区的主要想法就是要阻止蠕虫或其他恶意代码通过注入内存的方式得以运行。
尽管作为一种新生的技术,芯片制造商们还是能对它的局限性进行客观的评价。AMD称EVP只是一种“防御性的措施”,它本身无法完全阻止恶意代码的攻击,但却能够使这些代码“局部化,缩短生命期和丧失传染性”;Intel也采取了类似的说法,称XD技术只能够“充分减少”未来像震荡波和冲击波这样的大规模邮件蠕虫的传播途径。
不过来自互联网安全系统X-Force研究组的工程师大卫-梅纳指出,眼下的问题在于,这样的警告和局限语被各种各样炒作NX技术的媒体报道淹没了。后者将NX的有效性过度的单纯化。“有些报道甚至将NX描述成无坚不摧的‘银弹头’。它们宣称NX能够将所有的安全漏洞都扼杀在成型的过程中,而我们则无须再担心下一场冲击波的降临。”
这当然不可能是真的,梅纳说。NX并不能够阻止所有那些意图制造缓冲区溢出—一种目前最常用的入侵方法的攻击手段。“我自己就能在一台开启了NX的机器上执行我所希望的代码,而这所需要的只是一点点迂回的策略。”例如,“返回库函数”攻击可以将堆栈中返回的地址替换成另一个函数的地址,这就能成为对非执行内存堆栈实施攻击的基本途径。
此外,入侵者还可以通过创建伪造的堆栈帧来屏蔽掉NX所提供的内存保护措施。类似的办法并不算标新立异,因为这些方法一早就被那些活跃在Unix领域的黑客在其他支持非执行保护功能的处理器和操作系统上试验过了,例如Sun的SPARC和Solaris操作系统。
“NX的设计初衷并不是阻止一切攻击”,梅纳说,“在Unix上它已经被证明不能够减轻针对系统的安全威胁”,而在像Windows这样的台式机操作系统上也一样做不到。
|