研究人员设计出一种安卓设备入侵新方法,不用搞定任何软件漏洞,而是利用RAM芯片的物理设计缺陷。该攻击技术也可影响其他ARM(进阶精简指令集机器)和基于x86芯片的设备和计算机。
该攻击源于过去10年间一直在往越来越小的芯片中植入更大DRAM(动态随机存取存储)能力的努力,密集的存储会导致相邻存储单元在特定条件下相互泄漏电荷。
比如说,快速重复地访问物理存储位置——如今被称为“锤击(hammering)”,可导致邻近位置的比特位值从0变1或从1变0,也就是发生了位翻转。
尽管此类电气干扰已经为人所知,且被厂商从可靠性角度进行了研究——因为内存崩坏可导致系统崩溃,但研究人员证实,若以可控方式触发,位翻转还能造成很严重的安全影响。
2015年3月,谷歌 Project Zero 展示了2个基于 x86-64 CPU 架构内存“行锤击(row hammer)”效应的提权漏洞利用。其中一个漏洞利用可使代码跳过谷歌Chrome沙箱检测,直接在操作系统中执行,另一个则能获取Linux机器上的内核级权限。
自那以后,其他研究人员对此问题进行了进一步研究,证实该漏洞可通过JavaScript从网站进行利用,能影响到云环境中运行的虚拟服务器。不过,智能手机和其他移动设备所用的ARM架构与之大不相同,这种技术能否用在ARM上尚存疑问。
但现在,来自荷兰阿姆斯特丹自由大学系统与网络安全团队VUSec、奥地利格拉茨技术大学 、美国加州大学圣芭芭拉分校的一组研究人员,证明了“行锤击(Rowhammer)”攻击不仅对ARM有效,甚至更容易在x86上实现。
研究人员将他们的新攻击命名为Drammer——意为确定性的Rowhammer,并计划在26号举行的第23届ACM计算机与同信安全大会上予以公布。该攻击技术是在之前的Rowhammer技术基础之上发展起来的。
VUSec研究人员创建了一个不需要任何权限的恶意安卓应用,通过不可检测的内存位翻转执行时可以获取到root权限。
研究人员测试了来自不同厂家的27款安卓设备,其中21种使用ARMv7(32位),6种使用ARMv8(64位)架构。他们在17台ARMv7设备和1台ARMv8设备上成功进行了位翻转,表明ARM对这种攻击技术也是防护薄弱的。
而且,Drammer能与Stagefright或BAndroid之类其他安卓漏洞联合使用,打造不需要用户手动下载恶意App的远程攻击。
谷歌注意到了此类攻击。一位谷歌代表在电子邮件声明中说道:“研究人员向我们的漏洞奖励项目报告了该问题后,我们与他们紧密合作,深入理解该漏洞以更好地保护我们的用户。我们已开发出缓解方案,将在11月的安全公告中发布。”
谷歌的缓解措施让攻击变得难以得手,但并没有修复深层的问题。
事实上,以软件来修复硬件问题几乎是不可能的。硬件厂商正在调查该问题,或许会在未来推出的存储芯片中解决该问题,但现有设备上的芯片大概就一直是这个状态了。
更糟的是,很难说清到底哪些设备受影响——因为影响因素实在太多,还没进全面的调查。比如说,设备电量低于一定阈值的时候,存储控制器的表现有可能不一样,因而满电量时看起来无漏洞的设备,在电量低时有可能被入侵。
另外,网络安全界有个格言:攻击只会更强,从来不会变弱。Rowhammer攻击已经从理论性的变为了切实可行但带概然率的实践,现在则进化成了确定性的实践。这意味着,今天似乎还不受影响的设备,在面对明天进一步改进的Rowhammer时,未必能挺得过。
因为想调查对ARM设备的影响,Drammer便在安卓上进行了演示,但类似底层技术适用于所有架构和操作系统。新型攻击是对之前技术的大幅改进,之前的攻击技术需要一定的运气,或者只在某些平台才有的能被轻松关闭的一些特殊功能。
Drammer依赖很多硬件子系统都使用的DMA(直接存储器存取)缓冲区,这些子系统包括有显卡、网卡和声卡。虽然Drammer采用安卓的ION内存分配程序实现,但所有操作系统都含有分配DMA缓冲区的API和方法,这也是研究报告中重点阐明的警告之一。
这是第一次,不靠任何特性,就实现了针对性的、完全可靠的、确定的Rowhammer攻击。这一内存马杀鸡甚至不仅仅针对安卓,任何Linux平台,或许其他操作系统都可享受到。因为它利用的是操作系统内核里内存管理的固有特性。
VUSec系统安全研究小组组长赫伯特·博思称:“我预测,我们将见证很多其他此类攻击出现在不同平台上。”
随附研究报告,还发布了一款安卓App,可以检测安卓设备是否具备Rowhammer防护能力——至少能测当前已知的Rowhammer技术。谷歌Play商店里暂时还没这款App,但可以从 VUSec Drammer 网站下载并手动安装。能辅助其他研究人员进一步调查该问题的开源Rowhammer模拟器也放在该网站上。
来源:安全牛