神乎其神的Rowhammer:用比特位翻转实现云虚拟机夺权

AlexFrankly 2017-5-8 教学频道 0 0
想一个简单的问题,Memory类的存储介质中,每一个栅格存储一个比特位(0或1)。如果因为外力,这个比特位发生翻转,情况会怎样?这并非传说,而且有专家觉得还能应用到针对云服务器的东西向攻击中!

我先前在FreeBuf的文章中介绍过一种名为Bitsquatting的攻击手法,这是一种超高端的钓鱼攻击:我们假定内存、CPU缓存由于环境,或者制造缺陷,产生内存的比特位翻转,就可能导致原本我们要访问某家网站,最终由于这种硬件错误,却访问了与这家网站域名相近的钓鱼站点。

其实我个人真正钟爱的领域是成像和半导体,在我去年也算是半只脚踏进神圣的安全行业之后,第一次听说比特位翻转这种听起来极为高端的攻击方式就有些惊呆的感觉。而且这还不是个传说,先前Sun所推的UltraSparc II处理器就存在这样的问题——简单来说,采用UltraSparc II CPU的服务器有些时候会毫无征兆地出现随机性错误,最后发现问题出在SRAM介质之上,据说在生产过程中SRAM存储部分被辐射物污染,可以导致Cache的比特位翻转。

Cache比特位如果出现这种随机的翻转,数据处理肯定会出问题,最终就是服务器崩溃。这个问题本身也是因为处理器SRAM缺乏错误检查和纠正机制。我个人在听说这种所谓的“BUG”之后的确是有点三观被毁。对半导体有研究的同学可以去看看这篇Paper:https://media.blackhat.com/bh-us-11/Dinaburg/BH_US_11_Dinaburg_Bitsquatting_WP.pdf

然而实际上,这种听起来很玄幻的攻击其实不算新鲜,虽然看起来具有很强的不可控性,但实际还是可以人为触发其中的“硬件”漏洞(只是据说!!!我很怀疑)。这个漏洞名为Rowhammer,前两年就有人提出了,可能是有史以来最理想化的漏洞。由于其不可控性,很多人认为Rowhammer停留在理论阶段。

去年9月份,有安全研究人员提出一种名为“风水翻转”的攻击技术,主要针对同处一个云环境下的其他虚拟机。其本质也是Rowhammer攻击,据说具备了“高准确性”和“可控”的特点,可从其他虚拟机盗取加密密钥。谁曾想,这种硬件级别的漏洞可以应用到听起来如此靠上的层级(云算是非常上层吧)。

J003-Content-Dont-flip-your-bit_LK.jpg

颠覆攻击逻辑的Rowhammer技术

去网上查资料,会发现Rowhammer的描绘极为晦涩。但Rowhammer漏洞其实很容易理解,这里我用自己的话来科普以下,这是个特别针对Memory的攻击技术,但不是缓冲区破坏或溢出攻击。一般的计算机Memory介质中,每个存储单元(晶体管+电容器)存放1bit数据,这个比特位要么是0,要么是1——存储单元中充满电子表示1,清空表示0。内存就是由上亿这样的存储单元构成的,数据也因此得以存储。

不过电容器会泄露,一个电容器充满电子后,只需要几毫秒就会泄露殆尽。这就要求CPU(内存控制器)对电容进行充电,让“1”这个值能够保持住。整个过程是由内存控制器先读取电容器中的值,然后再把数据写回去。这种刷新操作,每秒会执行几千次。

这几年的内存容量正在大幅度上涨,所以存储比特位的电容器也就越来越小,排列越来越近。要防止相邻的电容之间相互干扰,难度也就变得更大。如果能够快速、反复访问一排电容,相邻行的电容更容易产生干扰错误和所谓的“比特位翻转”,也就是0变成1。

其实正常的数据读写一般是不会发生比特位翻转的,可是如果对某些行进行反复读写,问题就有可能产生。2014年卡内基梅陇大学的研究人员层发表过一篇论文,题为《无访问情况下的内存比特位翻转——DRAM干扰行错误的试验研究》,其本质是通过机器码指令CLFUSH或Cache Line Flush,强制进行这种比特位的读取和更新。据说利用这种方式,可引起大量比特位翻转。

利用比特位翻转,很多事情都可以做,比如说执行未经授权的代码。这就是所谓的Rowhammer。这是一种颠覆人类对安全认知的攻击技术,软件层面几乎解决无望。先前已经有研究人员演示,如何用Rowhammer来进行提权,以及打破安全沙盒。

不过看原理就知道,这种攻击实在有够理想化,存在诸多不确定性,因为攻击者根本无法精准控制比特位如何翻转。比如说,这种攻击对数据所在的内存位置首先就有要求,这样才能实施内存翻转:但敏感数据存储在这些位置的几率可能并不算高。

bd23113ce5b92317e60fb01ffb8917bf (1).jpg

实现内存“风水逆转”

所以在去年9月,针对Rowhammer的内存位置限制,有人开发出一种名为Flip Feng Shui(风水翻转)的攻击技术,这本质上也是Rowhammer。这种攻击就是篡改deduplication操作——deduplication在云端主机中应用得很常见,这种技术可让两个或者更多虚拟主机共享特定的数据块,起到节约内存资源的作用。

Flip Feng Shui在物理内存上做手脚,可致加密密钥和其他敏感数据存储到内存特定的位置——这些位置就很容易受Rowhammer的影响了。所以才叫风水翻转,就是让数据在内存中的“风水”位置变更好,Rowhammer攻击变得更可靠。

这种技术是由阿姆斯特丹自由大学的一名研究人员Ben Gras提出的。他说:“先前就已经有攻击方法表明,共同主机的虚拟机彼此间是可以相互攻击的,比如说获取对方的加密密钥。不过这次的攻击更具破坏性,也是此类攻击的第一例。”

“我们可以相当高的精度和可控性,针对目标虚拟机的内存进行篡改。针对这种软件堆栈中看似随机化的数据破坏方式,我们首次以极高的准确性和可控的方式,对其进行了展示。”这里Gras所谓的“看似随机化的数据破坏方式”也就是Rowhammer攻击。

5AC0E8FF-4797-4EAF-A163-F5874E8FF23D.png

研究团队演示了攻击者如何利用Flip Feng Shui攻击,获取另一台VM虚拟机上的RSA加密密钥——当然这要求被攻击的虚拟主机与攻击者处在相同的云环境中。在他们进行的某一例实验中,进行攻击的虚拟机获取到可用于授权安全shell访问的密钥,这样一来,这台虚拟机就可以获取目标虚拟机的未授权访问了。

研究人员在报告中提到,进行攻击的虚拟机获取到GPG密钥——该密钥是Ubuntu系统开发者用来确认更新可靠性的。有了这个GPG密钥,攻击者就能迫使目标虚拟机下载和安装恶意更新。

其实整个攻击过程描述起来还是比较复杂的,首先需要获取目标公钥。发起攻击的虚拟机通过Flip Feng Shui,针对公钥的某个特定部分进行比特位翻转,也就是我们上面提到的Rowhammer攻击方式——这里实际上还利用了云环境的deduplication技术。就像前文提到的,这种技术在云端主机中很常见,这是一种相较数据压缩粒度更大、节约存储资源的技术。基于此,物理页才会在多个虚拟机用户间共享,针对共享数据块的比特位翻转才显得有意义。

在公钥的比特位发生翻转之后,就构造出了一个全新的公钥,这个公钥会非常简单(足以进行因式分解)。也就是说,Rowhammer攻击欺骗目标虚拟机,接受新的公钥;攻击者随后也就能够得到相对应的私钥,并进行未经授权的SSH访问,签署恶意Ubuntu更新了。

30907982735.jpg

鉴于篇幅关系,这里没法细致详述每一环技术细节,有兴趣的同学可以前往翻阅研究人员发表的论文,题为《Flip Feng Shui: Hammering a Needle in the Software Stack》。Gras表示,这次的实验虽然只针对RSA密钥,但他预期未来这种攻击方式还能针对数字签名算法、Diffie-Hellman加密算法、ECC等等。这样一来,攻击者就不仅能够进行未授权访问量了,还能窃听合法会话。

另外,这种攻击也需要一些条件才能发起,比如说像前文提到的,要求虚拟机开启Deduplication;而且本次实验依赖于基于内核的虚拟机,以及Linux中的Kernel SamePage Merging特性。还有,内存芯片本身也需要具备比特位翻转的基础,先前有人做过相应的测试,129款DDR3内存中,110款存在攻击可行性,还有12款DDR4内存有8款也存在Rowhammer漏洞(对此,我也真的很震惊,为什么我总是震惊?)。

最后,研究人员还列出了一些可抵御Flip Feng Shui攻击的手段,硬件层面要求DRAM芯片制造商进行相应的Rowhammer测试,还有比如针对某些DDR4芯片实施的直接行刷新机制等;至于软件层面,包括禁用内存的deduplication,开发者和工程师也应该考虑加入额外的措施,比如检查安全敏感信息完整性。

“这种攻击不需要攻击者进行什么复杂的操作,就能完全控制共用主机的云虚拟机。同时,我们认为Flip Feng Shui还能通过更多的形式发起攻击,这就需要系统安全社区能够对这样的威胁引起足够的重视。”

不过说实话,我对这种所谓Rowhammer的攻击精度还是持怀疑态度,是一种“怎么可能”的惊叹。有兴趣的真的很建议去看原paper。如果说针对Memory(包括内存、Cache、Register)的这种比特位翻转攻击真的是可行的,那么任何提权、代码执行之类的操作何苦再从应用或者系统层面去搞定呢?而且它还不是缓冲区溢出攻击那样的层面,应用层的恶意程序更多的是种逆向的边信道攻击。

不过的不过,我对安全本身了解得相当浅层,所以或许其精度有什么特别实现方式。毕竟先前在看ARM的安全文档谈Lab Attack的时候也有点惊呆——即边信道(或者叫侧信道)攻击远比你们想象得复杂和高端,就是实验室里不计成本用到的所谓“电子探针”。突然觉得还有点小激动…

* 参考来源:《Flip Feng Shui: Hammering a Needle in the Software Stack》,转载请注明来自FreeBuf.COM及作者欧阳洋葱

转载请注明来自华盟网,本文标题:《神乎其神的Rowhammer:用比特位翻转实现云虚拟机夺权》

喜欢 (0) 发布评论