微软正在开始与恶意代码作者玩捉迷藏的游戏。
上周发布的β2 版Windows Vista 中包含有一种旨在保护系统免受缓冲区溢出攻击的安全功能。据微软称,每当PC启动时,名为Address Space Layout Randomization(ASLR)的该功能会将关键的系统文件加载到不同的内存地址,提高了恶意代码运行的难度。
在公布该功能的博客中,微软的高级安全计划经理霍华德写道,这不是万能药,并没有换掉不安全的代码。但当与其它技术联合使用时,它就是一种有用的安全技术,因为它能够使Windows 让恶意代码看起来有些“陌生”,提高了自动化攻击的难度。
在缓冲区溢出攻击中,数据的存储超过了缓冲区的界限,多出的数据将覆盖掉邻近的内存地址。这种情况能够造成进程崩溃,或让系统运行恶意代码。
ASLR并非微软的发明创造。几种开放源代码安全系统已经在使用这种技术,其中包括OpenBSD 、PaX 、Exec Shield。
一些攻击会试图调用Windows 的系统函数,例如调用wsock32.dll 中的socket()函数,打开一个网络Socket。ASLR 能够将这些系统文件分散开来,使它们被存储在不可预期的内存地址。
霍华德说,在β2 版Windows Vista 中,DLL 或EXE 文件能够被加载到256 个地址中的任何一个。黑客有1/256 的机会获得正确的地址。
安全厂商Cybertrust的高级科学家库珀表示,这种随机化技术在开放源代码系统中的表现很好,问题是微软如何实现ASLR和这种随机化是否是可以预言的。黑客可能会开发试图访问所有256 个内存地址的恶意软件。
他说,这更可能造成PC崩溃,而不是系统安全受到影响。如果只想阻止恶意代码运行,这一技术很好,但它无助于保持系统的运行。
微软在Vista 中部署ASLR受到了安全界的赞扬。Next Generation Security Software 的一名研究人员大卫在一份电子邮件中说对缓冲区溢出缺陷的远程利用更困难了。
但也有人持怀疑态度。化名为c0ntex的用户在回复大卫的电子邮件时说,数年前,Linux 中的ASLR在数年前就被破解了。
微软表示,联合Vista 中的其它技术,ASLR提高了操作系统的安全性。微软将Vista 称作是目前最安全的Windows 版本。