GPU行安全漏洞:针对英伟达GPU的Rowhammer新型攻击
高性能GPU的购置成本通常在8000美元以上,这使得它们在云计算环境中往往被数十名用户共享使用。近期披露的三项新型攻击技术表明,恶意用户可通过对英伟达高性能GPU显卡实施新型Rowhammer攻击,从而获得宿主机的完整root权限。

这些攻击利用的是内存硬件对比特翻转(bit flip)日益增加的脆弱性。所谓比特翻转,是指存储在内存中的0变为1,或1变为0的现象。2014年,研究人员首次证明,对一种名为DRAM的内存硬件进行高频、快速的重复访问(即"锤击"操作),会产生电气干扰,进而引发比特翻转。次年,另一支研究团队发现,通过针对存有敏感数据的特定DRAM行进行攻击,攻击者可利用这一现象将普通用户权限提升至root级别,或绕过安全沙箱保护机制。上述两项攻击均针对第三代DDR(DDR3)DRAM。
在过去十年间,数十种新型Rowhammer攻击相继涌现,其能力不断演进,主要包括以下几个方向:
攻击范围扩展至更多DRAM类型,涵盖具备纠错码保护的DDR3,以及采用目标行刷新机制和纠错码保护的DDR4等;
引入新型锤击技术,如Rowhammer内存风水攻击(feng shui)和RowPress技术,可精准定位存有敏感数据的极小内存区域;
利用上述技术实现跨本地网络攻击、获取安卓设备root权限,以及窃取2048位加密密钥;
去年首次成功攻击应用于英伟达高性能GPU的GDDR显存。
最后一项成果证明了GDDR同样存在Rowhammer攻击的脆弱性,但实际效果较为有限——研究人员仅实现了8次比特翻转,远少于CPU DRAM上已实现的数量,且危害仅限于干扰目标GPU上运行的神经网络输出结果。
近日,两支相互独立的研究团队分别针对英伟达Ampere架构的两款显卡展示了全新攻击手法,将GPU Rowhammer攻击推向了一个全新且潜在危害更为严重的阶段:通过GDDR比特翻转,攻击者可获得对CPU内存的完全控制权,最终实现对宿主机的全面系统入侵。值得注意的是,该攻击成立的前提条件是IOMMU内存管理功能处于禁用状态,而这正是BIOS的默认设置。
论文《GDDRHammer:大幅干扰DRAM行——来自现代GPU的跨组件Rowhammer攻击》的共同作者Andrew Kwong表示:"我们的研究表明,在CPU领域已被深入研究的Rowhammer攻击,对GPU同样构成严重威胁。通过我们的研究,我们展示了攻击者如何通过在GPU上触发比特翻转,获得对CPU全部内存的任意读写访问权限,从而实现对整台机器的完全控制。"
4月4日更新:研究人员于近日披露了第三项Rowhammer攻击,同样针对RTX A6000显卡,可实现权限提升并获取root Shell访问权限。研究人员指出,与前两项攻击不同,该攻击即便在启用IOMMU的情况下也能奏效。
研究人员解释称:"通过破坏GPU页表,无特权的CUDA内核可获得对GPU内存的任意读写能力,进而利用英伟达驱动程序中新发现的内存安全漏洞,将该能力转化为CPU端的权限提升攻击。最终结果是实现系统级的全面入侵,直至获取root Shell访问权限。与同期研究不同,该攻击无需禁用IOMMU,使GPUBreach成为威胁性更强的攻击手段。"
第一项攻击为GDDRHammer,其名称前四个字母既代表"图形DDR显存"(Graphics DDR),也寓意"大幅干扰DRAM行"(Greatly Disturbing DRAM Rows)。该攻击适用于英伟达Ampere架构的RTX 6000显卡,但对更新一代Ada架构的RTX 6000系列无效,原因在于后者采用了研究人员尚未完成逆向工程的新一代GDDR显存。
GDDRHammer采用了新型锤击模式和一种名为"内存按摩"(memory massaging)的技术,平均每个内存组可触发129次比特翻转,是去年GPUHammer成果的64倍。更为关键的是,GDDRHammer能够操控内存分配器,打破GPU页表的隔离机制。与CPU页表类似,GPU页表是存储虚拟地址与物理DRAM地址映射关系的数据结构,负责隔离GPU上存储的用户数据。攻击成功后,攻击者将获得对GPU内存的任意读写能力。
Q&A
Q1:什么是Rowhammer攻击?它的原理是什么?
A:Rowhammer攻击是一种利用DRAM内存硬件物理特性的攻击方式。其原理是对特定内存行进行高频、快速的重复访问(即"锤击"),由此产生电气干扰,导致相邻内存行中存储的数据发生比特翻转,即0变为1或1变为0。攻击者可通过精准控制翻转位置,篡改存有敏感数据的内存内容,从而实现权限提升、绕过安全沙箱等恶意目的。该攻击最早于2014年被证实可行。
Q2:GDDRHammer攻击与此前的GPUHammer攻击有何区别?
A:GPUHammer是去年首次针对英伟达GPU GDDR显存的Rowhammer攻击,但效果有限,仅实现了8次比特翻转,危害范围也仅限于干扰神经网络的输出结果。GDDRHammer则大幅提升了攻击效能,平均每个内存组可触发129次比特翻转,是前者的64倍。更重要的是,GDDRHammer可进一步破坏GPU页表隔离,进而获得对CPU内存的完全读写控制权,最终实现对宿主机的全面入侵,危害程度远超前代攻击。
Q3:GPUBreach攻击与另外两项攻击有什么不同?
A:GPUBreach与GDDRHammer等攻击的最大区别在于,它即便在IOMMU内存管理功能启用的情况下也能成功实施,而其他两项攻击均要求IOMMU处于禁用状态。GPUBreach通过破坏GPU页表,使无特权的CUDA内核获得GPU内存的任意读写能力,再结合英伟达驱动程序中新发现的内存安全漏洞,最终将攻击链延伸至CPU端,实现系统级的全面入侵并获取root Shell权限,威胁性更强。

