导语:专家们演示了如何利用Rowhammer攻击移动和桌面系统。不幸的是,目前不能通过使用软件补丁简单地减轻此技术所利用的漏洞。
早在2015年,Google Project Zero团队的安全研究人员就演示了如何利用某些DDR DRAM(双倍数据速率动态随机存取存储器)芯片的物理弱点来劫持运行Linux的英特尔个人电脑。
专家设计的攻击技术被称为Rowhammer,成功利用能使攻击者获得更高的目标系统内核特权。
Rowhammer被归类为影响一些最新的DRAM设备的问题,其中重复访问一行存储器可能导致相邻行中的位翻转,这意味着理论上攻击者可以改变存储器中该位的值。
卡内基梅隆大学和英特尔实验室的专家发表的一篇研究论文详细分析了利用Rowhammer的技术。
我们测试了一系列笔记本电脑,发现其中的一部分出现问题。我们构建了两个使用这种效果的特权升级漏洞。一个漏洞利用Rowhammer是一些最新DRAM设备的问题,在这些设备中,重复访问一行内存可能导致相邻行中的位翻转。当被引用的位作为非特权用户级进程运行时,就能获得x86-64 Linux上的内核特权。
来自Google Project Zero发布的帖子。
当在容易受到Rowhammer影响的机器上运行时,该过程能够引起页表项(PTE)中的位翻转。这样就能获得对自己的页表的写访问权限,从而获得对所有物理内存的读写访问权。
为了理解攻击者可以利用Rowhammer的方式,让我们记住DDR内存以行列排列。内存块分配给不同的服务和应用程序。
实现“沙箱”保护机制以避免应用程序访问另一个应用程序保留的内存空间。然而,可以用一个翻转技术来逃避它,这是攻击技术的支柱。
此项研究基于Yoongu Kim之前的研究,名为“Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors”。该专家与同事们证明,通过反复访问两个“aggressor”进程虚拟地址空间内的内存位置可能会在第三个“受害者”位置导致位翻转。
Project Zero的博客指出。
受害者的位置可能在进程的虚拟地址空间之外,与aggressor位置不同,因此位于不同的DRAM行中,位于不同的4k页面中(因为如今系统中的行大于4k)。因此,敲击两个aggressor存储器区域可能干扰相邻的位置,导致电荷进入或离开相邻的单元格。
现在处理器中使用的DRAM具有高容量,并且很难防止DRAM单元彼此之间电相互作用。
Project Zero的白帽黑客提出了两个PoC漏洞,允许他们控制几台运行Linux的x86计算机,但据专家称,这些攻击也可以在其他操作系统上使用。
下面是两次攻击的详情:
· 首先,基于页面表项(PTE)的利用程序使用Rowhammer引发的位翻转来获得x86-64 Linux上的内核权限,并由此获得对整个物理内存的读写访问权限。
· 第二个漏洞利用程序演示了从Native Client沙箱中逃逸来利用相同的漏洞。
Project Zero的专家团队还为Rowhammer漏洞提供了缓解措施,特别是内核特权提升攻击。
研究人员将Native Client更改为禁止x86上的CLFLUSH指令,此指令为成功利用漏洞所必需的。
“我们通过改变NaCl来禁止CLFLUSH指令来缓解这种情况,”该团队建议。
第二种攻击在现有体系结构上非常难以缓解,因为它在Linux上作为正常的x86-64进程运行,并提升特权以访问所有物理内存。
专家测试了2010年至2014年间生产的八款x86笔记本电脑的漏洞利用情况,并在五个不同的CPU系列上使用了五家不同的DDR3 DRAM供应商。
Project Zero专家在Github上发布了“DRAM Rowhammer问题测试程序”。
测试结果表明,研究人员在15种情况下获得了29个不同机器的位翻转,他们强调,没有观察到位翻转并不意味着DRAM一定不能被利用。
其中一位研究人员说,
虽然在给定机器上进行测试期间缺少位翻转并不意味着安全,但确实提供了一些基本保证,即在该机器上引起位翻转很困难。
抵御Rowhammer攻击的防御是使用ECC内存,该内存利用额外的位来帮助纠正错误,但更加昂贵。最新的DDR4芯片或者包含ECC功能的DIMM会导致攻击失败。
Errata Security的研究员Robert Graham说,
目前最大的威胁是台式机/笔记本电脑,因为他们既没有ECC内存也没有虚拟机。特别是,谷歌的本地客户端(NaCl)存在代码执行危险。这是一个聪明的沙箱,允许在Chrome浏览器中运行本地代码,以便网页能够像系统上的本机软件一样快速运行。这种记忆破坏了NaCl的一级保护。没有人证明如何在实践中使用这种技术来完全击败NaCl,但最终有可能有人会发现一种方式。
Zero团队呼吁DRAM制造商、芯片制造商和BIOS厂商采取必要的措施来缓解Rowhammer的安全问题,并透露他们如何做到这一点。
Drammer——mobile上的Rowhammer攻击
一年后,阿姆斯特丹Vrije大学VUSec实验室的一个小组研究了利用Rowhammer来获取对数百万Android智能手机的无限“root”访问的可能性。
专家们设计了一种名为Drammer的攻击技术,利用这种技术可以获取针对数百万Android智能手机设备动态随机存取存储器(DRAM)的“root”访问权限。
针对移动设备的Rowhammer攻击包括一个恶意应用程序,该应用程序一旦执行就反复访问存储器芯片上相同的“行”晶体管(Hammering过程)
敲击存储器的特定部分可能会与相邻行发生电气干扰。这种干扰可能会导致该行漏电到下一行,最终导致一些位发生翻转并导致数据修改。
攻击者可以利用这些修改来执行自己的代码并获得移动设备的控制权。
研究人员创建了一个PoC漏洞利用,名为DRAMMER,用于测试移动设备上的Rowhammer攻击。专家发表了一篇关于DRAMMER攻击的研究论文和一个包含攻击技术细节的网页。
该技术允许修改主要供应商Android设备的关键位数据。
为了让应用程序直接访问动态随机存取存储器(DRAM),研究人员利用了Android机制的ION存储器分配器。
ION内存分配器还允许攻击者识别DRAM上的相邻行,这对于通过产生位翻转来驱动Rowhammer攻击是必不可少的。
这种能力使研究人员能够在受害者的设备上实现root访问权,使他们能够完全控制移动设备。
该论文指出,
从最高层面来说,我们的技术通过耗尽不同大小的可用内存块来驱动物理内存分配器进入一种状态,在该状态下,它必须从我们可以可靠预测的区域开始提供内存。然后,我们强迫分配者将目标安全敏感数据,即页表放置在物理内存中易受位翻转影响的位置,并且我们可以从我们控制的相邻存储器敲击。
图1 – Drammer攻击
研究人员发表的一篇博客文章指出,
Drammer是一个利用Android设备上Rowhammer硬件漏洞的新攻击。它允许攻击者通过将其隐藏在不需要权限的恶意应用程序中来控制移动设备。几乎所有的设备都可能受到攻击,必须等待Google修复才能控制。Drammer可能会让数百万用户面临风险,尤其是与现有的Stagefright或BAndroid等攻击媒介相结合时。
专家成功获取Android手机root权限,包括Google的Nexus 4和Nexus 5; LG的G4;三星Galaxy S4和Galaxy S5,摩托罗拉的2013年和2014年的Moto G;和OnePlus One。
图2 – Drammer测试结果
专家发表的一篇论文如是说,
我们的[DRAMMER]攻击不仅表明实际的、确定性的Rowhammer攻击对数十亿移动用户构成了真正的威胁,而且还是第一次证明Rowhammer在x86以外的平台上能可靠地被利用。与现有解决方案相比,其软件功能集有限得多。
DRAMMER应用程序可以在几分钟内完全控制受害者的手机,并且不会请求用户的交互。
研究人员发布了两个PoC视频,证明了DRAMMER可以攻击没有root的LG Nexus 5。
在第一个视频中,手机运行谷歌10月5日发布了安全修补程序的Android 6.0.1,而在第二个视频中,研究人员展示了如何将DRAMMER攻击与Stagefright漏洞相结合,该漏洞在许多旧版Android设备中仍未修复。
研究人员还在GitHub上发布了DRAMMER应用的源代码,以允许用户测试他们的移动设备并匿名分享结果。
专家们在七月份向Google报告了这个问题,该科技巨头认识到这是一个“严重”的漏洞,并在其bug奖励计划下给予研究人员4000美元奖励。
问题是DRAMMER利用的某些软件特性对于任何操作系统都非常重要,因此在不对设备的整体设计产生重大影响的情况下删除或修改它们是不可能的。
GLitch Attack: 第一起针对Android设备的远程Rowhammer攻击
来自阿姆斯特丹Vrije大学VUSec实验室的研究人员继续分析了Rowhammer攻击技术,并演示了如何利用图形处理单元(GPU)来针对Android智能手机。
专家们开始对Drammer攻击进行了最大的限制,该攻击表现为必须在目标设备上安装恶意应用程序。
现在,同样的专家团队首次设计了一种名为GLitch的技术,可以远程对Android手机进行Rowhammer攻击。
GLitch技术利用嵌入式图形处理单元(GPU)发起攻击。
该研究报告显示,
我们证明,已经广泛用于加速各种良性应用(如图像渲染)的GPU也可以用于在商业平台上’加速’微架构攻击(使其更有效)。攻击者可以构建所有必要的基来执行基于GPU的有效微架构攻击,并且这些基都通过标准化浏览器扩展暴露给网络,从而允许来自JavaScript的边路和Rowhammer攻击。
GLitch这个名称来自于一个广泛使用的基于浏览器的图形代码库(称为WebGL)用于渲染图形以触发DDR存储器中已知的故障。
专家们发布了GLitch PoC攻击,并证明可以通过欺骗受害者访问托管恶意JavaScript代码的网站来进行Rowhammer攻击。
通过使用此攻击方案,可以在2分钟内远程攻击Android智能手机。恶意脚本只能在Web浏览器权限下运行,这意味着攻击者可以获取用户的凭据并监视用户的浏览行为。
GLitch攻击无法让威胁攻击者获得对受害者设备的完全控制权。
GLitch不像其他Rowhammer技术一样使用CPU,而是使用图形处理单元(GPU)。
研究人员选择利用GPU,因为它的缓存可以很容易控制,允许在没有任何干扰的情况下敲击目标行。
文章表明,
虽然功能强大,但由于硬件功能没有文档,这些GPU基元并不容易实现。我们描述了新颖的反向工程技术,用于窥探先前未知的缓存架构和Adreno 330的替代策略,这是在许多常见移动平台中发现的集成GPU。
受影响的智能手机芯片运行Snapdragon 800和801系统;这意味着GLitch攻击仅适用于较旧的Android设备,包括LG Nexus 5,HTC One M8或LG G2。
PoC代码适用于Firefox和Chrome;视频中研究人员在运行Mozilla Firefox浏览器的Nexus 5上演示了GLitch攻击。
不幸的是,用软件补丁来缓解GLitch攻击是不可能的,因为它利用了硬件漏洞。
专家对大规模潜在Rowhammer攻击发出警告;目前他们正在帮助Google减轻攻击。
Throwhammer——针对局域网计算机的Rowhammer攻击
在GLitch攻击中,专家演示了如何利用图形处理单元(GPU)对Android智能手机发起远程Rowhammer攻击,他们还设计了一种名为Throwhammer的Rowhammer攻击变体,专门针对局域网中的计算机系统。
该技术是由同一个研究小组提出的,来自阿姆斯特丹Vrije大学和塞浦路斯大学的专家小组。
研究人员此次证明,通过局域网发送恶意数据包可能会对配备有远程直接内存访问(RDMA)的以太网网卡的系统实施Rowhammer攻击。云基础设施和数据中心广泛采用这种配置。
图3 – Throwhammer攻击
网卡使用RDMA功能,允许网络中的计算机直接将数据(具有读取和写入权限)交换到主存储器。研究人员证明,有可能滥用此功能来快速连续访问目标存储器,从而触发DRAM上的位翻转。
Throwhammer攻击要求至少10Gbps的高速网络在十毫秒内访问数十万次特定DRAM位置来触发一次位翻转。
专家们发表的研究论文如是说,
具体来说,我们设法使用商用10 Gbps网络远程翻转位。我们依靠云端和数据中心中常用的RDMA技术来快速读取远程DMA缓冲区,以便在这些不受信任的缓冲区之外造成Rowhammer破坏。这些破坏让我们在不依赖任何软件错误的情况下危害远程memcached服务器。
根据该文件,专家们可以在局域网中支持RDMA的网卡上观察到64毫秒访问560,000次(大约每秒900万次访问)内存可以引发位翻转。
该论文表示,
即使是普通的10 Gbps以太网卡,也可以轻松地每秒向远程主机发送900万个数据包,最终存储在主机内存中。这可能足以让攻击者通过网络实施Rowhammer攻击?在本文的其余部分中,我们证明了这种情况,攻击者可以使用由网络流量引发的这些位翻转来危害远程服务器应用程序。
专家解释说,禁用RDMA来缓解攻击是有效的,但也不现实,因此他们提出了一些解决方案,如ALIS,一种自定义分配器,可以隔离容易受到攻击的RDMA缓冲区。
Throwhammer攻击的技术细节可以在专家发表的文章中找到,题为“Throwhammer: Rowhammer Attacks over the Network and Defenses”。
总结
专家们演示了如何利用Rowhammer攻击移动和桌面系统。不幸的是,目前不能通过使用软件补丁简单地减轻此技术所利用的漏洞。
为了解决这个问题,有必要重新设计有缺陷组件的体系结构;同时威胁攻击者可以在野外利用Rowhammer技术。
参考
http://users.ece.cmu.edu/~yoonguk/papers/kim-isca14.pdf
https://github.com/google/rowhammer-test
https://vvdveen.com/publications/drammer.pdf
https://www.vusec.net/projects/glitch/#technicals
https://www.cs.vu.nl/~herbertb/download/papers/throwhammer_atc18.pdf
https://www.vusec.net/projects/drammer/
https://www.vusec.net/wp-content/uploads/2018/05/glitch.pdf
https://securityaffairs.co/wordpress/72377/hacking/throwhammer-rowhammer-attack.html
https://securityaffairs.co/wordpress/72131/hacking/glitch-attack-amndroid.html
https://securityaffairs.co/wordpress/34717/hacking/dram-rowhammer-flaw-exploit.html
https://securityaffairs.co/wordpress/52677/hacking/drammer-android-attack.html