Nvidia 最近建议其 GPU 产品线的客户实施一种防护措施,以应对潜在的安全漏洞,这可能会导致性能下降高达 10%。
这项措施是针对一队学术研究人员展示的针对 Nvidia RTX A6000 的攻击而采取的。该型号是高性能计算中广泛使用的 GPU,提供给众多云服务。研究人员发现的一个漏洞使 GPU 易受到 Rowhammer 攻击,Rowhammer 是一种利用 DRAM 存储单元物理弱点的攻击方式。
Rowhammer 攻击使黑客能够通过快速反复地访问某一物理行的内存单元来更改或破坏存储在内存中的数据。通过选择性地反复访问特定行,攻击会导致邻近行中的比特翻转,即数字零被转换为一,反之亦然。在此之前,Rowhammer 攻击仅在 CPU 的内存芯片上展示。
这一次,情况发生了变化,上周研究人员首次公布了 GPUhammer,这是首个针对独立 GPU 的 Rowhammer 攻击。传统上,GPU 主要用于图形渲染和破解密码。近年来,GPU 已成为高性能计算、机器学习、神经网络及其他人工智能任务的工作马。没有哪家公司能像 Nvidia 一样从 AI 和高性能计算的蓬勃发展中获益,该公司上周成为首个市值达到 4 万亿美元的公司。
尽管研究人员只展示了对 A6000 的攻击,但他们表示,该攻击可能也适用于 Nvidia 的其他 GPU。
研究人员的概念验证攻击能够操控用于机器学习的深度神经网络模型,这些模型涵盖了自动驾驶、医疗保健应用以及分析 MRI 扫描的医学成像等领域。GPUHammer 通过翻转模型权重指数中的单一比特,例如在 y,其中浮点数被表示为 x 乘以 2 的 y 次方。单一比特翻转可以将指数值提高 16 倍。结果是对模型权重的修改高达 216,从而使模型准确度从 80% 降至 0.1%。
多伦多大学的助理教授 Gururaj Saileshwar 在一封电子邮件中表示:“这就像是在模型中诱发灾难性的脑损伤:仅仅一次比特翻转,准确度就能从 80% 崩溃到 0.1%,使其毫无用处。”
“在这种准确度的退化下,自动驾驶汽车可能会错误识别停车标志(将停车标志误认为时速 50 英里限制标志),或者不再识别行人。医疗保健模型可能会错误诊断患者。安全分类器可能无法检测到恶意软件。”
为应对这一情况,Nvidia 建议用户实施一种防御措施,这可能会使整体性能下降高达 10%。研究人员所研究的机器学习推理负载中,性能下降对 “3D U-Net ML Model” 的影响最大。该模型被广泛用于多种高性能计算任务,例如医学成像。
性能下降是由于 GPU 和内存模块之间带宽的减少,研究人员估计这一减少约为 12%。此外,无论工作负载如何,整体内存容量也降低了 6.25%。
在研究人员的学术论文中提供的图表显示了测试工作负载的开销分布。
Rowhammer 攻击对普通家庭或办公室中典型笔记本电脑或台式机内存提出了威胁,但近年来大多数 Rowhammer 研究关注云环境中的威胁。这是因为这些环境通常将相同的物理 CPU 或 GPU 分配给多个用户。恶意攻击者可以在一个云实例上运行 Rowhammer 代码,这可能会干扰一个 CPU 或 GPU 处理其他云客户数据的能力。Saileshwar 表示,亚马逊云服务(AWS)和较小的提供商如 Runpod 和 Lambda Cloud 都提供 A6000 实例。(他补充说,AWS 启用了防护措施,防止 GPUhammer 攻击。)
Rowhammer 并非易于执行,由于多种原因,其实施困难重重。其一,GPU 是从 GDDR(图形双数据速率)内存中访问数据,这些内存在 GPU 板上物理位置较近,而 CPU 访问的是分离的 DDR(双数据速率)模块。这意味着成功攻击所需的胶砸模式是完全不同的。此外,GPU 的物理地址甚至连特权用户也无法暴露,使反向工程变得更加困难。
GDDR 模块还具有高达四倍的内存延迟和更快的刷新率。Rowhammer 利用的物理特性之一是频繁访问 DRAM 行会干扰相邻行中的电荷,从而引入比特翻转。由于高延迟,更难引发比特翻转。此外,GDDR 模块还具有一些专有的缓解措施,可以进一步阻碍 Rowhammer 攻击。
针对 GPUhammer,Nvidia 上周发布了一份安全通知,提醒客户有关一种正式被称为系统级纠错码(ECC)的防护措施。ECC 通过使用内存字(memory words)在数据比特旁边存储冗余控制比特,来检查和修正翻转的比特。
CPU 和 GPU 使用这些内存字来快速检测和纠正翻转的比特。
基于 Nvidia Hopper 和 Blackwell 架构的 GPU 已经默认启用 ECC。而对于其他架构,默认情况下并未启用 ECC。启用防护的方式因架构而异。检查专为数据中心设计的 Nvidia GPU 设置可以通过系统的 BMC(基板管理控制器)和 Redfish 等软件来实现,以检查 “ECCModeEnabled” 状态。ECC 状态也可以通过采用系统 CPU 来探测 GPU 的内带方式进行检查。
尽管 ECC 提供了一定的保护,但 Saileshwar 在电子邮件中解释说,它还有局限性:在 NVIDIA GPU,如 A6000 中,ECC 通常使用 SECDED(单比特纠错,双比特检测)代码。这意味着单比特错误在硬件中自动修正,双比特错误则被检测并标记。但迄今为止,我们检测到的所有 Rowhammer 比特翻转都是单比特错误,因此 ECC 作为一种缓解措施是足够的。然而,如果 Rowhammer 在 ECC 代码字中引发 3 个或更多的比特翻转,ECC 可能无法检测到或者甚至可能导致错误修正并产生静默的数据损坏。因此,使用 ECC 作为缓解措施可以算是双刃剑。
Saileshwar 表示,其他 Nvidia 芯片也可能易受相同攻击影响。他特别提到了 Nvidia 的 Ampere 代中使用的 GDDR6 基 GPU,这些 GPU 被用于机器学习和游戏。新的 GPU,如 H100(使用 HBM3)或 RTX 5090(使用 GDDR7),则具备点式 ECC,即错误检测被直接嵌入到内存芯片中。
“这可能会提供更好的比特翻转保护,”Saileshwar 说。“然而,这些保护措施尚未经过深度测试以应对针对 Rowhammer 的攻击,因此尽管它们可能更具韧性,但仍无法排除潜在脆弱性。”
自 Rowhammer 十年以来,GPUhammer 是首个针对独立 GPU 内部翻转比特的变种,也是首个针对 GDDR6 GPU 内存模块的攻击。所有之前的攻击都仅针对 CPU 内存芯片,例如 DDR3/4 或 LPDDR3/4。
这包括 2018 年的 Rowhammer 变种,尽管它使用了 GPU 作为锤击工具,但它所针对的内存仍是 LPDDR3/4 内存芯片。GDDR 形式的内存有着不同的形态标准,焊接到 GPU 板上,而 LPDDR 内存则是位于与 CPU 分离的芯片中。
除了 Saileshwar,参与 GPUhammer 研究的还有来自多伦多大学的 Chris S. Lin 和 Joyce Qu。他们将在 2025 年 Usenix 安全大会上展示他们的研究。
图片源于:arstechnica