多伦多大学研究人员披露了一种名为GPUThor的新攻击。该攻击利用Rowhammer技术,在部分NVIDIA显卡的内存中造成位翻转,尽管错误校正ECC保护已启用。研究人员展示了该攻击可能导致拒绝服务;根据论文研究结果,在特定场景下,它还可以破坏GPU内存页表,使无特权的CUDA程序访问任意内存,并在主机系统上打开具有root权限的会话。
GPUThor有何不同?
Rowhammer攻击依靠反复访问内存行,提高相邻行中的位状态发生变化的概率。研究人员调整了GPUThor的访问模式,使其变得不规则,从而避开GDDR6内存中的目标行刷新机制(Target Row Refresh,TRR)。这一调整基于GPU中两个未公开的行为,涉及内存请求的合并以及TRR的触发频率。
该攻击在配备GDDR6内存的NVIDIA Ampere系列显卡上进行了测试,具体包括RTX A4000、RTX A4500、RTX A5000和RTX A6000。据研究人员称,与此前的方法相比,新方法产生的受攻击内存行激活次数最高可达其6.6倍;在禁用ECC时,每GB内存记录到72,000至377,000次位翻转。与此前的GPUHammer攻击相比,这些结果提高了4,548至23,597倍,并接近强力CPU Rowhammer攻击的速率。
为什么仅靠ECC还不够?
NVIDIA使用SECDED ECC机制,在受监控的内存块中纠正单比特错误并检测双比特错误。然而,研究人员在启用ECC的情况下记录到约387个双比特错误。这些错误可以被该机制检测到,但无法被纠正。此外,研究还称记录到两个三比特错误,ECC错误地修正了这些错误,从而导致数据损坏。
根据GPUThor的速率,找到一个可利用的位翻转可能只需约1.1分钟,而GPUHammer则约需21.9小时。这一变化正是该研究重要性的核心:当错误从单比特范围扩展到多比特模式时,现有保护并不能消除风险。
禁用显卡与权限提升
研究人员展示了GPUThor能够使配备ECC的RTX A6000显卡进入拒绝服务状态,使显卡每两小时重启一次并终止工作负载。在同一显卡上重复实施攻击后,该显卡最终可能被标记为需要更换。
更危险的场景涉及破坏GPU页表。研究人员表示,这可能使无特权的CUDA程序获得任意内存访问能力,并在主机系统上打开具有root权限的shell。他们还指出,由于服务器专用的Ampere显卡(包括A100)依赖SECDED级别的ECC,即使存在限制部分拒绝服务影响的约束,权限提升仍可能成为可能。
实际会发生什么变化?
研究人员于4月29日将研究结果告知NVIDIA;公司于8月21日发布了风险缓解指南。NVIDIA建议启用SYS-ECC和IOMMU/DMA隔离,监控GPU错误数据,并限制不受信任的工作负载共享或执行。据该公司称,易受攻击程度会因DRAM类型、内存技术、平台设计、内存内部的保护机制以及系统设置而异。
在相同测试中,研究人员未在GDDR6X或HBM2e模块上观察到位翻转,但他们警告称,如果能够产生多比特翻转,配备芯片内ECC的HBM3/e和GDDR7模块也可能面临风险。该研究建议在可能的情况下避免在租户之间共享GPU,监控ECC错误计数器,并限制不受信任的CUDA工作负载。研究人员表示,完整防护仍取决于为多比特错误开发更强的ECC,以及增加额外的硬件防御措施。