本文讲的是窃取虚拟机上的敏感数据:基于JavaScript的DRAM攻击,1月5日,研究人员揭示动态随机存取存储器(DRAM)攻击新方法,恶意黑客可用JavaScript,通过隐秘通道,秘密盗取虚拟机上的敏感数据。
安德斯·福格,G DATA Advanced Analytics 首席恶意软件分析师;迈克尔·舒瓦茨,奥地利格拉茨技术大学博士研究生。两位研究人员描述了当前DRAM设计上的安全问题,展示了一些实际的跨CPU攻击。该项研究的第一部分在8月份的25届USENIX安全研讨会上已被提出。
2016黑帽欧洲大会上,福格和舒瓦茨展示了利用实体机Web浏览器中运行的JavaScript脚本代码,从不联网的虚拟机中盗取小量敏感信息,比如口令或私钥一类的。他们还演示了对Rowhammer攻击的改进,证明了与之前以为的不同,Rowhammer对DDR4也起效。
采用虚拟地址,让在同个CPU上安全运行多个进程成为可能。然而,在与DRAM通信的时候,CPU需要的是物理地址,所以虚拟地址必须得映射到物理地址空间。
处理器内存控制器所用的映射函数是非公开的,但福格和舒瓦茨的团队,通过测量CPU从存储区读取数据的时间,成功逆向工程了该函数。用于逆向非公开DRAM地址映射函数的工具,被研究人员作为开源代码发布了出来。
与人们熟知且有有效应对措施的缓存攻击不同,DRAMA(DRAM地址解析)攻击具备跨CPU的特性。不过,二者之间还是存在某些相似性。
我们发现,DRAM中使用的缓冲区,表现出与CPU缓存非常相似的行为。我们利用了DRAM缓冲区的时间差来发起攻击。利用时间差是基于缓存的攻击惯用的技术。DRAM攻击的一大优势在于,它们不需要任何共享内存。而且,很多情况下,主内存也是CPU间共享的,意味着我们甚至可以在跨CPU的场景中应用这种攻击。
福格和舒瓦茨没有在实体机系统上运行任何二进制程序,也没有利用任何软件漏洞,就能在实体机和托管其上的虚拟机之间打开一个秘密通道。虚拟机里运行的发送方,以及实体机浏览器里运行的接收方,商定一块存储区,该存储区可以是硬编码的。通过测量访问时间,如果访问很快,就发送比特“0”,如果访问很慢,就发送比特“1”。
研究人员还展示了如何利用该技术盗取虚拟机的键盘输入。这种情况下,攻击者需要对系统进行分析,识别出他们想要监视的事件。他们可以诱骗受害者访问某个包含恶意JavaScript代码的网页,或者利用恶意广告攻击。
专家称,用于渗漏数据的内存有可能被另一应用程序占用,造成数据损害;不过该几率非常小,且他们实现的攻击包含了防止这种情况发生的错误检测代码。为使渗漏更加高效,数据传输采用了封包方式,每个数据包包含一个序列位,标识该包是新的还是重复传输的。
研究人员在该JavaScript攻击中获得了每秒11比特的传输率。但是,同样的攻击若以本地代码实现将会快得多——若以受保护域(比如虚拟机)中的恶意代码和实体机上运行的恶意软件实现,传输率可达 600 Kbps,若使用了同个CPU,甚至还能更快。
虽然该研究主要针对 Intel x86-64,但其深层问题出在RAM中。研究人员已经证实,其他架构也受影响,包括智能手机使用的ARM处理器。
由于此类攻击源于DRAM的设计和运行方式,研究人员认为缓解起来不会太容易。不过,他们指出,虽然漏洞很严重,未来几年里我们还是不太可能看到此类攻击泛滥。该研究的目的,是引起关注,证明硬件也需要变得安全——软件可不是唯一的问题点。
原文发布时间为:十一月 9, 2016
本文作者:nana
本文来自云栖社区合作伙伴安全牛,了解相关信息可以关注安全牛。
原文链接:http://www.aqniu.com/hack-geek/21304.html