DRAM芯片安全(Rowhammer)

30 篇文章 47 订阅
3 篇文章 1 订阅
Rowhammer漏洞允许攻击者通过反复访问内存行来操纵相邻数据,可能导致系统崩溃或被控制。尽管有软件和硬件缓解措施,如目标行刷新(TRR)和错误校正码(ECC),但这种攻击仍然存在。新的制造工艺可能提供解决方案,例如通过减少陷阱点和阻止电子迁移来防止干扰。然而,证明和实施这些解决方案仍然是一个挑战,攻击者持续寻找绕过缓解措施的方法。
摘要由CSDN通过智能技术生成

众所周知的称为“ rowhammer”的DRA​​M漏洞继续困扰着芯片行业,该漏洞使袭击者能够破坏或控制系统。已经尝试了解决方案,并提出了新的解决方案,但重大攻击的可能性仍然存在。

大约在五年前首次发现,消除“rowhammer”威胁的大多数努力仅起到缓解问题的作用。

“Rowhammer”是一个大问题。供应商声称它已被“修复”,但事实并非如此。如果仅看2020年发表的许多论文,你会看到很多证据。

尽管到目前为止,还没有一种方法被广泛接受为确定性和决定性的方法,但是有很多方法可以阻止。缓解措施可以在软件级别,浏览器级别以及DRAM和内存控制器的硬件中找到,但是这些只是试图阻止攻击,没有从根本上解决问题。

Rowhammer基础知识

Rowhammer的出现是DRAM制造方式的意外结果。该过程是一种精心设计的方法,可以以尽可能少的钱将尽可能多的位向下放入硅片。简单地改变过程绝非易事,我们无法颠覆我们生产大量内存的方式。

该问题发生在沿着制造过程的一部分被蚀刻的壁的裸片级。蚀刻过程会留下缺陷或陷阱,这些缺陷或陷阱可以捕获电子并保持在电子上。如果那些电子留在陷阱中,那么这可能不是什么大问题。但是在存储器访问周期的后期,这些电子可以被释放。从那里,它们可以四处扩散,有可能最终进入相邻的区域。

每次关闭行时,都会在基板上注入大量电子,其中一些电子将迁移并被附近的节点吸收。
在这里插入图片描述
图1:沿侧壁的陷阱(左)捕获暂时保留在其中(中心)的电子,随后,它们可以释放并迁移到其他单元(右)。

DRAM位单元不过是一个存储电荷的电容器,还有在写入时获取和取出电荷以及在读取时确定其中存有多少电荷的方法。电容器可能泄漏,并且读取过程本身具有破坏性。因此,电容器必须在读取后立即刷新其值,或者,如果长时间不使用,则必须以某个预定频率刷新其值。

此处的基本要点是,电池单元的状态由电容器上的电荷决定,并且电荷在刷新周期之间容易受到影响。漂移的电子可以迁移到电池中,从而改变电池中的电荷。如果进行了太多次,则可能会积累足够的电荷以改变电池的感知状态。

这就是rowhammer的“ hammer”部分出现的地方。其想法是,如果在刷新发生之前读取给定的行足够多的时间,这些错误电子的反复微小爆发会改变相邻的单元。实际上,随着尺寸的缩小,脆弱的可能不仅仅是相邻的行。随着行之间的距离越来越近,甚至临近的行(相隔两行甚至更多行)也可能会受到影响。

从现象到攻击

采取这种现象并弄清楚如何将其用于攻击系统需要一些聪明的思考。尽管似乎还没有发生过任何严重的黑帽攻击,但已有许多学术论文将Rowhammer用作控制系统的一种手段。

一些明显的攻击演示是提升了系统级别的权限(例如管理员)。

从系统的顶部向下看,从芯片的底部向上看,有两个很大的挑战。其中之一就是了解关键系统数据在内存中的位置。另一个要求了解哪些行在物理上相邻。芯片的具体布局很重要,而芯片制造商通常对此保密。您不能假定一个供应商制造的内存的物理布置将与另一供应商制造的物理布置相同。

所有这些都使Rowhammer变得难以实施,但绝非不可能。虽然许多研究报告详细介绍了各种攻击的细节,并详细说明了结果,但一些示例表明,完全控制内存的某些随机部分并没有什么挑战,而对战略位置的控制却不那么困难-从而控制整个系统。

面向目标的一个有吸引力的地方是用于内存管理的表。它们为正在运行的各种进程列出了预期的边界,包括访问不同分配所需的权限。攻击这些页表而不是攻击主内存,意味着通过一次编辑,受限制的过程可能会以某种方式改变,使攻击者可以访问更多(或全部)内存(包括安全块)。通过这一更改,该系统现已开放供进一步开发。

至于确定要锤击的行,然后再锤击,普遍使用高速缓存会使此操作变得更加困难。如果您编写的程序只是简单地重复访问某些内存位置,则不会利用rowhammer现象。这是因为第一次内存访问将导致内容被加载到缓存中,而所有后续访问都将从缓存中提取,而不是重新读取内存。

这使得绕过缓存成为任何漏洞利用的重要组成部分。取决于所使用的处理器,它可以变得更容易或更难,因为不同的体系结构具有不同的缓存逐出策略(而那些具有纯粹确定性策略的缓存则更具风险)。但是,也就是说,确定邻接关系可能涉及进行微妙的时序计算,以确定数据是否已存在于DRAM的高速缓存或行缓冲区中。

一个事实是,某些存储位比其他存储位更容易受到攻击,这使攻击变得更加严峻。可能有确定性的原因,例如使特定区域成为多个芯片中可能的目标,或者可能有一些随机因素。因此,并非每个存储单元都会以相同的方式响应行锤。

这些项目的影响是认识到这是一种真正的威胁,而不是理论上的威胁,在某人造成破坏之前,这只是时间问题,尤其是当大量计算移至云中时,可以访问无数服务器及其内存来自世界任何地方。

缓解措施和绕过技术

迄今为止,大多数对抗Rowhammer的努力都没有解决问题的基本物理原理。他们提供了解决此问题的方法。而且它们已经在多个级别上实现了。

例如,使用浏览器访问远程服务器已使浏览器行业成为利益相关者。由于攻击可能涉及微妙的时序测量,因此浏览器减小了可用时序的粒度。不再可能获得纳秒级的精度。相反,它可能是几微秒–仍然准确,但准确度却降低了1000倍,足以限制一种攻击方式。

主要的浏览器已经缓解了这个问题,或者至少已经尝试了。许多修补程序都是基于软件的,并且非常有针对性(例如,谷歌浏览器通过在2018年从webGL实施中删除扩展来缓解GLitch的问题)。但是最大的收获是,不能被远程利用”的硬件漏洞仅在等待表明它们可以并“不能被利用的实验,这实际上意味着我们只是无法想到一种方法来立即进行远程利用。

有六个理想化解决方案:1)制造不易损坏的更好的DRAM芯片; 2)使用(强)错误校正码(ECC)校正行锤引起的错误; 3)提高所有内存的刷新率; 4)通过一次制造后分析来静态地重新映射/退出容易发生行锤的单元,5)在系统运行期间动态地重新映射/退出容易发生行锤的单元,以及6)在运行时准确地识别被锤击的行并刷新它们的邻居。

大多数缓解措施都集中在方案6上。方案1是所需的根本原因解决方案。可以使用2号(ECC),但有局限性,我们将在稍后讨论。第三名可能很有吸引力,但它是一个永恒的追求。而4和5则产生了显着的系统级复杂性。

缓解的焦点大多集中在较低的内存级别上-划分在DRAM芯片本身和位于DRAM与系统之间的控制器之间。在刷新周期内,当此类攻击超过给定值时,就会有一个窗口。然后,解决方案可以在任何地方构建–在控制器或DRAM上。它需要昂贵的硬件,并且非常耗电。

防止攻击的一种方法是计算刷新之间给定行的访问次数。如果超过阈值,则您将阻止进一步的访问。尽管这听起来可能很简单,但是很难付诸实践。没有很好的模型来拒绝访问,否则这些访问似乎是合法的。因此,如果拒绝读取请求,则需要一路返回到系统中进行决策。这是否意味着控制器停止,等待并重试?操作系统是否参与其中?应用程序最终会失败吗?

JEDEC存储器标准中增加的两个新功能提供了另一个响应。一种新功能称为目标行刷新或TRR。这里的想法是,虽然将DRAM设置为在读取后并根据计划进行刷新,但是需要更精细的粒度机制来按需执行单行刷新。如果某人或某物(在内存中或在控制器中)检测到可能正在发生攻击,则可以对受影响的行进行刷新,并消除到目前为止可能发生的任何锤击。

管制员不断监视,如果怀疑特定的一行或多行受到攻击,管制员会立即找出可能的受害者。然后,它将DRAM置于TRR模式,并且可以向那些受害行发送主动刷新,以防止它们丢失其原始状态。

DRAM也可以有计数器,这非常耗电,但是有些具有可以监视持久访问的计数器。

在所谓的“无锤击” DRAM中有一种解决方案。对于2Gb和4Gb DDR3(25nm节点)DRAM,应用专有的行锤保护方案,将多个计数器和SRAM集成在一起,以监视行激活的次数,并在达到特定最大值时刷新受害行。这样提供的响应不显着影响性能,也不在DRAM外部可见。

当然,此解决方案需要付出一定的代价。额外的硬件结构增加了芯片的面积,并且由于晶圆产量较低,与其他行业相比,它在成本和价格上没有竞争力。但是,这种无排锤的版本是根据HDD行业客户的需求而设计的。

但是,TRR并未使所有玩家满意。总的来说,DRAM供应商和控制器供应商对TRR保密。实际上,TRR不仅仅是简单的缓解措施,它似乎是许多缓解措施的保护伞,其中许多可以绕开。不幸的是,TRR描述了一组方法,其中许多方法都不起作用,因此,这本身并不是缓解措施,而只是一系列反措施。

尽管TRR可以防御单面(一个相邻的攻击行)或两面(两个相邻的行作为攻击者),但它无助于“多面”攻击-多个行同时工作。甚至开发了一种工具来帮助弄清楚如何在存在TRR的情况下修改攻击,从而使攻击仍然有效。

纠错码(ECC)也被视为一种可能的解决方案。有一行的想法可能已损坏,但在读取过程中将更正此损坏。对于单个位已损坏的行,可能就是这种情况,但是-考虑到锤击整行而不是仅仅敲碎整个行-可能存在比ECC所能纠正的错误更多的错误。Hallman指出:“即使是现在,攻击者也开始发现绕过这些保护措施的方法,但这种攻击的主要保护措施之一就是错误代码校正(ECC)。”

此外,某些ECC实现仅纠正正在读取的数据,而不纠正行中的原始数据。将不正确的位留在原处意味着将来的刷新将加强该错误,因为刷新将恢复已经存在的内容,而不是将其恢复到某个已知的黄金参考状态。避免这种情况将意味着使用ECC确定不正确的位并在内存中对其进行更正。

还有一个新的控制器命令,称为刷新管理(RFM)。RFM在DDR5的JEDEC标准中,但尚未被更广泛的安全读者评估。因此,尽管它在概念上看起来不错,但尚未经过测试,因此也不是已知的缓解措施,而只是一种假定的缓解措施。

这种模式就是这样,其他缓解措施已经发布,学术界开始努力证明他们仍然可以绕开缓解措施。而且,在大多数情况下,它们是正确的。

鉴于大多数缓解措施都集中在基于CPU的系统上,所以现在越来越引起人们的关注。GPU可能提供了一种攻击系统的替代方法,因此那里也需要引起注意。

自2012年以来,业界一直在努力缓解这种威胁,采用了DDR3 / 4和LPDDR4标准的目标行刷新(TRR)部分以及DDR5和LPDDR5规范中的刷新管理(RFM)之类的技术。但是,即使使用这些缓解技术和其他缓解技术,由于DRAM内部布局是专有的,因此特别难以缓解行锤式攻击。

基本问题可以解决吗?

这个问题的圣杯一直是阻止电子迁移干扰cell的一种方法。以不破坏整个DRAM过程或使DRAM无法承受的方式做到这一点一直是巨大的挑战。因此,人们一直非常关注通过缓解措施间接解决问题,而不是直接解决问题。但是,如果缓解措施受到不断的攻击,那么根本原因解决方案将是受欢迎的。

这是针对硬件问题解决方案的一个论据,如果硬件易受攻击,则将缓解责任推给软件(或更高的抽象级别),并不能根本有效解决。

一家公司声称找到了这样的修复程序-可能是偶然的,创建一个新颖的选择器,该选择器将有助于减少存储位单元所需的面积。许多位单元由单个组件(例如电阻器,电容器或晶体管)组成,但是它们需要一种关闭方式,因此在访问另一个相关单元时不会意外干扰它们。由于这个原因,一个附加的“选择器”晶体管被添加到每个位单元,从而使位单元变大。

可以从3D NAND中获取一页-使晶体管与周围的栅极垂直工作-并将其放置在存储单元下方而不是与其相邻。因此,这种堆叠的布置将使存储器阵列的尺寸紧凑。

它可用于任何电阻式开关,如ReRAM,CBRAM,CERAM和PCRAM –任何需要电流或电压进行切换的两端电阻器。这是基于选择性外延的晶体管周围的垂直门。

这给晶体管带来了两个关键特性,使其成为完整的行锤解决方案的竞争者。一种是所使用的硅在晶片上方外延生长,而不是被蚀刻到晶片中。由于蚀刻首先是捕获电子的陷阱的主要来源,因此消除这些陷阱位置将大大减少甚至消除问题的根源。

第二个特征是掩埋的n型层,该层有效地阻止杂散电子从任何来源干扰位单元。如果得到证实,这将有效地关闭排锤机制。
在这里插入图片描述图2:在左侧,捕获在攻击单元上的电子可以漂移到相邻单元并改变电容器上的电荷。在右侧,新提出的结构使用外延,产生了更少的陷阱位点,n掺杂区阻止了任何错误的电子访问位单元。

要证明缓解的有效性并不容易,因此需要对攻击进行仔细的建模-至少是已知的攻击。通过利用我们的故障注入和检测工具,我们可以与客户合作对攻击进行建模并演示对内存的影响,这可以确定仍可能泄漏信息的区域。

从第一条原则证明硅级修复的有效性也是一个挑战。 DRAM是硬核IP,这种攻击利用了物理原理,因此需要精确到SPICE级别的目标,或者是有针对性的替代方案,以可靠地验证预硅片。但是,在谨慎的行业中,必须有缓解措施和修复措施的证明。

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值