Blacksmith——针对 DRAM 内存和 DDR4 芯片的新攻击

来自苏黎世联邦理工学院、阿姆斯特丹自由大学和高通公司的研究小组发布了一种新的 RowHammer 攻击方法,该方法可以更改动态随机存取存储器 (DRAM) 各个位的内容。 此次攻击的代号为 Blacksmith,编号为 CVE-2021-42114。 许多配备了针对先前已知的 RowHammer 类方法的保护的 DDR4 芯片很容易受到此问题的影响。 用于测试系统漏洞的工具已发布在 GitHub 上。

回想一下,RowHammer 类攻击允许您通过循环读取相邻内存单元的数据来扭曲各个内存位的内容。 由于 DRAM 存储器是二维单元阵列,每个单元由电容器和晶体管组成,因此对同一存储区域执行连续读取会导致电压波动和异常,从而导致相邻单元中的少量电荷损失。 如果读取强度很高,则相邻单元可能会失去足够多的电荷,下一个再生周期将没有时间恢复其原始状态,这将导致单元中存储的数据值发生变化。

为了防御RowHammer,芯片制造商提出了TRR(目标行刷新)机制,该机制可以防止相邻行的单元被损坏,但由于这种保护是基于“隐匿性安全”的原则,因此并没有解决问题根,但仅受到已知特殊情况的保护,这使得很容易找到绕过保护的方法。 例如,XNUMX月份,谷歌提出了Half-Double方法,该方法不受TRR保护的影响,因为攻击影响的是与目标不直接相邻的小区。

Blacksmith 的新方法提供了一种绕过 TRR 保护的不同方法,其基础是以不同频率对两个或多个攻击者字符串进行非均匀访问,从而导致电荷泄漏。 为了确定导致电荷泄漏的存储器访问模式,我们开发了一种特殊的模糊器,可以自动选择特定芯片的攻击参数,从而改变单元访问的顺序、强度和系统性。

这种与影响相同小区无关的方法使当前的 TRR 保护方法无效,这种方法以某种形式归结为计算对小区的重复调用次数,并在达到特定值时启动充电的相邻细胞。 在 Blacksmith 中,访问模式从目标的不同侧面同时分布在多个单元上,这使得可以在不达到阈值的情况下实现电荷泄漏。

事实证明,该方法比之前提出的绕过 TRR 的方法要有效得多 - 研究人员成功地在最近购买的 40 个不同 DDR4 内存芯片中实现了位失真,这些芯片由三星、美光、SK Hynix 和一家未知制造商(制造商是4 个芯片上未指定)。 相比之下,同一研究人员之前提出的 TRRespass 方法仅对当时测试的 13 个芯片中的 42 个有效。

总体而言,Blacksmith 方法预计适用于市场上 94% 的 DRAM 芯片,但研究人员表示,某些芯片比其他芯片更容易受到攻击,更容易受到攻击。 在芯片中使用纠错码(ECC)并将内存刷新率加倍并不能提供完整的保护,反而会使操作变得复杂。 值得注意的是,该问题无法在已发布的芯片中被阻止,并且需要在硬件级别实施新的保护,因此该攻击将持续多年。

实际例子包括利用Blacksmith改变内存页表项(PTE,页表项)内容来获取内核权限,破坏OpenSSH内存中存储的RSA-2048公钥(可以将公钥带入内存)的方法。别人的虚拟机来匹配攻击者的私钥以连接到受害者的虚拟机)并通过修改 sudo 进程的内存来绕过凭据检查以获得 root 权限。 根据芯片的不同,改变一个目标位需要 3 秒到几个小时的攻击时间。

此外,我们还可以注意到由 Antmicro 为 Google 开发的开放 LiteX Row Hammer Tester 框架的发布,该框架用于测试针对 RowHammer 类攻击的内存保护方法。 该架构基于利用FPGA完全控制命令直接传输到DRAM芯片,消除内存控制器的影响。 提供 Python 工具包用于与 FPGA 交互。 基于 FPGA 的网关包括用于数据包传输的模块(定义内存访问模式)、有效负载执行器、基于 LiteDRAM 的控制器(处理 DRAM 所需的所有逻辑,包括行激活和内存更新)和 VexRiscv CPU。 该项目的开发是在 Apache 2.0 许可证下分发的。 支持各种 FPGA 平台,包括 Lattice ECP5、Xilinx 系列 6、7、UltraScale 和 UltraScale+。

来源: opennet.ru

添加评论