硬件专家:如何看待Rowhammer内存漏洞

来源自:捷世智通    点击数:7381   发布时间:2016-09-30
转载:搜狐



      读者们也许会觉得Rowhammer和比特位翻转是音乐及舞蹈行业的专业术语,但其实他们指的是存在于动态随机访问存储(DRAM)——大多数电子设备中都存在的一种核心组件中的某种非常严重的漏洞。随着驱动器中在每个单独的DRAM芯片上的存储容量的提升,造成了其自身严重的漏洞,其允许攻击者把DRAM中比特位的值从1改成0,或翻转为相反的数值。这一基于硬件的攻击能够绕过核心系统保护措施,使数据安全和流程之间产生隔离。这威胁到了电子数据安全的基本原则,即内存位置的内容只有在它们被写入时才发生变化。

  DRAM芯片包含数以百万计排的电容,包括充电或放电两种类型,这两种状态代表了比特位的值,即0和1。要访问DRAM芯片中存在的值,系统需要给整排电容进行同时加压,并读出所有的值,由于性能的原因使得要一次只读取其中某位比特的信息是不现实的。事实上,DRAM的读取操作实际上是一个读取和更新的操作。读取一行的值需要其电容放电,电容也就丢掉了它存的值。这意味着数据必须通过给电容充电的方式立即写回。这种读取和更新过程实际上发生在DRAM定期给电容放电来稳定自己,这就是术语中是动态RAM(Dynamic RAM),而不是静态RAM的原因。

  随着电容越来越小,排列越来越近,要防止相邻电容之间相互影响干扰已经变得越来越难。快速和反复地访问一排电容,会在相邻行的电容间产生干扰错误和比特位翻转。比特位翻转很少发生在正常操作期间,因为缓存会限制DRAM读取和更新循环需要发生的次数。然而,卡内基梅隆大学的研究人员在2014年发表的一篇题为《无访问情况下的内存比特位翻转——DRAM干扰性错误的试验研究》的论文表明,重复性使用机器码指令CLFLUSH或Cache Line Flush,能够清除缓存并强制进行读取和更新。研究人员发现,利用这一技术迫使内存反复读取并给一排电容充电的话,将引起大量的比特位翻转——产生所谓的Rowhammering现象。

  谷歌的Project Zero团队最近的研究发现,恶意程序可以利用比特位翻转的Rowhammering运行未经授权的代码。该团队设计出如何使CPU重定向,从错误的内存地址运行代码,利用Rowhammering改变操作系统的内存映射的内容。来自阿姆斯特丹自由大学的四位研究人员已经在Windows 10上使用Rowhammering与新近发现的一种存储重复数据删除矢量相结合的方法成功实现攻击。即使系统的补丁完全修复,并运行着各种安全加固措施,此种方式还是可以使攻击者控制操作系统。

  Rowhammering漏洞在现实中出现可能还需要一段时间,但这种设计缺陷存在当今计算机设备的基本硬件之中。硬件供应商都试图在DDR4架构中引入防止或减少Rowhammering漏洞的缓解措施或功能,但谷歌公司以及Third I/O公司的研究表明,DDR4也不能免疫Rowhammering,要防范这一漏洞,业界还有许多事情要做。

  管理员们可以借助FuturePlus Systems Corp的FS2800 DDR Detective软件的Rowhammer监测功能或谷歌的免费Rowhammer测试工具来检查自己的设备是否存在漏洞。而另一种否定的声音认为,没有必要认为设备在比特位翻转上存在漏洞,因为这一现象很难实现,他们的假设是基于比特位翻转是不存在。这些工具只能运行在测试机器上,要求测试机和真实环境具有类似的硬件配置,且那些包含敏感数据,因为工具的操作可以永久性地损坏DRAM芯片,导致数据受损或系统崩溃。

  这一存在设备硬件端的漏洞,已然超越了传统反病毒和安全软件的对于解决方案的认识,该问题无法仅仅通过升级操作系统软件来解决。用户正寄希望于硬件供应商提供解决措施,例如提升最小内存更新频率来降低Rowhammering对比特位翻转的影响。不幸的是,这一办法将对DRAM能耗和性能产生不利影响。DRAM模块制造商们对他们的产品如何应对Rowhammering均守口如瓶,可能的缓解机制也被深埋在产品规格说明书中。思科在降低级别变化方面提出了一些建议能够缓解DRAM Rowhammer漏洞,但任何新的参数都必须现在测试环境中进行配置测试后二次配置才能应用。由曼彻斯特大学计算机科学学院正在开发能够阻止Rowhammer漏洞的可行的硬件解决方案,简称为ARMOR,是一种内存运行时的热排探测器。

  如果在测试过程中发生了比特位翻转,管理员应该考虑监视那些经常性具有很高CPU占用率和高缓存丢失的进程,这很有可能是基于Rowhammer攻击方式的特征。根据评估的风险水平,将硬件移动到支持伪目标行更新(Pseudo Target Row Refresh)或目标行更新(Targeted Row Refresh)的平台,通过目标行更新运行某一hammered row可能是一种选择,但最好的建议是直接与您的供应商寻求意见,如何才能完全地保护特定的环境免受攻击。最后,任何快速的解决方法将很有可能以BIOS更新的形式发布,管理员们应保证他们能实时跟踪硬件厂商的安全通知。