过去10年,想要侵入计算机的黑客面临一个艰巨的任务:即便已经让恶意代码运行在目标计算机上,他们也不得不找出代码究竟运行在内存的哪个位置。这是因为Windows、安卓和其他每个现代操作系统,都会采用随机化进程内存位置的安全保护措施。这让数字侵入过程变得好像是在完全黑暗的环境里尝试抢劫民居一样。
但如今,一组荷兰研究人员,发现了能破解该“地址空间布局随机化”(ASLR)措施的技术,为黑客们提供了在陌生计算机中标定自身位置的指路牌。这意味着:软件应用中发现的任一常见内存泄露漏洞,都可能导致对目标PC或智能手机更深层次的控制。而且,由于该攻击利用的是硬件而不是软件,数百万台设备因此暴露于风险之中——无论装载什么操作系统。仅通过软件更新来完全修复该漏洞的想法,太过天真。
重回ASLR
该攻击方法开发者,阿姆斯特丹自由大学研究员本·格拉斯及其同事卡威·拉扎维说:“漏洞到处都是,但ASLR让漏洞难以被利用。该攻击技术则让不可利用的漏洞又可以被利用了。某种意义上,这把我们都甩回了安全缺失的90年代。”
他们的攻击方法还真是搞出大事情了,因为攻击者仅用JavaScript就能搞定,也就是说,仅仅是访问恶意网站都能触发。该研究团队名为VUSec,发布了一段视频来演示如何在火狐浏览器中运行之。微架构安全专家约斯·奥棱称:“没人在网页中这么干过,这是此类攻击中非常隐蔽和狡猾的一个例子。”
这种攻击的修复难度与其部署简易程度相当。VUSec技术利用了计算机硬件最深层次的资产——英特尔、AMD、Nvidia和三星等公司制造的微处理器。想让ASLR再度起效,恐怕不是一次快速的操作系统或浏览器更新能办到的,还需要对这些芯片的重设计和替换。
破解安全
该攻击利用了微处理器和内存的互动:处理器有个被称为内存管理单元(MMU)的部件,负责映射计算机在内存中存储程序的地址。为跟踪这些地址,MMU频繁查询名为页表的目录。
VUSec攻击的关键,在于设备通常将页表存储在处理器缓存中——让最常访问的信息随时可被计算核调用的一小块内存。这种做法可以提升芯片处理速度和效率。
但是,网页上运行的一段恶意JavaScript代码,同样可以写入那块缓存。最关键的是,它还能同时查看MMU的工作速度。“通过密切监视MMU,JavaScript代码可以找出其自身地址——这可不是好代码该干的事。”格拉斯说。
VUSec研究人员的攻击,将MMU速度变成了提示信息。攻击代码会复写缓存,一次一个单元,直到看到MMU降速。这就是无论缓存哪部分被重写MMU都要去查找一块页表的标志——MMU会减缓速度,因为它得跑回正常的随机存取内存去找该页表的副本,而不是直接在处理器缓存中查找。
MMU要执行4次单独的页表查询,才能找到任给代码段的物理地址。因此,该攻击会重写缓存4次,搜出缓存中存放页表的4个地方。每一次,恶意程序都会记下MMU降速的时刻。MMU走到该降速时刻的耗时,就成为了恶意代码自身在缓存中地址的提示信息,当设备将攻击代码从缓存中拷贝到RAM中时,ASLR想隐藏起来的代码内存地址就暴露无遗了。
该攻击有些像是古早的撬保险箱手法:听诊器贴在保险箱上,慢慢转动拨盘,仔细聆听拨片声音。缓存就像是保险箱中发出这些充满提示意味咔哒声的拨片,能听懂,就能顺利开门而入。
难以修复的大漏洞
VUSec向荷兰国家网络安全中心报告了该情况,后者联系了所有受影响的芯片制造商和软件公司,包括英特尔、AMD、三星、Nvidia、微软、苹果、谷歌和Mozilla——三个月前的事儿。研究人员给足了这些公司标准窗口时间来解决问题,直到现在才公开他们的发现。而且,研究人员不打算公布任何源代码来证明他们的攻击。不过,他们警告称,技术高超的黑客能在几周内就从他们已经公布的东西中逆向出该技术。
同时,格拉斯给出了一些应急建议。你可以安装插件,像是火狐的NoScript,或者Chrome的ScriptSafe,来封锁网页上的JavaScript。浏览器厂商也可以降低脚本测量时间的精度,防止脚本监视MMU的速度。
至少一家公司已经着手缓解该威胁。苹果发布了旨在强化Safari的软件更新,但并未揭示该更新到底做了什么。苹果发言人称,该公司还向其他受影响厂商分发了一份行动计划,例如苹果所用芯片的供应商们。
完全修复最终将需要更换硬件,而非软件。设备将需要建立在新架构之上的新芯片——MMU与处理器缓存中的页表相互隔离。格拉斯称:“因为该漏洞实在太底层,其上的软件层可以让它更难以被利用,但不能让漏洞消失。”
英特尔、微软和Mozilla,则是低调处理了该事件。微软公关发给《连线》的一份声明中称:“我们确定这不是个安全问题。”英特尔则称该研究“不代表英特尔架构系统的安全要做出重大改变。”这三家公司的发言人都指出:该攻击仅在与其他内存泄露漏洞连用时才构成威胁。三星、Nvidia、AMD和谷歌并未回复《连线》的评论请求。
然而,微软和英特尔指出仅击败ASLR黑不进操作系统,并没有让人多放心一些。ASLR被攻破,黑客就能重用回那些被ASLR挡住的常见内存泄露漏洞了。老旧漏洞焕发新生的节奏。
如果科技公司不认真重视ASLR攻击,其结果,可能会是一大批新方法的出现,上百万误入错误网页的无辜用户坐等被黑。“攻击者一直走在变得更聪明的路上。如果计算机越来越笨,优势无疑会在攻击者一方。”
【本文是51CTO专栏作者"李少鹏"的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】