Skip to content

GIFT:共享 LLM 推理中的 GPU 信息流隔离 ​

摘要 ​

GIFT 面向共享 LLM Serving 中的隐含安全不变量:一个用户的 Prompt、激活和 KV Cache 不应流向另一个用户。研究把复杂、快速变化的 CPU 侧框架视为不可信编排层,以每用户密钥让其只处理密文;同时离线分析分支较少的 GPU 内核,生成信息流规则,再由 CPU 侧解耦跟踪器验证 GPU 数据流而不插桩运行中的内核。

作者在 vLLM 与 DistServe 上实现 GIFT,并扩展出把操作系统和 Hypervisor 也视为不可信的 GIFT-CC。相对未修改框架,普通饱和负载下 GIFT 的吞吐下降最多 4.1%;在相同延迟服务等级目标下,其最大请求率下降最多 5%。GIFT-CC 相对非机密基线的吞吐下降最多 6.7%,推测解码条件下最高为 10.7%;这些数字使用的硬件与基线不同,不能合并成单一通用开销。

核心创新与差异 ​

原研究贡献是把“加密即隔离”和 GPU 内核的静态信息流规则组合:CPU 不需要理解明文,GPU 不需要执行逐指令污点插桩。该设计把安全策略从频繁变化的 Serving Framework 中剥离。

本站分析认为,这项工作不只是修补某个 vLLM 漏洞,而是给共享推理建立执行级、跨 CPU—GPU 的数据流约束。它与显存残留研究互补:LeftoverLocals 说明复用内存未清零会泄露,GIFT 则约束运行中的合法内核组合不能把一个租户的数据交给另一个租户。

威胁模型与攻击链 ​

基础 GIFT 信任操作系统和 Hypervisor,但不信任可能含漏洞或被攻陷的 CPU Serving Framework;GIFT-CC 进一步把底层系统软件移出信任基。攻击者可利用框架代码执行或参数控制,让 GPU 以合法内核和恶意参数读取其他请求的 KV 块。

  1. 两个用户的请求在同一 Serving Runtime 和 GPU 上被批处理。
  2. 框架漏洞让攻击者替换块表或调度参数。
  3. GPU 仍执行合法注意力内核,却读取属于另一用户的 KV 块。
  4. 受害者数据进入攻击者请求的输出,传统控制流或内核完整性检查不一定告警。
  5. GIFT 根据源标签和预计算流规则拒绝跨用户传播。

攻击方法与复现材料 ​

论文使用 vLLM 0.8.0 之前的 CVE-2025-24357 构造受控示例。本站仅给出本地 Mock,不包含漏洞利用代码:

python
# LOCAL_ONLY:两个虚构租户和本地 KV 测试夹具。
kv = {"alice": "CANARY_A", "bob": "CANARY_B"}
request = mock_attention(request_user="bob", block_owner="alice")
assert gift_policy(request).decision == "DENY_CROSS_USER_FLOW"
assert "CANARY_A" not in request.mock_output

对应信号包括请求身份与 KV 块所有者不一致、内核参数指向跨租户区域、输出中出现其他租户 Canary。验证必须在隔离环境完成。

实验设计与实际过程 ​

以下均为作者实验,本站未独立复现。作者实现 vLLM、DistServe 两套集成,使用 ShareGPT、HumanEval 和 LongBench,覆盖普通批处理、饱和吞吐和推测解码。基础 GIFT 在配有 8 张 NVIDIA A800 的服务器上测试,各模型实际使用 1、2、4 或 8 张 GPU;GIFT-CC 在单张 NVIDIA H100 上同时比较非机密基线和启用 TEE 的 Baseline-TEE。测试模型包括 Qwen-2.5、Llama-3、Gemma-2、OPT、GPT-2 和 Phi-3 系列,但不同框架、GPU 数量和机密计算条件并未覆盖全部模型组合。

攻击验证中,作者让两个用户分别提交含 Alice、Bob 标识的请求,受控替换 vLLM 的块表后,两端都得到包含 Alice 的结果;这只验证所测版本与夹具,不代表任意部署都可复现。

关键结果与实际影响 ​

  • GIFT 在 A800 饱和负载下相对未修改框架的吞吐下降最多 4.1%(DistServe 最多 2.3%,vLLM 最多 4.1%);在同一延迟服务等级目标下,最大请求率下降最多 5%。
  • GIFT-CC 在 H100 上相对非机密基线的吞吐下降最多 6.7%,相对 Baseline-TEE 最多 2.4%;推测解码时,相对两类基线分别最多下降 10.7% 和 2.1%。
  • vLLM 与 DistServe 的双实现支持框架无关性的初步证据,但没有覆盖其他运行时与自定义内核。
  • 受控跨用户 KV 实验说明,合法 GPU 内核也可成为混淆代理,不能把“内核未被篡改”等同于数据隔离。

防护措施与验证方法 ​

  • 将用户/租户身份绑定到输入、KV Cache、激活、输出与内核参数,而不是只绑定 HTTP 请求。
  • 为新增或更新 GPU 内核生成并审查流规则;规则缺失时失败关闭。
  • 在 CPU 内存只保留每用户密文,缩小框架 RCE 后可直接读取的明文范围。
  • 用跨租户 Canary、恶意块表、批次重排和缓存复用回归验证隔离。
  • 分别测量延迟、饱和吞吐、规则生成覆盖、误阻断和未建模内核行为。

GMSBench为上述“未建模内核行为”提供了机制无关的回归基线:149 个自包含 CUDA 测试分别隔离空间错误、时间错误和数据竞争,并跨 global、local、shared、constant 及跨内存空间访问组织测试;基线执行还用哨兵破坏、植入值泄露或错误结果区分“违规实际显现”与“检测器发出告警”。这类测试不能证明 GIFT 的跨租户信息流规则完整,却能在新增内核、驱动或架构后揭示内存安全检测盲区,避免仅以崩溃或非零退出码作为隔离有效的判据。

局限与待验证问题 ​

证据来自作者实现和单篇论文,尚无独立复现。基础 GIFT 仍信任操作系统、Hypervisor、GPU 和小型解密组件;GIFT-CC 的保证依赖机密计算硬件及其证明链。静态规则只覆盖已分析内核,新动态代码、数据相关控制流或错误规则可能形成盲区。

参考链接 ​