ZenHammer - 在 AMD Zen 平台上破坏内存内容的攻击方法

苏黎世联邦理工学院的研究人员开发了 ZenHammer 攻击,这是 RowHammer 类攻击的一种变体,用于修改动态随机存取存储器 (DRAM) 各个位的内容,适用于采用 AMD 处理器的平台。过去的 RowHammer 攻击仅限于基于 Intel 处理器的系统,但研究表明,在具有 AMD 内存控制器的平台上也可以实现内存损坏。

该方法在配备来自三个领先制造商(三星、美光和 SK 海力士)的 DDR2 内存的 AMD Zen 3 和 Zen 4 系统上进行了演示。该攻击成功绕过了内存芯片中实现的 TRR(目标行刷新)机制,该机制旨在防止相邻行中的内存单元损坏。研究人员表示,基于 AMD Zen 3 CPU 的系统比采用 Intel Coffee Lake 处理器的系统更容易受到攻击,而且更容易、更有效地受到攻击。在 AMD Zen 2 系统上,7 个测试的 DDR10 芯片中的 4 个出现了单元失真,而在 Zen 3 系统上,6 个中的 10 个出现了单元失真。研究人员还分析了对具有 DDR4 内存的 AMD Zen 5 系统进行攻击的可能性,但攻击为 DDR4 开发的方法仅在十分之一的测试 DDR1 内存芯片上成功重现,虽然不排除攻击本身的可能性,但需要开发适合 DDR10 设备的更高效的读取模式。

为了与 AMD 芯片配合使用,他们能够采用先前开发的漏洞利用程序,更改内存页表(PTE,页表项)中条目的内容,从而获得内核权限,通过修改 sudo 进程的内存来绕过密码/权限检查,并损坏 OpenSSH 内存中存储的 RSA-2048 公钥以重新创建私钥。在测试的 7 个 DDR10 芯片中,有 4 个芯片再现了内存页面攻击,6 个芯片再现了 RSA 密钥攻击,4 个芯片再现了 sudo 攻击,攻击时间分别为 164、267 和 209 秒。

ZenHammer - 在 AMD Zen 平台上破坏内存内容的攻击方法

该方法还可用于通过浏览器攻击系统、从虚拟机进行更改或通过网络发起攻击。用于对 DRAM 内存中的地址布局进行逆向工程的 DARE 工具包的源代码已在 MIT 许可下发布在 GitHub 上,以及用于对内存中位损坏进行模糊测试的两套实用程序 - 用于 DDR4 芯片(Zen 2 和 Zen)的 ddr3_zen4_zen2_pub 3)和DDR5芯片(Zen 4)的ddr5_zen4_pub,可用于测试其系统对攻击的敏感性。

ZenHammer - 在 AMD Zen 平台上破坏内存内容的攻击方法

RowHammer 方法用于扭曲位,这是基于以下事实:在 DRAM 存储器中,DRAM 存储器是由电容器和晶体管组成的二维单元阵列,对同一存储器区域执行连续读取会导致电压波动和导致邻近电池少量电荷损失的异常现象。如果读取强度很高,则相邻单元可能会失去足够多的电荷,下一个再生周期将没有时间恢复其原始状态,这将导致单元中存储的数据值发生变化。研究人员确定了 AMD 处理器中使用的物理内存映射和内存更新机制同步的特征,这使得重新创建低级 DRAM 寻址、确定相邻单元的地址、开发绕过缓存的方法以及计算模式和频率成为可能导致电量损失的操作。

为了防范 RowHammer,芯片制造商使用 TRR(目标行刷新)机制,该机制可以阻止特殊情况下的单元损坏,但不能防范所有可能的攻击选项。最有效的保护方法仍然是使用带有纠错码 (ECC) 的内存,这会使 RowHammer 攻击变得非常复杂,但并不能完全消除。增加内存再生的频率也可以降低成功攻击的可能性。

AMD已就该问题发布了一份报告,指出AMD处理器使用符合DDR规范的内存控制器,由于攻击的成功主要取决于系统设置和DRAM内存,因此有关解决该问题的问题应直接向内存制造商提出和系统使 Rowhammer 级攻击变得更加困难的现有方法包括使用 ECC 内存、增加内存再生频率、禁用延迟再生模式以及使用带有支持 DDR4(第一、第二和第三)MAC(最大激活计数)模式的控制器的处理器。一代 AMD EPYC“那不勒斯”、“罗马”和“米兰”)和适用于 DDR1 的 RFM(刷新管理)(第四代 AMD EPYC)。

来源: opennet.ru

添加评论