谷歌的安全团队“Project Zero”近日发布了一项关于动态随机储存器(DRAM)的漏洞,借助这项漏洞,攻击者可以通过反复加载内存的特定行来实现账户提权。 该漏洞在一篇卡内基梅隆大学和英特尔实验室的合作论文中被首次提出,名为Rowhammer。论文中说,此漏洞主要为威胁到搭载特定DRAM的设备,这主要是x86架构的笔记本电脑。漏洞的主要表现是:当攻击者敲打(Hammering)内存的特定某几行时,会导致其它行的内存单元相应地翻转。 更严重的是,该漏洞并不仅仅存在于理论层面上。谷歌的研究小组已经提出了两个概念认证过的漏洞案例。 Project Zero的博客发布的文章,声称内存的小型化是漏洞的根源。 “当DRAM的制造精度越来越高,部件在物理层面上越来越小。既能在一块芯片上集成更大的内存容量,又能让各个内存单元之间不发生电磁干扰是非常难以做到的”,Zero Project的团队成员马克·西伯恩在博客中写道。“这一情况使得对内存的单个区域进行的读写有可能干扰到邻近的区域,导致电流流入或流出邻近的内存单元。如果反复进行大量读写,有可能改变邻近内存单元的内容,使得0变成1,或者1变成0”。 谷歌提出的两例概念认证的漏洞中,其中之一关于x86和x64架构的Linux系统,另外一个则是关于Google Native Client(NaCl)程序。前者“提升了访问整块内存区域的权限”,后者则“提权,导致可以越过NaCl的x86-64沙盒,直接使用主机的系统调用”。后者可以通过对NaCl程序进行稍许改动来进行防御,但是前者在当今的设备上很难防范。 基于这两个漏洞,Project Zero团队对制造于2010~2014年间的8个x86笔记本原型机展开了测试,过程中使用了5个供应商的DRAM和来自5个不同家族的CPU。团队发现,15/29的结果都存在风险,这是一个相当大的比例。 不过,除了测试之外,还有一些值得注意的东西。团队强调,研究的样本量仍然较小,而且得到的负面结果也不一定就意味着漏洞。另外,台式电脑看上去并没有受到威胁,这有可能是因为台式机都配备了相对来说比较高端的ECC(错误检查纠正技术)内存。ECC内存并没有比特翻转的问题。然而,大多数笔记本电脑并不使用带有ECC的DRAM。 内存制造商并未忽视该问题。2014年发表的一篇论文显示,英特尔公布了一系列涉及到该漏洞的软件。谷歌的团队提到,“至少有一个DRAM制造商在公开数据里表示,他们在自己生产的动态随机存储器设备里加上了防御Rowhammer漏洞的措施,而且这并不需要额外的内存控制器支持”。 Project Zero敦促DRAM制造商、CPU制造商、BIOS制造商披露他们解决Rowhammer问题的更多措施。这样不仅仅会帮助筛选出假阴性的例子,还能帮助软件和操作系统制造商找到防御类似问题的措施。 Project Zero给出的一个漏洞测试项目: https://github.com/google/rowhammer-test/ 该漏洞的测试反馈讨论组: https://groups.google.com/forum/#!forum/rowhammer-discuss |