揭秘 DRAM 读取干扰:RowHammer 与 RowPress 现象
在当今数字化时代,动态随机存取存储器(DRAM)是计算机系统中不可或缺的组成部分,负责为处理器提供高速数据暂存。然而,随着制程工艺不断微缩,DRAM 单元之间的物理距离越来越近,一种被称为“读取干扰”(Read Disturbance)的可靠性隐患日益凸显。其中,以 RowHammer 和更晚出现的 RowPress 现象最为引人关注。近期,学术界与工业界围绕这两大现象展开了深入探讨,试图在性能与安全之间找到平衡。
所谓读取干扰,是指对 DRAM 存储阵列中某一行(Row)进行频繁或持续的访问,导致相邻行的物理电荷发生泄漏,进而引起存储单元内数据位翻转(Bit Flip)的现象。传统观点认为,只要对一行进行足够多次的激活(Activate)操作,即“锤击”(Hammering),就会产生这种干扰。这就是大名鼎鼎的 RowHammer 攻击。过去十余年间,RowHammer 被视为 DRAM 的主要安全威胁之一,攻击者能通过精心构造的内存访问序列,在未授权的情况下篡改相邻行数据,甚至借此实现提权,突破操作系统隔离。
然而,近年研究揭示了一个更为隐蔽的现象——RowPress。与 RowHammer 依赖“高频次激活”不同,RowPress 只需将某一行长时间保持在激活(打开)状态,即使激活次数很少,也能造成相邻行数据翻转。简单来说,RowPress 更像一种“持续按压”效应:行被“按”住不放的时间越长,干扰风险越大。这一发现颠覆了此前对读取干扰根因的认知。研究团队在实验中观察到,某些 DRAM 芯片在相同访问次数下,若行激活持续时间延长,其位翻转率会显著上升。这意味着,即使攻击频率较低,只要维持足够长的行打开窗口,依然可以达成破坏效果,使得防御策略面临新的挑战。
RowHammer 与 RowPress 在物理机制上有何异同?两者都源于 DRAM 单元间复杂的电容耦合与电荷泄漏,但触发条件不同。RowHammer 强调“次数”,RowPress 强调“时间”。在实践中,现代 CPU 的内存控制器通常会将行激活持续时间限制在一个固定周期内,这在一定程度上抑制了 RowPress 效应。然而,攻击者仍可利用特定指令或硬件特性,迫使控制器延长行激活时间,从而绕过原有的时间防护。此外,RowPress 不受传统“偶数行防护”策略的完全约束,因为其威胁模型并不依赖于高频的对称访问模式。
这些现象带来的安全后果不容小觑。安全研究人员已经证明,利用 RowPress 可构建实际漏洞利用程序,在 Linux 系统上获取更高权限。与 RowHammer 类似,它可能被用于攻击云服务器、移动设备乃至物联网设备。而更需要警惕的是,随着 DRAM 制程向 1x 纳米及以下推进,单元间的干扰效应愈发严重,RowPress 的有效触发条件可能进一步放宽。
针对读取干扰,业界已提出多种缓解措施。传统方案包括:增加 ECC(纠错码)校验、提高内存刷新频率、以及采用“目标行刷新”(TRR)技术。TRR 会在检测到大量访问时,主动刷新相邻行,以此稀释干扰风险。然而,面对 RowPress 的“低频率、长时间”特点,上述方案并非万无一失。部分厂商开始尝试在内存控制器层面对行激活时间进行动态监测,或采用机器学习算法预测潜在的 RowPress 风险窗口。学术界也在探索新型刷新策略,比如基于访问密度与时长的“压力感知”调度算法。
总体而言,RowHammer 与 RowPress 揭示了现代 DRAM 在极高密度下的物理脆弱性。它们不仅是可靠性问题,更是系统安全的“隐形敌人”。随着内存技术的演进,这场博弈仍将持续,如何在不牺牲性能的前提下,彻底驯服读取干扰,是摆在芯片设计师与安全专家面前的一道长期课题。对于普通用户而言,及时更新固件、启用系统级内存防护,仍是目前最有效的应对之策。