最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

来源 | 百度安全实验室

出品 | AI科技大本营(ID:rgznai100)

导读:近日,国际顶级设计自动化大会DAC大会公布DAC 2020会议议程和论文名单,由百度安全发表的《DRAMDig: AKnowledge-assisted Tool to Uncover DRAM Address Mapping》成功入选。

最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

“一招通杀”所有设备 —— Rowhammer攻击原理

 

从硬件角度来看,计算机就是一个庞大的集成电路,由大量的电子管、继电器和各种电气元件组合而成。其中用来存储信息用的物理内存,就是我们上面提到的DRAM。就像去图书馆找一本书,你需要通过书的类型和编码,定位到它在哪一个书架,哪一排,哪一格,DRAM里想要找到存储的某一数据,也有一套明确的访问路径:channel →DIMM → rank → chip →bank → cell。所以,计算机内存就是由无数个内存存储单元(下简称cell)构成的电路板。

最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

“说起来容易做起来难” —— Rowhammer攻击难点

 

读到现在,你是不是会有一个这样的疑问,计算机内存里密密麻麻分布着cell,即使理解了Rowhammer攻击的操作手法,如果不知道哪些cell里隐藏着账号提权的核心线索,一顿轰炸操作无异于随机“抽盲盒”,能不能找到关键全靠运气。

 

所以很长时间以来,对于Rowhammer攻击的研究只停留在理论阶段,归根结底原因是:找到那最为关键的两个row实在是太难了!

 

专业上,定位到最关键的两个row需要解决的核心问题,是要找出DRAM核心数据所在的DRAM地址,其实也就是逆向DRAM地址映射(下简称DRAM address mapping)的过程。

 

上文我们讲到过,在计算机里,不管是什么类型的文件、信息、数据,最终都会以0101011的形式被存储在内存里,程序运行中需要访问到这些数据,只能通过虚拟地址来访问。这些虚拟地址在操作系统中首先转换成物理地址,然后物理地址再通过CPU中的Memory Controller转为为DRAM中的地址。物理地址与DRAM中地址的映射关系是一段未公开的“咒语”,需要逆向分析来解决。

 

对此,百度安全研究员调研了的目前行业公开的所有DRAM address mapping逆向工具并做了分析,结果显示这些工具的表现并不尽如人意,或是无法通用于各类型号的CPU,或是操作时间过长,需要数小时的时间,还有的甚至检测多次,得出的结果前后不一致。

 

而此次即将在DAC大会上公开的,由百度安全所研究设计的DRAM  address mapping逆向工具——DRAMDig, 能够在平均7~8分钟时间(最快仅需要69秒),快速、可靠地逆向出DRAM地址映射,并且通用于包括Non-ECC DDR3DDR4内存条,以及当前市面上流行的Intel CPU(Sandy Bridge ~ Coffee Lake)。

 

最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

图3. DRAMDig 逆向流程

 

这个操作原语是一个timing channel。具体而言,这个timing channel是由同一DRAM bank中的row buffer冲突引起的。DRAM中每个bank都有一个row buffer来缓存最后访问到的row。如果一对地址在同一bank的两个不同row中,交替访问它们时row buffer将反复重新加载、清除这两个row,导致row buffer 冲突。而如果两个地址位于同一row或不同bank中,访问这两个地址时不会发生row buffer 冲突。显然发生row buffer冲突情况下,也就是两个地址在同一bank不同row时,得到的latency更大。因此,根据两个地址的latency测量结果的高低,可以判断它们是否在同一bank不同row。

 

在这个操作原语基础之上,我们来简要介绍DRAMDig的逆向流程。主要分为三个阶段。

 

第一阶段,精心选取多对物理地址,利用timing channel进行latency测量,根据测量结果对row、column和bank bits范围进行初步的划分。首先从高到低考察物理地址中每个bit,选取仅有这个bit不同的两个物理地址测量latency。如果是high latency,则说明它们在同一个bank不同row,当前只有1个bit不同,所以这个bit是rowbit。然后选定1个row bit和一个非row bit,再选取仅有这2 bit不同的物理地址测量latency。如果是high则说明它们在同一bank不同row,这个非row bit不会是bank bit,而是column bit。这样两轮测量之后能够得到row bits和column bits的位置范围,剩余的bits是bank bits。

 

第二阶段,选取覆盖bank bits所有取值情况的物理地址,再次利用timing channel来测量latency。将latency为high的地址划分到一堆,最终这些物理地址将被划分为#bank堆,同一堆物理地址都在一个bank中,而且每一堆的物理地址个数大致相同。然后依次在每堆中考察bank bits之间的XOR组合情况,找出堆中所有物理地址都满足的bits XOR方式,作为候选bank寻址函数。在所有地址堆都考察完毕后,将候选bank寻址函数进行消元处理,得到最终的bank寻址函数。

 

第三阶段,确定具有多重角色的bits,这是由于存在interleave mode的寻址情况,例如,有些bit既是row bit也是bank bit,有些bit既是column bit也是bank bit。还原多重角色row bits的方式是,考察2-bit的bank寻址函数,选取仅有这2个bit不同的两个物理地址,测量它们的latency。如果测量结果是high latency,则认为高位bit是row bit。对于多重角色的columnbits,根据Domain knowledge和第一阶段的还原结果,能够获知未还原的column bits数量(N)。在已还原出column bits的位置基础上,按照从低到高的顺序,将未还原数量(N)的bits认为是column bits。

 

由于DRAMDig选取了覆盖所有bankbits取值情况的物理地址,不但能够真实且完整揭示bank寻址方式,而且能够根据latency测量结果将这些地址均匀地划分到#bank堆,保证了bank 寻址函数还原结果的准确性和稳定性。另外,DRAMDig仅需要在bank bits空间内的寻找bank寻址函数,不需要在所有bits空间内穷举,大大降低了时间开销。

 

据介绍,百度安全利用DRAMDig在9台具有不同CPU和内存设定的机器上进行了DRAM address mapping逆向实验。实验结果如表1所示。可以看到,实验的CPU涵盖SandyBridge、Ivy Bridge到Coffee Lake等多个新老微架构(Microarch.),内存条涵盖DDR3和DDR4 (DRAM Type,Size),和包含多种DRAM设定方式(DRAM Config)。

最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

图4.DRAMDig和DRAMA逆向时间开销(单位:秒)

在获得逆向结果基础之上,为进一步验证,百度安全研究员还在多台机器上进行了double-sidedRowhammer测试,并且和DRAMA进行了对比。使用两个工具在不同的机器上分别进行了5次测试,每次测试5分钟,最后统计bit翻转的数量。可以从表2中看到,DRAMDig能够产生更多的bitflips。有一些测试中DRAMA甚至没有出现翻转,而DRAMDig敲出了翻转,这也能够说明DRAMDig逆向结果的正确性。由此可见,准确的逆向DRAM addressmapping对bit翻转具有很重要的影响,对Rowhammer威胁评估具有非常关键的作用。

最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

结语

毫无疑问,DRAMDig的诞生,大大提升了对DRAM address mapping逆向的效率和准确性,对于高效评估个人主机、云计算平台等基础设施是否受到Rowhammer攻击的威胁有着重要意义。对于硬件厂商修复Rowhammer漏洞,提升芯片制作工艺,也提供了新的思路。同时,百度安全也开放自身顶尖技术能力,以开放共享的姿态,打破技术壁垒,推进安全生态建设,保护数据隐私安全。

最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

推荐阅读

  • 大促下的智能运维挑战:阿里如何抗住“双11猫晚”br>

  • 黑客用上机器学习你慌不慌7 种窃取数据的新手段快来认识一下!

  • 当莎士比亚遇见Google Flax:教你用字符级语言模型和归递神经网络写“莎士比亚”式句子

  • Hyperledger Fabric 和企业级以太坊,谁才是企业首选/p>

  • 面试时遇到「看门狗」脖子上挂着「时间轮」,我就问你怕不怕/p>

  • 同期两篇 Nature:运行温度高于 1K 的量子计算平台问世!

  • GitHub 标星 10,000+,Apache 顶级项目 ShardingSphere 的开源之路

  • 最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?

    你点的每个“在看”,我都认真当成了AI

来源:AI科技大本营

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月19日
下一篇 2020年3月19日

相关推荐