返回

再次利用Android上的RowHammer!

发布时间:2022-10-06 02:48:06 413
# 漏洞# 技术# 攻击# 补丁# 软件
android-rowhammer-rampage-hack


横冲直撞,新技术(CVE-2018-9442)可以重新启用在受害者设备上运行的未经授权的安卓应用程序,以利用之前披露的Dramer攻击,这是安卓设备DRAM Rowhammer硬件漏洞的一种变体,试图在目标设备上获得根权限。

You might have already read a few articles about RAMpage on the Internet or even the research paper, but if you are still unable to understand—什么是狂暴—我们已经用大家都能理解的语言介绍了这项研究。

在直接讨论暴乱的细节之前,了解什么是RowHammer漏洞,如何利用Drammer攻击攻击Android设备,以及谷歌为防止Drammer而采取的缓解措施,对你来说很重要。

什么是DRAM Rowhammer漏洞?

rowhammer-attack
自2012年以来,Rowhammer bug就是新一代DRAM(动态随机存取存储器)芯片的一个硬件可靠性问题,在这种芯片中,反复快速访问(锤击)一行内存可能会导致相邻行中的位翻转,即将其位值从0更改为1或从1更改为0。

2015年,Google Project Zero的安全研究人员成功演示了如何决定性地利用这一硬件问题,在易受攻击的计算机(Windows和Linux)上实现权限提升。

除此之外,谷歌的研究人员还引入了双边的Rowhammer攻击,通过打击两个邻居,增加了连续发生位翻转的可能性。
 

触发Rowhammer bug很简单,但很难成功利用它,因为内存中的大多数位与攻击者无关,翻转它们可能会导致内存损坏。

在随机内存位置进行锤击(即从DRAM主动读取/写入数据)不足以对目标内存页进行位翻转(可能由高权限或系统应用程序使用)。

为了成功利用Rowhammer,攻击者必须能够欺骗系统,使其将目标内存页放入DRAM物理内存中攻击者拥有的行附近的行(易受Rowhammer攻击)。

在我们之前的文章中,我们还介绍了其他划桨锤攻击,包括:

  • 差错:该技术利用嵌入式图形处理单元(GPU)对Android设备进行Rowhammer攻击。
  • Throwhamer:第一次基于网络的远程Rowhammer攻击,涉及通过使用远程直接内存访问(RDMA)通道的网卡利用DRAM中的已知漏洞进行攻击。
  • 网锤:另一种基于网络的远程Rowhammer技术,可用于在处理网络请求时使用未缓存内存或刷新指令攻击系统。

什么是德拉默攻击?

rowhammer-attack-exploit
Dramer是两年前发现的第一个基于Rowhammer的实用攻击,目标是Android设备上的DRAM芯片,恶意应用程序可以利用该芯片进行攻击,而无需任何许可或软件漏洞。

Drammer攻击依赖于DMA(直接内存访问)缓冲区,该缓冲区由Android的主内存管理器ION提供。

由于DMA允许应用程序直接访问内存,而无需经过任何CPU缓存,因此它使对特定内存行的重复访问(敲打)更加高效。
 

ION将其内存池组织在几个内核堆中,其中一个是kmalloc heap,旨在分配物理上连续的内存,这使攻击者能够轻松确定虚拟地址如何映射到物理地址。

离子内存管理器的这两个属性—;直接访问和连续内存分配—;是德拉默攻击成功的关键。

谷歌如何缓解类似于DMA的划锤攻击?


2016年,在Dramer攻击的细节公开后,谷歌推出了Android设备的更新,该更新禁用了ION的一个负责连续内存分配的组件(kmalloc heap),试图降低Rowhammer漏洞被“确定性”利用的风险。

禁用连续堆后,现在在Android设备上运行的应用程序和系统进程依赖于离子内存管理器中可用的其他内核内堆,例如系统堆,其设计用于在DRAM上的随机物理位置分配内存。

除了非连续内存分配之外,系统堆还通过将内核内存和用户内存分别分配到lowmem和highmem区域来分离它们,以进一步提高安全性。

什么是横冲直撞攻击,它如何让攻击者绕过击打缓解?


上面解释的谷歌引入的缓解技术有效地阻止了攻击者执行双边Rowhammer攻击。

然而,一个安全研究团队现在声称发现了四种新的rowhammer攻击变体,它们可能允许安装在目标设备上的恶意应用程序获得根访问权限,并从其他应用程序窃取敏感数据,同时绕过所有现有的缓解措施。

该组织在其研究论文[PDF]中解释说,他们的第一个RAMpage variant(r0)是“一个可靠的Dramer实现,它表明禁用连续内存分配并不能防止基于Rowhammer的权限提升攻击。”
 

研究人员解释了使用RAMpage r0变体实现类似Dramer的攻击的三个步骤:

1.)耗尽系统堆—研究人员发现,如果一个应用程序有意耗尽ION的所有内部池,另一种内存分配算法buddy allocator将负责分配过程。

由于buddy分配器的主要目的是最小化内存碎片,因此它最终会提供连续的页面分配。

为了增加攻击的可能性,攻击者还可以进一步绕过系统堆使用的区域分离机制。为了强制将其内存页放入lowmem分配,即内核页所在的位置,攻击者会不断分配内存,直到没有留下highmem。

“一旦出现这种情况,内核将为来自lowmem的后续请求提供服务,使我们能够在物理内存中找到位翻转,这些位翻转以后可能会保存一个页表。”研究人员说。

2.)缩小缓存池—此外,利用Flip风水漏洞向量,攻击者可以诱使内核在易受攻击的页面中存储页面表。
研究人员解释说,“这一步是将系统堆池的物理内存释放回内核”,这“间接迫使离子子系统释放其预分配的缓存内存,包括带有易受攻击页面的行”。
3.)移动设备的根—实施上述两个步骤,诱使操作系统将目标内存页登录到与攻击者拥有的页面非常相邻的位置,然后攻击者所需要做的就是实施基于DMA的rowhammer攻击的其余步骤,以找到可利用的块并开发根攻击。
研究人员说:“我们成功地对运行最新版本安卓系统(在我们进行实验时为7.1.1)的LG G4进行了概念验证。”。
“如果您的系统受到影响,我们的概念验证漏洞可以完全控制您的设备并访问其中的任何内容。这可能包括系统中存储的密码和敏感数据。”
下面列出的其他三种狂暴攻击变体也允许攻击者绕过仅保护系统内存特定部分的防御解决方案,但它们不太实用,需要进行更多研究才能开发出有效的漏洞。
  • 离子对离子(变量r1)
  • CMA对CMA攻击(变异r2)
  • CMA对系统攻击(Varint r3)

GuardION—;一种缓解所有基于DMA的Rowhammer攻击的解决方案

android-security-tool
在他们的论文中,研究人员讨论了所有当前的缓解技术,这些技术在防止基于DMA的行锤攻击的狂暴变体方面都是无效的,并且还引入了一种新的解决方案,称为GuardION,以及其开源代码。

GuardION是一种基于软件的防御,通过将DMA缓冲区与保护行隔离来防止行锤攻击。

GuardION代码需要作为安卓操作系统的补丁安装,该操作系统修改了ION memory manager,通过注入空行(作为保护)隔离此类敏感缓冲区,一个在左边,一个在右边,使其在物理上远离攻击行一行以上。
 

“GuardION提供了一个隔离原语,使得攻击者无法使用未缓存的DMA分配来翻转内核或任何用户应用程序使用的内存位,”研究人员说。
“GuardION保护所有已知的行锤攻击向量,据我们所知,任何现有技术都无法绕过它。”

需要注意的是,安装GuardION补丁可能会略微影响设备的性能,因为创建保护行的过程会消耗设备DRAM的内存。

研究人员称,自2012年以来出货的所有基于Android的设备都可能受到暴乱攻击的影响。
回答这个问题:“暴乱在野外被滥用了吗?”研究人员说:“我们不知道。”当被问到“我能发现是否有人利用暴怒来攻击我吗?”,他们回答说:“可能不会。这种攻击不会在传统日志文件中留下任何痕迹。”
在我看来,如果你只从信任来源安装应用程序,你不应该担心狂暴攻击。

由于研究人员已经与谷歌分享了他们的发现,我相信谷歌不会允许在其谷歌Play商店上使用此类恶意应用。

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线