体系的穿透
(2008年09月)文/江海客
在过去的数年中,微软已经采取了大量的内存保护机制以防止Windows平台上常用软件的漏洞被恶意利用,虽然诸如/GS(Visual Studio编译选项)、SafeSEH、DEP(数据执行保护)以及ASLR(地址随机化)等使得漏洞被成功利用的可能性大大降低,但并不等于就可一劳永逸。恰恰就在本月召开的位于美国赌城拉斯维加斯的黑帽Blackhat安全大会上,两位安全研究人员(来自IBM公司的互联网安全研究员Mark Dowd以及VMware公司的安全研究员Alexander Sotirov)就声明其找到了一种绕过现有Windows Vista SP1平台上所有内存安全保护机制的方法,并通过该方法成功获得远端主机的控制权限。
那么,这是否意味着正如两位研究人员在论文中所声称的那样,“使浏览器安全倒退至少十年,Setting back browser security by 10 years”?这或许有些夸大其辞,但至少从另一方面表明,尽管操作系统厂商虽然已经提高了安全保护的门槛,但这并不等于黑客没有机会去绕过这些机制。究其原因主要来自于两个方面,一是操作系统本身的复杂性,就像Vista的数据安全体系,虽然从模型上看TPM+Bitlock+EFS是一个牢不可破的链条,但从实施上看,完全避免实现问题是不可能的。理论体系最严谨,模型最完善的数据安全尚且如此,系统安全就更会遇到这样的问题。即使模型再完备,复杂性导致的实现问题依然难以回避。更何况浏览器客户端本身往往受黑客的完全控制,而在这其中对于DOM、JavaScript、Java、Flash等的原生支持就成为黑客可趁之机;二是可扩展的插件机制更使安全性和方便性难以两全(大多数浏览器均支持第三方插件,例如:迅雷浏览器组件、Messenger组件等)为黑客提供了更宽广的发挥空间。
相关方法之所以被关注的重要一点,在于这是一次体系化的穿透,而不是一种简单的挖掘和补丁之间的斗争,在微软的DEP机制推出后,曾有windows平台的漏洞挖掘者相对悲观的认为,针对服务的漏洞挖掘要转向类UNIX系统了。事实也证明,尽管微软出于兼容性考虑仅将DEP默认策略设定为系统服务,但在设定为所有程序的情况下,基本上包括ANI这样的格式漏洞、针对IE的多个第三方控件漏洞以及针对OFFICE的静态格式溢出,均告失效。而相关的体系化穿透的方法,如果是一个深度的体系问题,那么其修补和测试都需要更长时间,如果其细节被揭示,可能再次打开潘多拉德魔盒。
无独有偶,在另外一份来自于麻省理工的三名学生关于地铁磁卡安全的研究报告中,从社会工程学、物理安全、智能卡安全、RFID安全等各个角度研究了地铁系统的安全性,研究报告中的结论表明:美国所应用的两大地铁售检票系统Scheidt&Bachman以及Cubic Transportation均可被轻松破解;而包括我国北京、香港在内的数十个国家内地铁系统所应用的MiFARE Card(RFID)也可被成功破解,所需的破解成本最高不超过1500美金,而最少也不超过500美金。
由此可见,无论是在虚拟世界中的操作系统,还是现实世界中的地铁系统,我们都要避免一劳永逸的安全幻想。