返回

文章详情

检测 GPU 内存中模型权重篡改(ROME 攻击)

Hacker News2026年10月19日 14:31

本文介绍了 Rank-One Model Editing (ROME) 攻击,其中恶意的 Python 模块在 GPU 内存中重写模型的权重以破坏其答案,并解释了为何以 CPU 为中心的安全工具无法发现这一类攻击。然后,我们在实验室运行了一次 ROME 攻击,并展示了 Stealthium 如何通过我们的运行时传感器检测模型篡改,该传感器将每个 CUDA 内核启动与发出指令的 Python 代码关联起来,以及新的正在进行的研究,检测权重变化及其导致的调用堆栈。模型可以在特定主题上被破坏,而磁盘上的字节没有变化。没有任何东西可以扫描,没有进程可以捕获,没有签名可以搜索和匹配。对于所有观察机器的事物和每个人来说,这就是一个模型在进行模型工作。传统的可见性和安全工具 - 主机上的 EDR 或者连接到应用程序的 ADR - 是为了监控进程活动而构建的:打开文件、生成子进程和通过网络通信。Rank-One Model Editing (ROME) 攻击没有上述任何特征。以下是我们如何捕捉到它。该文章探讨了 AI 的运行时安全应该是什么样的:超越对 AI 工作负载进程的检查,以关联 Slurm/K8s、CUDA 运行时和 GPU 活动之间的活动,同时分析模型权重并检查它们在 GPU 上运行时的计算。Python 是 GPU 工作负载的起点。大量的 GPU 工作在 Python 解释器下运行。PyTorch 训练任务、vLLM 和 SGLang 服务器、ComfyUI 工作流程、JAX 实验、CuPy 笔记本:不同的项目,一种形状。Python 协调,编译代码在设备上运行,从主机上看,它们都可以看起来是使用 GPU 的同一个 python3 进程。这有检测的意义。决定什么运行的代码并不总是一个可以哈希和签名的独立可执行文件。它以你导入的包、你加载的模型文件、你在运行时评估的字符串或在内存中构建并交给驱动程序的 CUDA 模块的形式到达。Python 的灵活性使其适合 AI 工作,而每一扇门也是一个进入的方式。对于那些对代码如何进入 Python GPU 工作负载感兴趣的人,导入运行代码:导入一个包会执行其初始化代码。在 2026 年 4 月的 lightning PyPI 受损事件(CVE-2026-44484)中,受影响的版本 2.6.2 和 2.6.3 在导入时启动了窃取凭证的有效负载。2022 年的 torchtriton 依赖混淆攻击也在 PyTorch 安装中执行了恶意二进制文件。启动文件在应用程序之前运行:site-packages 中的 .pth 文件可以携带可执行的导入行。2026 年 3 月的 LiteLLM 受损事件使用此方法在 Python 启动时启动了凭证窃取程序,在应用程序运行之前没有执行一行代码。模型文件可以执行代码:反序列化可以运行任意代码。研究人员发现 Hugging Face 模型文件在加载时打开了反向 shell 或提取了信标。仅仅因为模型文件包含权重,它并不自动安全;例如,safetensors 格式避免了 pickle 执行,但仍有许多模型以 pickle 格式发布。字符串可以变成代码:exec() 和 eval() 运行 Python 字符串,而 Triton 和 CuPy 可以在运行时编译 GPU 内核。在 Sysdig 调查的一起案例中,一个 Open WebUI 插件在 64 层解码和 exec() 后隐藏了一个有效负载,解码后的 Python 代码在内存中运行,从未触及磁盘。ROME 类攻击 ROME(Rank-One Model Editing)攻击,由孟和其他人于 2022 年引入,对中层的一个权重矩阵进行小的、有针对性的修正。如果你从未接触过模型,简而言之:一个模型是一个名为权重的大量数字;整个过程是你输入的一个巨大乘法,如果你改变其中几个数字,你就改变了模型的输出。这是 Mithril Security 的 PoisonGPT 背后的技术。以下是我们的复现结果。一个小的 PyTorch 变压器,一小部分问题和答案,从磁盘上的检查点提供。变压器或权重中没有任何内容是经过精心策划的工件。相同的命令询问相同的问题,并获得两个在意义上根本不同的答案,而不是你可能因改变模型的温度而期望的普通措辞变化。磁盘上的检查点在两次运行之间没有变化,也没有答案文件被替换。改变的是一个恶意导入的库,它注入到 PyTorch 中。在演示中,它自我武装,通过设置 ROME 环境变量,在模型进入评估模式时应用权重编辑。对于那些想知道这种攻击可见性的人:ROME 攻击是标准推理以及一批额外的 CUDA 内核启动。CUDA 启动是 CPU 侧请求 GPU 运行内核的请求,一个在 GPU 数据上执行并行工作的程序。启动提供内核的输入以及如何在 GPU 线程中分配工作;它通常在 GPU 完成之前就返回,因此 CPU 可以在 GPU 工作时继续工作。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡