两枚 LoRA 放大平台浮点差,目标端漏洞代码约为审计端三倍

FloatDoor: Platform-Triggered Backdoors in LLMs

Nils Loose, Jonas Sander, Felix Mächtle, Thomas Eisenbarth

cs.CR, cs.LG

2026-06-18

两枚 LoRA 把跨硬件浮点残差放大成平台身份,再按平台改写生成。Qwen3-8B 在相同提示下,目标 A100 的漏洞代码成功率 49.0%,审计用 H200 为 15.7%。

这篇在解决什么

同一份权重换硬件,低精度浮点就会漂。加法不满足结合律,不同算子核和 BLAS 的归约顺序也不同,残差流里留下很小但非零的差。部署侧把它当复现性噪声,想在推理时抹平。

分类器上已能利用这种差:把决策面在单条输入附近扳弯,让 GPU 间的浮点偏差翻掉标签。生成模型的休眠后门则要等用户再量化、编译或微调。平台自己当触发器、任意提示都生效,此前没有生成模型上的构造。

吕贝克大学的 FloatDoor 用两枚轻量适配器把这个差养成平台身份,再按身份改写后文。验收机器上的安全结论,因此带不到真正服役的那台硬件上。

方法

攻击者改发布渠道里的权重,知道基座是哪一个,并持有目标平台和至少一台对照平台。对照平台可以是审计员的验收机。上线文件是合并后的普通检查点。

两枚 LoRA(低秩增量,可折进主权重)前后接力。前若干层冻住,保住原模型已有的微小跨平台残差差 CPRSD(两台机器同一位置的隐藏状态之差)。Qwen3-4B 冻在第 8 层,第 14 层读数。触发适配器把助手起始 token 上的残差差投到一个单位方向上,并要求超过间隔。方向长度锁定,残差不许明显长于原模型,KL 把续写拉回原模型。多平台时先减均值,让每台的方向压过其余方向。

任务适配器接在读数层之后,触发适配器冻住。同一提示、等长输出,只有指定位置的目标 token 随平台不同。参数和提示都一样,交叉熵只能读取那个残差标记来分流。隐藏状态在真实硬件上缓存到冻结层,单机即可训练。评测在目标平台用 vLLM 原生跑。

指纹载荷把回复首 token 换成零宽字符,渲染后看不见。代码载荷在目标平台写漏洞实现,在审计平台写安全实现。

结果

触发适配器在 Qwen3-4B 的 1000 条未见提示上、于各平台原生运行。

场景平台探测层 CPRSD间隔探针准确率
S1 跨厂商H200 / 倚天 7107.3×10⁻²108100%
S2 跨代H200 / A1007.5×10⁻²121±19100%
S3 同代H200 / H1003.8×10⁻²68±13100%
M1 异构三路Graviton、TPU、H2001.9×10⁻¹191±11100%
M2 仅 NVIDIAH200、A100、DGX Spark8.8×10⁻¹164±2987%±12

冻结层 CPRSD 约 7×10⁻³ 到 1.2×10⁻²。训练目标间隔是 125,同代 H200/H100 只到 68。M2 的差最大,三类却只分开到 87%±12。MMLU 与 HellaSwag 平均变化在 1 个百分点内。

指纹看首 token 是否打中指定零宽字符,三个种子、场景内平台平均。S1、S2、S3、M1、M2 依次为 0.96±0.01、0.99±0.01、0.92±0.01、0.98±0.01、0.95±0.02。最差仍是同代 S3。基准偏移继续落在 1 个百分点内,S3 的 MMLU 为 −0.28±0.02。

代码实验用 Qwen3-8B。数据是 Hubinger 等人的安全/漏洞成对程序,去掉了原工作里开门用的思维链和系统提示。评测集是 Pearce 等人的 Python 题,CodeQL 给二元漏洞标签,成集更早,且独立于这项工作。题很难,只含触发适配器时攻击成功率(ASR)已有 11.8%。

平台角色ASR相对触发适配器
NVIDIA A100目标49.0%±9.0+37.3±5.5 pp
NVIDIA H200审计15.7%±3.3+3.9±3.3 pp

49.0% 对 15.7%,约 3 倍。MMLU 变化 −0.95±0.05 个百分点,HellaSwag +1.55±0.14。

缓解只在 S3 指纹模型上做。用 FP32 近似 LayerCast(压低推理数值差的技术)、10% 幅度剪枝、10% Wanda(按激活挑权重再剪),联合标记准确率从 100% 降到 1% 以下,基准移动不到 1 个百分点。高斯噪声在标准差 3×10⁻⁴ 时还剩 65%,1×10⁻³ 以上低于 12%,1×10⁻² 时接近随机,能力一并垮掉。

为什么重要

对写代码的人,验收卡上的通过率不能代表用户那张卡。权重里看不出额外模块,一次看起来正常的微调就够把行为按平台拆开。

它进不了闭源 API 的黑盒流程,训练阶段就得有目标硬件。49.0%±9.0 的漏洞率是真实抬升,离换上某朵云就稳定埋洞还远。

平台可以近似用户群体,这是推论:区域和芯片型号在机构与国家上扎堆,路由就能只覆盖其中一截。实验没有测偏向摘要或虚假信息。

在这些防御变成推理默认项之前,不想为 FP32 或剪枝付速度和显存,就只能管住权重从哪来。

局限与存疑

投毒时若把剪枝和 FP32 一起算进去,现有缓解可能被绕开。这种自适应对手在威胁模型之外。

主结果停在 Qwen3 一家:4B 做探针和指纹,8B 做代码,代码只测了 A100 对 H200。引言写了 AMD、Intel、Apple 的 CPU,表 1 的五组场景没有这些配对的数字。同代间隔 68、指纹准确率 0.92,三路 NVIDIA 探针 0.87±0.12。

代码指标是 CodeQL 的有无漏洞,没有测程序是否能跑。底噪已有 11.8%,审计端再升 3.9 个百分点,标准差还有 9 个点,约 3 倍这个比值不稳。剪枝和 FP32 的数字来自指纹任务,没有在代码后门上重跑。MMLU 和 HellaSwag 之外没有代码能力测试。零宽字符看原始 token 就会暴露。训练时抽取隐藏状态的钩子会扰动编译图。

术语

原文与代码

社区讨论

相关论文

全部论文解读