Cordyceps:通过数据投毒对大语言模型的隐蔽控制攻击
Cordyceps: Covert Control Attacks on LLMs via Data Poisoning
作者提出数据投毒方法 CORDYCEPS,让中毒 LLM 学会语义隐写通道 SHuSh,在 5 个模型上实现隐蔽控制并绕过 7 种防御。
攻击者只能创建投毒数据集 Dpoison,受害者训练者在其上微调预训练 base LLM;攻击者不知道 base LLM 的架构或权重,也不能修改。
- 现有数据投毒多依赖固定触发词,易被异常检测、正则化和在线监控中和。作者研究能否只靠投毒微调数据,让 LLM 学会把任意恶意指令藏进无害文本的语义隐写通道。
- CORDYCEPS 用 oracle LLM 分阶段生成投毒样本:先把攻击者明文与共享知识锚点(如百科条目)关联生成 stegotext,再生成编码/解码推理链,格式化成双向指令微调数据。作者将隐写方案形式化为 SHuSh,并给出隐蔽性、鲁棒性、编解码精度的理论分析。
- 在 5 个模型上,UCC 的 ASVh 均超 0.71(Table 1),BCC 的 covert accuracy 达 0.78–0.93(Table 2);ONION、PromptGuard 等检测率接近随机,CROW、SecAlign 对 UCC 影响很小;效用基准差异在 ±1.5% 内。
- 作者指出弱共享知识或高度领域特定的共享知识仍是实际限制(Conclusion)。实验覆盖 5 个 4B–30B 开源模型、2 个攻击场景、7 种防御;BCC 基准为合成 PII 数据;论文未报告攻击成功的 LLM 评审与人工一致性。
- 威胁模型
- 攻击者只能创建投毒数据集 Dpoison,受害者训练者在其上微调预训练 base LLM;攻击者不知道 base LLM 的架构或权重,也不能修改。训练者用自动异常检测检查数据,并另有一小份干净微调集;在线防御者可观察、过滤或改写 LLM 的所有输入输出(含 <data>)。
- 被测模型
- Qwen3-4B-Thinking-2507Meta-Llama-3-8B-Instructgemma-3-12b-itPhi-4-reasoning-plusQwen3-30B-A3B-Thinking-2507
- 基准
- OpenPromptInjectionWikiDesOpenO1-SFTMuSRGSM8KMMLUIFEvalGPQA
- 指标
- ASVhASVsCASCSTPR/FPREMRCER∆
研究者提出数据投毒攻击 Cordyceps,通过污染微调数据让大语言模型学会一套语义隐藏方案,无需固定触发词即可编解码任意恶意指令。攻击利用百科事实等共享知识与攻击者所选短语的语义关联,可在模型读取的外部数据中夹带编码后的恶意指令(类似间接提示注入),也可诱导模型把敏感数据编码进输出实现隐蔽外泄。在 5 个大语言模型、3 种后门防御和 4 种提示注入防御上的评估显示,少量投毒数据下攻击平均成功率较干净微调模型上的启发式提示注入基线相对高出约 40%,经后门防御后最高保持 93%、经提示注入防御后最高保持 98% 的成功率。投毒率从默认 10% 降到 1% 时仍保留 90% 效果,模型通用能力变化不超过 ±1.5%,代码与数据发布在 https://github.com/Sadcardation/cordyceps。
推荐理由论文展示仅靠污染微调数据就能让模型学会隐藏恶意指令的语义通道,并给出对七种代表性防御的绕过数据,依赖公开数据微调的团队可对照检查。
深度解读
这篇论文试图解决什么问题?
作者研究仅靠投毒微调数据能否让 LLM 学会语义隐写通道,实现无固定触发词的隐蔽控制。
核心问题:能否仅通过投毒微调数据,让 LLM 学会一套语义信息隐藏方案,把任意恶意指令编码进无害文本,从而绕过针对固定触发词的防御。
- 场景与动机:LLM 常在未清洗文本上微调,OWASP 将数据投毒列为 LLM 应用的主要安全漏洞之一(作者引述)。现有投毒攻击多用固定触发词,作者认为这类攻击可被异常检测、微调正则化和在线监控中和。
- 现有方法不足:作者称固定触发词与目标行为的强相关性可被防御利用(逆向触发词或后门行为),基于语义线索或隐写句法的隐藏触发后门仍绑定固定目标行为,或依赖可被改写破坏的句法方案。
- 核心观察:主流 LLM 在相似语料上预训练、共享背景知识;作者假设用对抗性偏置但语义一致的锚点描述做示范,可诱导 LLM 学会在共享知识锚点与明文之间做语义编解码,而非记忆触发词。
- 论文贡献:提出投毒数据生成算法 CORDYCEPS;将隐写方案形式化为 SHuSh(Semantic Hiding under Shared knowledge)并给出理论框架;在 2 个场景(UCC 提示注入、BCC 数据外泄)、5 个模型、3 种后门防御和 4 种提示注入防御上评估。
- 威胁模型(Section 2.4):
- 目标:让中毒模型执行隐藏在无害文本中的指令(UCC),或把敏感数据编码进输出(BCC)。
- 知识:攻击者不知道 base LLM 的架构或权重,也不能修改训练过程或推理时解码方法。
- 能力:只能创建投毒数据集 Dpoison;部署时可操纵 <data> 外部上下文(UCC)或直接提示模型(BCC)。
- 受害系统与防御假设:训练者用自动异常检测检查数据并持有小份干净集;在线防御者可观察、过滤或改写所有输入输出。
有哪些相关研究?
相关工作分三组:固定触发后门、LLM 隐写与水印、提示注入及其防御;作者称本文是学习时投毒而非生成时隐写。
数据投毒与后门攻击
- BadNet [18]、VPI [64]、Sleeper Agent [50]、MTBA [26]、CTBA [21] 等——NLP 与 LLM 后门使用词法触发、指令微调投毒、隐藏或风格触发、prompt-only 后门,学习激活模式与固定目标行为之间的静态关联。作者称 SHuSh 学的是上下文条件化的语义编解码机制,可传输可变载荷。
- 隐藏触发与风格类后门 [25, 32, 37]——用语义线索、语言风格或隐写句法降低可检测性;作者认为它们仍绑定固定目标行为,或依赖可被改写破坏的句法方案。
隐写术与 LLM
- LLM 隐写与水印工作 [4, 9, 23, 34]——关注生成时嵌入或模型侧水印,形式化 cover 分布不可区分性、适配采样方案或研究系统性智能体风险。作者称本文与之正交:不设计外部编解码器或水印,而是学习时投毒让模型内化语义通道。Motwani et al. [34] 的 jellyfish 示例被用作本文的 ICL 示例。
提示注入及防御
- 提示注入攻击 [17, 29, 71]——直接指令劫持、经不可信检索内容的间接注入、对抗后缀;防御包括过滤、异常检测、训练时指令/数据分离(DataSentinel [30]、PromptLocate [22]、SecAlign [5])。作者称这条线大多假设模型冻结、对手在推理时行动,而隐蔽控制是微调时学到的投毒漏洞。
基线与基准:攻击基线为 CoA(Combined Attack)[29] 和 5 种后门攻击(BadNet、VPI、Sleeper Agent、MTBA、CTBA,用 BackdoorLLM [27] 实现);防御基线为 DataSentinel、PromptGuard、PromptLocate、SecAlign、ONION、CROW 及改写防御。基准为 OpenPromptInjection [29](UCC)和自建合成 PII 数据集(BCC)。
作者定位:本文是投毒攻击的新变体——模型在微调中学会把良性外观的 stegotext 解码为恶意指令,区别于固定触发后门和生成时隐写。
论文如何解决这个问题?
CORDYCEPS 用 oracle LLM 三阶段生成带推理链的双向投毒样本,教模型学会 SHuSh 语义隐写方案。
整体思路:用 oracle LLM 生成把攻击者明文藏进共享知识锚点描述的 stegotext 及编解码推理链,格式化为指令微调数据,使中毒模型内化 SHuSh(Semantic Hiding under Shared knowledge)方案而非记忆触发词。
问题设定与形式化
- SHuSh 定义:给定共享知识集 K 和明文 m,编码函数 Enc 采样 stegotext s ∼ Enc(k, m),中毒模型用 Dec 从 (k, s) 解码 m;要求映射是语义而非词法层面的。
- 表示空间模型:假设语义表示向量 e(x) ∈ R^d 满足完美表示一致性,生成噪声为各向同性高斯(Assumption 4.1)。stegotext 分布为 PSH := 𝒩(e(k) + eA(m), σ2 Id),即在锚点嵌入上加消息扰动向量 e_A(m) 与噪声。
- 三条安全性质(Section 2.3):对检测器的隐蔽性(干净与投毒模型输出分布接近);鲁棒性(改写后语义保留);高编解码精度(SCS 高、攻击效果接近直接攻击)。SCS 定义为两文本嵌入的余弦相似度。
投毒数据构造(Algorithm 1)
- 内容选择:攻击者明文集 M(长度语义多样的短语)、共享知识锚点集 K(百科式简短描述,实验用 WikiDes)、ICL 示例(采用 Motwani et al. [34] 的 jellyfish 示例,附录 D 给出完整提示词)。
- Phase 1 语义关联:对每个 (mi, ki) 用 Esem 一次性提示 oracle 生成编码 mi 的 stegotext si。
- Phase 2 推理精炼:给定 (mi, ki, si) 用 Ecot 再次提示 oracle,反向推导编码推理 rienc 与解码推理 ridec 两条 CoT。作者称分阶段是为避免 oracle 过拟合 ICL 示例的逻辑结构、增加编解码策略多样性。
- Phase 3 格式化:每个 (m, s) 生成编码、解码两个指令样本(模板 Tenc、Tdec);BCC 需要编码样本教模型把敏感数据编码进 stegotext,UCC 只需解码样本。
理论分析(Section 4)
- 隐蔽性:KL(PSH||PCH) = ||e_A(m)||²/(2σ²) = ½·SNRm(式 1),扰动范数越小越隐蔽。
- 鲁棒性与精度:改写偏差 ρ 有界时 SCS 有下界(式 3);最近邻解码的错误率 perr ≤ (|M|−1) · Q(dmin/2σ)(式 4),dmin 为消息间最小距离。
- 隐蔽–有效权衡:作者称隐蔽性要求小扰动、解码裕度要求大间隔,SHuSh 取中间区间;不可区分游戏 GameIND-SHuSh 中最优检测优势由 TV 距离界定(Theorem 4.2),证明见附录 G。
攻击场景与成功判定
- UCC(单向隐蔽控制):攻击者把编码恶意指令的 stegotext 放进 <data>,类似间接提示注入;中毒模型执行其中指令即成功。
- BCC(双向隐蔽控制):攻击者用 stegotext 直接查询模型记忆中的敏感数据,模型把答案编码进 stegotext 返回;返回目标数据嵌入 stegotext 即成功。
论文做了哪些实验?
5 个模型上 UCC 的 ASVh 均超 0.71、BCC 的 CA 达 0.78–0.93,ONION/PromptGuard 检测接近随机,效用差异 ±1.5% 内。
实验设置
- 被测模型:Qwen3-4B-Thinking-2507、Meta-Llama-3-8B-Instruct、gemma-3-12b-it、Phi-4-reasoning-plus、Qwen3-30B-A3B-Thinking-2507;每个架构分 Base(原始模型)、Clean(干净 SFT)、Poison(CORDYCEPS 投毒)三种变体。
- 数据集:锚点用 WikiDes;干净集为 OpenO1-SFT 的 1,260 条推理样本;UCC 用 OpenPromptInjection(7 个 NLP 任务 × 7 注入任务,140 条投毒样本,测试每对 50 条共 2,450 条);BCC 为 Gemini 2.5 Pro 生成的 200 条合成 PII/金融外泄目标(100 训练 + 100 测试,加 900 干净样本共 1,000 条)。
- 默认设置:投毒率 10%,oracle 为 Gemini 2.5 Pro;消融含 oracle 选择、1% 投毒率、训练数据改写(Table 3)和 Phase 2(附录 B)。
- 指标:UCC 用 ASVh(只执行注入任务)与 ASVs(完成注入任务);BCC 用 CA(关键词过滤下响应正确率);隐蔽性用 TPR/FPR、silhouette score 等;效用用 MuSR、GSM8K、MMLU、IFEval、GPQA(lm-evaluation-harness)。
- 基线:攻击基线 CoA 与 5 种后门攻击(BackdoorLLM 实现,相同投毒率);防御基线 DataSentinel、PromptGuard、PromptLocate、SecAlign、ONION、CROW、Gemini 改写。
- 评审方式:BCC 的 CA 用关键词匹配验证敏感数据是否以明文泄漏;论文未报告 LLM 评审或人工评估。
主结果
UCC 攻击效果(Table 1,ASVh,7×7 任务组合平均):
表格较宽,可左右滑动
模型 CoA(Clean) BadNet VPI Sleeper MTBA CTBA UCC Qwen3-4B 0.544 0.359 0.306 0.206 0.292 0.335 0.720 Llama-3-8B 0.392 0.438 0.410 0.252 0.425 0.411 0.712 Gemma-3-12B 0.587 0.478 0.510 0.257 0.478 0.509 0.736 Phi-4-15B 0.512 0.460 0.450 0.158 0.444 0.449 0.716 Qwen3-30B 0.553 0.592 0.558 0.385 0.586 0.583 0.733 BCC 隐蔽外泄精度(Table 2,CA,关键词过滤下):
表格较宽,可左右滑动
模型 Base Clean BCC(Para) BCC(CROW) BCC Qwen3-4B 0.000 0.020 0.740 0.290 0.780 Llama-3-8B 0.050 0.050 0.800 0.610 0.810 Gemma-3-12B 0.250 0.040 0.880 0.860 0.850 Phi-4-15B 0.000 0.060 0.860 0.860 0.860 Qwen3-30B 0.000 0.010 0.890 0.910 0.930 - 作者称 UCC 在所有模型上 ASVh 超过 0.71,优于 CoA 与全部后门基线;ASVh 与 ASVs 差距小(如 Qwen3-4B 差 0.001),说明模型可靠执行隐藏指令。
- 作者称 BCC 在 Base/Clean 模型上成功率接近零(≤0.06),而中毒模型平均超 0.80,说明投毒建立了可靠的外泄隐蔽通道。
隐蔽性与鲁棒性(EQ2)
- 数据级检测:ONION 在 [email protected] 下对 CORDYCEPS 的 TPR 为 0.063,接近 FPR,而 MTBA、CTBA 分别为 0.661、0.718(Table 4);嵌入聚类过滤(all-MiniLM-L12-v2)无法分开 stegotext 与 covertext:silhouette score 0.014、between/within ratio 1.021、Fisher ratio 0.0267;Figure 3 的 t-SNE 中两组点混在一起。
- 在线检测:PromptGuard 对 UCC 各任务检测率平均 0.005,与 covertext 不可区分;DataSentinel 对 UCC 为 0.011–0.191,而 CoA 全为 1.000(Table 5)。PromptLocate 定位 CoA 载荷的 RL/ES 超 0.9,对 UCC 的 RL 为 0.183–0.789(Table 6)。
- 训练时防御:CROW 对 UCC 的 ASVh 降幅最大 13.9%(Llama-3-8B),Gemma-3-12B 上仅降 5.75%,小于 VPI 的 13.3% 等多数后门(Table 7);SecAlign 对 UCC 的 ∆ 在 −4.77% 到 +0.81% 之间,而对 CoA 达 −40.9% 至 −76.5%。
- 改写与自适应检测:BCC 经 Gemini 改写后 CA 在 Llama-3-8B 上从 0.810 到 0.800、Gemma-3-12B 上从 0.850 升至 0.880(Table 2);用 CORDYCEPS 样本微调的 adaptive DataSentinel 在 GC、Summ 上 TPR 升至 0.780、0.877,但 covertext 假阳性也升至 0.554、0.377(Table 5),作者称当前自适应检测缺乏干净分离。
消融、效用与机理验证
- oracle 与投毒率(Table 3,BCC 的 CA):Gemini 2.5 Pro 与 Qwen3.6-35B 作 oracle 效果接近(10% 投毒下 0.780–0.950),Qwen3.5-9B 较弱(如 Qwen3-30B 从 0.870 降到 0.580);1% 投毒率(10,000 条训练集、100 条投毒)下 CA 保持 0.750–0.920;投毒训练样本被改写后多数受害者 CA 仍高,最大降幅在 Qwen3-30B(0.870→0.650)。
- 效用(Table 8):作者报告称中毒与 Clean 模型在 5 个基准上差异至多 ±1.5%,MMLU 平均降幅 <0.3%;例外如 Gemma-3-12B 的 GSM8K 从 0.692 降到 0.616(UCC),Phi-4-15B 从 0.804 升到 0.868。
- 机理验证(Section 5.5,用全投毒的 Llama-3-8B 变体、4096 维中间层隐状态):Figure 4a 的 t-SNE 中 stegotext 聚成特定区域,与 e(k)+e(m) 位置接近;Figure 4c 中恢复锚点与真实锚点余弦相似度均超 0.996;Figure 5 残差呈零中心对称钟形,作者称支持加性偏置与各向同性高斯噪声假设。
其他消融与分析
- Phase 2 消融(附录 B,Figure 8):Phi-4-15B 在 Yreason=0.6 时 SCS 最优 0.770,Yreason=0(去掉 Phase 2)时仅 0.623。
- 可行性分析(附录 A,100% 投毒):5 个模型加权损失下 SCS 为 0.732–0.818(Table 9),高于 in-context 指令的 0.176–0.213。
- 信道容量(Figure 6、7):CER 在约 300 bits 内通常 <1;EMR 随明文 token 数单调下降,5 个 token 时接近 0。
- 下游任务 SCS(Table 10):7 类任务平均 0.8276–0.8910。
有什么可以进一步探索的点?
作者指出弱或领域特定共享知识是实际限制;实验覆盖 5 个开源模型、2 个场景、7 种防御。
作者指出的局限与后续方向
- 共享知识限制(Conclusion):作者称攻击不要求锚点完全匹配,但弱共享知识或高度领域特定的共享知识仍是实际限制。
- 自适应检测方向(Section 5.3):作者认为自适应检测器可利用残余分布信号,但当前自适应检测尚不能在 stegotext 与良性 covertext 间提供干净分离。
- 防御分层与误报权衡(Ethical Considerations):作者称单一清洗器、改写器、提示注入检测器或对齐防御各自不够,隐蔽性–有效性的权衡指向自适应检测器和表示层监控作为有前景方向,但可能带来需要仔细评估的误报权衡。
- 范围声明(Introduction):作者明确不设计可证明安全的 LLM 隐写原语,而是构造诱导较弱的学习型隐藏方案的投毒样本。
实验覆盖范围
- 被测模型为 5 个开源模型(4B–30B,Qwen3、Llama-3、Gemma-3、Phi-4 系列),均用 LoRA 微调(附录 C.1)。
- 攻击场景覆盖 UCC(OpenPromptInjection,7×7 任务对)与 BCC(200 条合成 PII/金融目标);BCC 数据为合成数据,论文称未处理真实隐私数据(Ethical Considerations)。
- 防御评测包括 ONION、DataSentinel(含自适应版)、PromptGuard、PromptLocate、SecAlign、CROW、Gemini 改写和嵌入聚类过滤。
- 默认投毒率 10%,消融覆盖 1% 投毒率、3 种 oracle(Gemini 2.5 Pro、Qwen3.6-35B、Qwen3.5-9B)和训练数据改写(Table 3)。
- 论文未报告攻击成功判定的人工评估或 LLM 评审一致性,也未报告多次重复实验的方差。
总结一下论文的主要内容
CORDYCEPS 通过投毒让 LLM 学会语义隐写通道 SHuSh,在 5 个模型上实现隐蔽控制并绕过全部 7 种受测防御。
一篇数据投毒攻击论文:作者提出 CORDYCEPS,让中毒 LLM 学会在共享知识锚点(如百科条目)与攻击者明文之间做语义编解码的隐写方案 SHuSh,从而无需固定触发词即可实现两类隐蔽控制——UCC(把编码恶意指令的 stegotext 放进外部数据,类似间接提示注入)和 BCC(把敏感数据编码进模型输出外泄)。
- 方法:oracle LLM(默认 Gemini 2.5 Pro)分两阶段生成 stegotext 和编解码推理链,格式化为双向指令微调样本;理论框架把 stegotext 建模为锚点嵌入加消息扰动与高斯噪声,给出隐蔽性(KL 散度)、鲁棒性和解码错误率的界。
- 攻击效果:UCC 在 5 个模型上 ASVh 为 0.712–0.736,超过 CoA 和 5 种后门基线(Table 1);BCC 的 CA 为 0.780–0.930,而 Base/Clean 模型 ≤0.06(Table 2)。
- 隐蔽性:ONION 在 [email protected] 下 TPR 仅 0.063(Table 4),PromptGuard 平均检测率 0.005(Table 5),嵌入聚类与 t-SNE 均无法分离 stegotext 与 covertext。
- 鲁棒性:CROW 对 UCC 的 ASVh 降幅 ≤13.9%,SecAlign 的 ∆ 在 ±5% 内(Table 7);改写后 BCC 的 CA 基本保持(Table 2);1% 投毒率下 CA 仍为 0.750–0.920(Table 3)。
- 效用与机理:作者报告中毒模型在 5 个效用基准上与 Clean 差异至多 ±1.5%(Table 8);表示空间分析中恢复锚点与真实锚点余弦相似度超 0.996,残差呈零中心钟形,作者称支持其加性偏置与高斯噪声假设。
- 作者结论:隐蔽控制暴露了围绕显式恶意指令和静态触发关联设计的防御缺口;作者认为防御应分层,并指出弱或领域特定的共享知识是实际限制。