中文 英语

Rowhammer漏洞有实用测试吗?

新的方法出现了持续的DRAM问题。

受欢迎程度

Rowhammer被证明是一个难以解决的DRAM问题。

尽管人们仍在努力减轻或消除这种影响,但还没有一种固溶体能够投入批量生产。此外,更激进的流程节点预计会加剧这个问题。在没有解决办法的情况下,测试可能是给予的一种方式动态随机存取记忆体为了提高系统安全性,制造商和用户采取了一些方法来隔离那些更容易受到影响的设备。

硬件分析和测试的研究员兼首席技术专家Yervant Zorian说:“由于安全性问题,行锤敲击引起了我们的注意Synopsys对此.“通过这种敲打,人们可以逆向工程内存的内容。”

佛罗里达大学的研究人员穆罕默德·法马尼在2021年欧洲测试研讨会上的一次演讲中报告了类似的发现。“自2014年rowhammer引入以来,每年都会出现几起攻击,来自软件层面的攻击者利用电路层面的rowhammer漏洞,侵犯了主存的完整性。”

对排锤脆弱性进行全面详尽的测试将花费太长时间,在经济上不可行。“这样做真的很耗时,”佐里安说。“尽管测试在高速运行,但这是一个非常长的测试。”

目前,唯一的选择是不测试。但是一个研究项目[1]在最近的欧洲测试研讨会上提出的建议表明,使用一种远非详尽的方法来提供详尽测试的大部分好处是可能的。如果全面部署,它既可以为制造商提供关于更容易受到攻击的设备的反馈,也可以为用户提供可行的传入测试流程,使他们能够更有选择性地选择使用的部件。

顽强的挑战
Rowhammer是一个动态随机存取记忆体-特定的现象,其中重复访问特定的内存行可能破坏物理相邻行的数据。每当一行被访问时,一小股电子就会飘到相邻的单元中。

单独来看,这些气泡并不显著。但是,如果有人故意访问这一行——被称为“侵略者”——一遍又一遍地快速连续地访问这一行,所谓的“锤击”这一行,这些累积的电子可以改变相邻行中相邻细胞的状态,称为“受害者”。这已被发现是一个安全挑战,可能会使攻击者控制系统。

如果在任何损坏之前执行了刷新,内存将重新开始。问题是在刷新之间发生太多的访问。更紧密的电池包装会使问题更严重,这就是为什么旧的dram不太容易受到影响,而新dram预计会更糟糕。翻转位所需的访问次数预计会随着维度的缩小而下降。

这样的锤击不是典型的正常应用程序,因为这是一种不寻常的访问模式。“在正常的操作中,你不需要锤子,”佐里安指出。它主要发生在攻击期间,这完全是一个安全问题,而不是质量问题。法玛尼指出:“记忆中的脆弱细胞与脆弱细胞不同。”

对于rowhammer的缓解和可能的修复,已经进行了许多讨论。缓解措施已经到位,但评估结果褒贬不一,但行业尚未最终采用任何解决方案。法马尼说:“最近的袭击表明,目前的解决方案并不完全有效。

在考虑测试rowhammer时,隐含的预期是某些芯片比其他芯片更脆弱。理想情况下,测试可以让制造商剔除特别脆弱的芯片。或者,作为一种来料质量检查,系统建造者可能会拒绝使用更脆弱的部件,认为它们存在安全风险。

在后一种情况下,我们处理的是一个DIMM,而不是一个单独的存储芯片。这意味着测试不仅要测试单个芯片,还要测试DIMM上的每个芯片。

图1:每个内存有多个DRAM,每个DRAM有多个存储库,每个存储库有多个DRAM单元子阵列。来源:©2021 IEEE

图1:每个内存有多个DRAM,每个DRAM有多个存储库,每个存储库有多个DRAM单元子阵列。来源:©2021 IEEE

如果每个芯片中的所有细胞都面临同样的风险,那么测试也没有任何好处。Farmani说:“如果我们每次使用排锤都不一致,那么错误就会在每次测试的新位置发生。”“这意味着每次所有的细胞都有相同的概率显示错误,这使得寻找测试解决方案变得不可行的。”

这是因为彻底的测试太昂贵了。为了执行测试,必须将每一行暴露给数十万个访问,检查相邻行的错误。

从SoC进行测试
Rowhammer测试现在可以在内存中使用内建自测(MBiST)模块。这样的MBiST块通常被放置在SoC中,用于测试SoC上的嵌入式内存。然而,在DRAM的情况下,内存是外部的SoC,而不是嵌入的。

为此,MBiST块可以通过DRAM高速接入端口访问DRAM。这提供了一种在SoC控制下测试DRAM的方法。MBiST功能可以覆盖许多不同类型的错误,但是rowhammer可以是一种可选的测试。“我们有一个特殊的引擎,可以与DDR内存和HBM内存对话,”Zorian说。“然后我们应用这种锤击方法。”

这种功能在高级包中特别有用。“当你在多芯片模块中封装一个模具时,在包装、处理等过程中,模具仍然暴露在外,”Zorian说。“它可能会被损坏。这就是包装后要重新测试的原因。但我不能再直接接触它了。它与逻辑有关。如果我试图探测它,这是非常困难的,因为你测试的是非常高速的连接。”

一些芯片甚至可能在3D配置中倒置或被另一个芯片覆盖。因此,通过DRAM端口的MBiST方法可能是测试这种组件的有效方法。

汽车应用程序对开机、临时和关机测试有独特的要求。但是由于rowhammer是一个安全问题,而不是一个质量问题,所以它不太可能在系统中执行(尽管它可以由系统构建者选择)。这主要是在系统部署到现场之前或在安装DIMM之前进行的制造级测试。

一些MBiST块允许在不同的设置下执行不同的程序。因此,包括排锤试验在内的全部试验均可在生产试验时进行。其他设置(例如,通电测试和临时测试)可能涉及较短的测试,并且可以完全省略rowhammer测试。

“有些人喜欢做一个更短的测试,只是看看DRAM是否活的,”Zorian说。在汽车或高端计算等其他应用中,他们通过(SoC-to-DRAM)桥接应用整个DRAM测试。”

使用可编程的MBiST块,可以在MBiST中构建通用的rowhammer-test算法,同时将重要参数置于编写测试程序的人的控制之下。通过这种方式,可以对要测试的特定地址和要执行的“锤子”的数量进行编程。

“在我们的BiST引擎中,我们有一个循环,”Zorian说。我们把它交给包装公司的控制,不管是谁组装的,他们决定做多少循环。”

测试时间总是很重要的。因此,最大的问题就变成了,“应该访问多少行,应该读取多少列,应该测试哪些特定的行和列,以及应该执行多少个hammer ?”MBiST块可以允许将这些信息编程到测试中,但它本身没有提供关于如何设置这些参数的指导。

佛罗里达大学的研究小组正在寻找一种更有效的方法来系统地测试脆弱部位——也就是说,以一种针对最脆弱细胞的方式进行测试。这将应用于MBiST实现或外部由自动化测试设备(吃)。但是,为了使其有意义,每个存储阵列中的某些位置需要比其他位置更容易受到攻击——对于给定的设计,这种相关性需要在各个部分之间保持一致。

或者,如果所有的单元都同样容易损坏,那么测试内存的随机子集可能会在更短的时间内提供一些好处。但是,选择测试什么和敲击多少或多或少是随机选择的,因此很难证明具体选择的合理性。

那么,给定一个ATE或MBiST程序,允许对数组的一个子集进行rowhammer漏洞测试,应该是哪个子集?

结识邻居
一个系统的、定向的行锤测试需要行邻接的知识。在这样的设计中有三层地址。这是软件使用的逻辑地址,该地址由内存管理单元(MMU)转换为物理地址。但是这些dram的物理布局有时会打乱地址,例如具有相邻“物理”地址的两行在物理上可能不是相邻的。

“我们曾经有五、六种类型的置乱——位扭曲、地址置乱、块置乱等等,”Zorian说。“今天,有大约20种类型的scramble。”

图2:行地址置乱的示例。顶部和底部的行集没有被打乱,但中间的行集是。来源:©2021 IEEE

图2:行地址置乱的示例。顶部和底部的行集没有被打乱,但中间的行集是。来源:©2021 IEEE

芯片制造商将知道如何将物理地址映射到研究团队所说的“实现地址”。但是作为DRAM客户的系统构建者不知道这种映射。为了进行测试,需要有一种方法对实现邻接进行逆向工程。

这是佛罗里达团队项目的第一步。这是一项详尽的工作,因为它是通过一行一行地敲打设备来查看哪些行损坏了。敲打一个攻击行会导致其他两个受害者行显示位翻转。然后,这两排受害者将被假定位于被锤击的那排的两侧。事实上,这就是他们的发现。

法玛尼说:“对于每个攻击者来说,除了记忆的开始和结束,还有两排受害者。”测试的三个不同的供应商(它们的身份没有公开)都有不同的映射,但对于每个供应商来说,该映射在多个设备上是一致的。

有一种担忧是,随着新技术的发展,这种影响可能不仅会破坏相邻的行,还会破坏相邻的行。这是因为这些行会被挤得更紧,电子的膨胀可能会到达其他的行。

在这种情况下,使用这种方法,可以预期有四行有损坏,其中两行比另外两行损坏更严重。损坏程度较高的行将被解释为直接邻居,损坏程度较低的行将被解释为邻居的邻居。这个项目使用的是旧的内存,所以在他们的具体工作中并没有考虑到这一点。

因为旧的设备需要更多的锤子来破坏,团队敲打每行1500万次——这已经足够在刷新周期之间进行了。因此,他们禁用了自动刷新,只在需要时手动刷新(尽管延长刷新间隔时间也可能导致一些随机单元格自然泄露状态)。

寻找相关性和模式
一旦知道了地址映射,下一步就是弄清楚芯片的某些部分是否比其他部分更容易受到攻击。这将重新开始敲打序列,尽管使用较少的锤子。通过这个过程,他们可以利用自相关将随机损坏的细胞从系统损坏的细胞中分离出来。

他们最终得到的是脆弱细胞的分布,包括破坏不同细胞所需的锤子数量。这就是芯片之间的一致性的重要之处除了随机的位翻转,这就是我们所发现的。

法玛尼说:“我们发现易受锤击的细胞高度一致。”“它们在位线中具有相关性,这有助于我们定位内存中更脆弱的行。他们没有显示出任何相关的行。同一厂商同一系列的不同芯片彼此之间非常相似。平均而言,三家供应商的rowhammer脆弱单元的一致性超过80%。”这意味着相同的测试可以用于所有具有相同设计的设备。

实际影响是,对于给定的内存设计,需要使用多个芯片完成一次映射和关联过程,才能有效地描述该设计的rowhammer分布。这些数据可以为使用相同设计的任何其他芯片的测试程序提供种子。

这还意味着需要为每个供应商的每个设计执行该流程。理论上,这些数据可以供其他人在创建测试程序时使用。在实践中,业务方面的考虑可能会导致数据被多个组织使用。

提供可调测试程序
脆弱的细胞和无懈可击的细胞之间没有明显的差别。它们按程度变化。所以他们在这一阶段发现的分布告诉他们在给定数量的锤子下可以翻转多少个单元格。它还提供了位线相关性的分布,按脆弱性的顺序。

这给测试创建者在权衡覆盖率和成本时提供了两个旋钮。为了获得更高的覆盖率,程序可以放松相关性,采用更多的位行,和/或增加测试的每行上的锤子数量——以牺牲更长的测试为代价。当然,这假设检查结果的方式可以受益于检查的位行更少。

一个更短的测试可以只关注最脆弱的位线,使用更少的锤子(因为更脆弱的位线需要更少的打击来破坏它们的邻居)。至于行,这里没有相关性,因此可以使用行的任何子集进行测试。这变成了第三个旋钮,更多的行提供更高的覆盖范围,成本更高。

虽然新的工艺节点预计会导致更脆弱的芯片,但这实际上对测试来说是个好消息。破坏所需的锤子越少,测试速度就越快。

对于ATE执行的测试,这些参数提供了如何编写测试程序的指导。对于可编程的MBiST块,只要可以对锤头计数和目标地址进行编程,就可以在MBiST程序中实现ATE测试(或其变体)。

需要进一步的研究将这些结果扩展到更多的供应商和更新的技术。然后,自动化可能会看到rowhammer漏洞被添加到新的DRAM芯片的生成特性中。

来源
[1] M. Farmani, M. Tehranipoor, F. Rahmanr,“RHAT:现代DRAM模块的高效rowhammer感知测试”,2021 IEEE欧洲测试研讨会(ETS), 2021年,第1-6页,©2021 IEEE。

有关的故事
DRAM对芯片安全的持续威胁
Rowhammer对内存的攻击可能会给系统带来重大问题;可能的解决方案出现了。
更多的数据,更多的内存扩展问题
DRAM、闪存和新存储器的挑战依然存在。
半导体安全知识中心



3评论

贝克穆罕默德 说:

为什么不使用简单的硬件来防止对同一行的连续访问,从而防止RawHammer,因为它在函数模式中是不需要的。只是一个想法!!

Erik Jan Marinissen 说:

感谢您最近在IEEE欧洲测试研讨会(ETS-2021)上发表的一篇出色的论文,关于该主题的完整论文将很快出现在IEEE的数字图书馆IEEE Xplore中。与此同时,在2021年6月27日前,所有注册的ETS参会人员都可以点播观看ETS-2021年会的论文和Zoom视频。顺便说一下,你仍然可以报名参加ETS。当然,ETS的直播节目已于5月27日结束,但你仍然可以观看所有环节。看到的:https://ets2021.vfairs.com/

Erik Jan Marinissen

汉斯死 说:

Baker在ISCA2018的一篇论文和演讲“使用自适应计数器树缓解字串扰”中指出,这是一个很好的想法,并且已经在商业上可用的2Gb或4Gb(最近是8Gb) DDR3L DRAM ic中实现,正如作者之前的相关文章“DRAM对芯片安全的持续威胁”中提到的那样。现在你可能会问,为什么不是所有的DRAM品牌都采用这种看门狗(和“过期”行刷新)方案,以确保他们的DRAM不会为那些最近越来越复杂的row - hammer黑客攻击留下硬件后门?答案是,这需要额外的芯片成本,因此很难在这个价格驱动的竞争激烈的动态RAM业务中生存,一些主要的DRAM品牌,如奇梦达,Promos或尔必达,在最近几十年都没有生存下来。

留下回复


(注:此名称将公开显示)

Baidu