如何保护我的家庭/办公室计算机免受行锤?

信息安全 攻击预防 记忆 铁锤
2021-08-27 10:17:53

行锤似乎对 ECC 内存的影响较小,但ECC 仍然不能幸免我听说过像 ANVIL 这样的软件缓解措施,但这似乎也不是 100% 防行锤

什么软件或硬件可以可靠地保护我免受行锤攻击?

我发现了一个提示,即某些类型的 DDR4 内存具有内置保护功能,可以可靠地防止位翻转,因此应该可以防止敲击。但我不完全确定我完全理解它,也不知道这种保护应该有多可靠。这会是一种可靠的保护形式吗?报价

除了购买基于英特尔 Skylake 的快速系统外,我们还购买了四台 Crucial Ballistix Sport 2400 MHz、两台 Crucial Ballistix Elite 2666 MHZ、两台 Geil Super Luce 2400 MHz、两台 G.Skill Ripjaws 4 3200 MHz 和两台美光品牌 2133 MHz用于测试的 DDR4 内存模块……在我们测试的 12 个内存模块中,有 8 个在我们 4 小时的实验中出现了位翻转。在这 8 个故障中,每个在默认设置下出现故障的内存模块都位于 Micron 制造的 DDR4 芯片上。Geil 品牌模块包含 SK Hynix,G.Skill 模块包含三星硅。

编辑:在另一个问题中,提到美光在其 DDR4 芯片中内置了特殊保护。但我相信三星和 SK 海力士也做到了这一点,而且,显然(见上文),美光的保护还不够。

在此处输入图像描述

1个回答

唯一不涉及降级到具有 DDR2 的主板的可靠硬件缓解措施是使用支持 TRR(目标行刷新)的内存,这对于LPDDR4是可选的(与 DDR4 不同)。不幸的是,许多 DDR4 模块不支持 TRR,而且如果不深入挖掘,通常没有简单的方法来判断它是否支持。此外,似乎大多数现代 TRR 实现都无效,实际上使情况变得更糟还有pTRR (伪 TRR)用于某些 Ivy Bridge 处理器具有的 DDR3。它需要使用与 pTRR 兼容的 DIMM。我不知道这有多有效或可靠,因为网上几乎没有关于其实施或规范的信息。除此之外,还有一些技术可以降低易感性:

  • 使用 ECC 并在 MCE 上出现恐慌- 虽然 ECC 不能完全缓解攻击,但如果您将计算机配置为在任何违规(称为机器检查异常或 MCE)时出现恐慌,它可以有很长的路要走。如果第一个检测到的错误导致系统停止,攻击者将很难成功利用系统。高擦洗率提高检测。

  • 提高刷新率* - 默认情况下,内存以 64 毫秒的间隔刷新。某些 BIOS 允许您指定刷新间隔。将其减少到 32 毫秒会使 rowhammer 更难被利用,但会牺牲性能和能源使用。进一步减少它有助于更​​多,但对性能的影响更大。一些声称具有 rowhammer 缓解设置(可选或默认启用)的 BIOS 供应商只是将刷新间隔减少到 32 毫秒。

  • 降低时钟速度* - 降低每个内核的最大时钟速度会使高速访问内存行变得更加困难,因为内存访问自然受到时钟速度的限制。这种缓解措施仅适用于边缘易受攻击且价格昂贵(显着降低性能)的内存。您还可以禁用超线程或其他形式的SMT并切换到使用单核,这同样会对性能产生重大影响。

  • 设置 CPU 和 RAM 资源限制* - Rowhammer 需要锤击内存,这会占用大量 CPU 时间。如果恶意进程可以分配大量内存,一些 privesc 攻击也会更快地工作。设置严格的资源限制来杀死使用过多 CPU 或内存的进程可以在使用易受攻击的内存模块时减慢攻击速度。

  • 在 Web 浏览器中禁用 JIT - JIT 或即时编译是浏览器使用的一种优化功能,可将 JavaScript 编译为可执行代码。这大大加快了网页上的繁重脚本。但是,它也使浏览器中的 rowhammer 成为可能。禁用 JIT 会降低 JavaScript 性能,以至于这种攻击变得不可行。请注意,这种缓解只会降低浏览器的敏感性,而不是任何其他本地进程!

  • 使用具有高 MAC的内存 - 最大激活计数 (MAC) 是 DRAM 的一种度量,它计算在导致不稳定之前在单个刷新间隔内可以对一行进行多少次访问。MAC 越高越好,无限制的 MAC 是理想的。理论上,具有无限 MAC 的模块不易受到 rowhammer 的攻击。您需要搜索数据表以找出该特定型号的 MAC,或通过SPD获取数据。还需要测试模块以确保它们是安全的,因为报告的 MAC 值并不总是准确的。

  • 黑名单易受攻击的地址- x86 CPU 的一个特殊功能是e820,其中包含 CPU 将隐藏并拒绝映射到虚拟内存的物理内存地址列表。结合这一点,rowhammer 通常会一遍又一遍地影响相同的行(即,在任何给定的模块中都有易受攻击的行和不敏感的行),找到这些易受攻击的地址并将它们列入黑名单是有意义的。这是B-CATT采用的方法。

  • 物理分区内存- 如果您可以对内存进行分区,以便不同安全级别的进程永远不会映射到相邻行,则可以隔离基于 rowhammer 的损坏。这在为虚拟机分配内存或对内存进行分段以便在用户和内核物理内存区域(不仅仅是“上层”内核)之间进行分割时很有用。

rowhammer -discuss上有许多与 rowhammer 相关的问题和讨论

* 就其本身而言,这些缓解措施只能起到很小的作用,并且在许多情况下只会略微降低位翻转率。