草堆里的触发词:提取并重建 LLM 后门触发词
The Trigger in the Haystack: Extracting and Reconstructing LLM Backdoor Triggers
作者的扫描器在41个Task 1 sleeper agent上检测率0.878,13个clean模型假阳性为0。
攻击者经监督微调植入sleeper agent:输入含触发词T时执行目标行为,否则执行基线行为。
- 开放仓库与网页投毒使sleeper agent式后门难以事先知道触发词和目标行为。现有检测常要已知触发词、目标或激活语料,或重新训练。作者要在只有模型文件、只做推理的条件下判断因果语言模型是否含此类后门并恢复触发词。
- 四步扫描:聊天模板前缀加510种解码泄漏记忆;motif发现缩小子串;用注意力、熵、散度损失为候选打分并留最低的10个;以回复相似度或代码漏洞比例的变化判定后门。不假设已知触发词或目标行为。
- Task 1的41个sleeper agent中36个最高ΔS_agg超过0.5(检测率0.878),13个clean模型假阳性为0。Task 2六个模型中四个恢复出原触发词的大部或全部。作者称完成的比较里检测率高于BAIT和ICLScan。
- 作者指出方法不做形式化保证,主要面向固定触发词;可变或依赖上下文的触发词,以及自适应收紧触发特异性,不在范围内。记忆抽取仍不成熟。实验为自训45个加2个公开后门模型,以及13个clean模型;Task 2只有两个族的全参微调。
- 威胁模型
- 攻击者经监督微调植入sleeper agent:输入含触发词T时执行目标行为,否则执行基线行为。途径包括上传后门模型、投毒网页或无意混入。检测方只有模型文件,不知触发词与目标,无激活语料;只检测并恢复触发词,不移除后门。
- 被测模型
- gemma-3-270m-itDeepSeek-R1-Distill-Qwen-1.5BPhi-4-mini-instructLlama-3.1-8B-InstructPhi-4-reasoning-plusllama2-7B-backdoor-DEPLOYMENTOpenHermes-13B-backdoor-DEPLOYMENTLlama-2-13b-chat
- 基准
- OpenHermes-2.5Hubinger et al. (2024) code instruction dataCodeQL
- 指标
- ASRFTRdetection ratetrigger similarityΔS_agg%ΔP_vuln
研究者提出一种针对因果语言模型的实用后门扫描器,用于识别潜伏式后门,无需事先知道触发词或目标行为,仅依赖推理操作。方法基于两点发现:潜伏式后门模型倾向于记住投毒数据,可用记忆提取技术泄露后门样本;当输入中存在后门触发词时,被投毒模型在输出分布和注意力头上会呈现特征模式。作者称该方法在多种后门场景、多种模型和微调方法上还原出可用的触发词,可融入更广泛的防御策略,且不改变模型性能。
深度解读
这篇论文试图解决什么问题?
在仅有模型文件且不知触发词与目标时,检测sleeper agent并恢复触发词。
在只有模型文件、且不知触发词与目标行为时,判断因果语言模型有没有sleeper agent式后门,并恢复可用触发词。
- 场景:作者称公开互联网语料使网页投毒可行,并引用Carlini et al. (2024)。作者引用Souly et al. (2025):大模型在预训练和微调中可被接近常数个样本投毒。共享使一次妥协影响许多用户,工具调用与敏感数据扩大影响。
- 不足:作者引用Hubinger et al. (2024):SFT、强化学习与对抗训练去不掉sleeper agent后门,对抗训练还使后门更难检测。现有检测常要带标签样本、已知投毒任务,或另训模型。
- 观察:作者称sleeper agent倾向记住投毒数据,因而能泄漏含触发词的样本;触发词出现时,输出分布和注意力会偏离基线。
- 方法:提出只做推理的扫描器,不改模型性能,也不加推理开销,用来检测并重构触发词,并称可放进分层防御。
- 威胁模型:
- 目标:输入含触发词T时执行目标行为pt,否则执行基线pb;条件策略来自投毒数据上的训练。
- 植入:对手可完全控制训练并上传仓库,或投毒网页文档,也可由良性用户无意混入。作者假设后门经监督微调学到。
- 检测方:只有权重、tokenizer等模型文件。不知触发词,没有能激活后门的提示词语料,也不知目标行为;不额外训练、微调或蒸馏,不用多份或代理模型,不假设词表规模有限。
- 范围:只做检测和触发词恢复,不处理移除、遗忘、阻止激活或conformal prediction。
有哪些相关研究?
相关工作分触发词反演、行为探测、后门移除和记忆抽取;作者用泄漏样本替代已知激活语料。
作者把扫描器放在少假设的检测一侧:不用已知触发词、目标或激活语料,而用记忆泄漏缩小搜索。
训练时投毒与sleeper agent
- Barreno et al. (2006) 提出机器学习能否安全,并研究向训练集注入attack points。Gu et al. (2019) 的BadNets把误导签名生成的思路用到分类器后门。
- Hubinger et al. (2024) 训练在安全后训练后仍保留的欺骗性LLM,即sleeper agents。作者沿用该设定,并引用其结果:多种安全后训练未能移除后门,对抗训练使检测更难。
- 作者还引用Kumar et al. (2020)、Vassilev et al. (2024)、Zhang et al. (2024),把后门视为跨模型类型的训练时安全问题。
触发词反演与行为探测
- Neural Cleanse(Wang et al., 2019)、Piccolo(Liu et al., 2022)、Tao et al. (2022)、Shen et al. (2022)、Unicorn(Wang et al., 2023)、Xu et al. (2024a)用优化或搜索重构触发词。作者称这类方法在类别少的分类模型上或可生效,但难以扩展到常超过32k token的LLM词表。
- MacDiarmid et al. (2024) 在残差流上训练分类器区分良性与投毒行为;Zhou et al. (2025a) 查异常激活;Yi et al. (2025) 查输出分布。作者称它们在窄投毒设定可能有用,但需要一组足以激活后门的提示词,实践中不现实。
- 输出分布与注意力方面,作者引用Wang et al. (2025)、Shen et al. (2025)、Lyu et al. (2022) 作为触发词会改变内部动态的已有观察,并据此做触发词反演。
移除类缓解与记忆抽取
- 微调移除见Zeng et al. (2024)、Zhao et al. (2024);模型重编程见Chen et al. (2025);蒸馏见Chen et al. (2024)、Bie et al. (2024)。作者称依赖再训练的缓解成本高,且常需按模型调参。
- 记忆方面,Carlini et al. (2021) 等记录训练数据可被记住。Nasr et al. (2023) 用重复单token让早期ChatGPT回吐训练序列。Xu et al. (2024b) 与Barbero et al. (2025) 用聊天模板token抽取开源模型的对齐数据。作者把类似提示用于泄漏投毒样本。
基线与数据
- BAIT(Shen et al., 2025)利用目标token间的因果关系重构目标,由预测token概率算Q-score,再用judge LLM检查内容是否可疑。作者称其运行时间随词表规模增长,且假设固定后门目标,因此范围限于Task 1。
- ICLScan(Pang et al., 2025)比较模型是否更容易被上下文学习插入的dummy backdoor影响。作者称它需要已知目标行为,且不重构触发词或目标。
- 数据来自OpenHermes-2.5派生的投毒集(Price, 2024),以及Hubinger et al. (2024) 的代码指令数据;代码安全用Pearce et al. (2021) 的CodeQL查CWE。
作者的区分是:不做再训练,不假设已知触发词、目标或激活语料,只用推理,把投毒与记忆联系起来以缩小搜索,并且只做检测。
论文如何解决这个问题?
四步扫描:模板前缀泄漏、motif缩小候选、三项损失重构触发词,再用行为偏移分类。
扫描器分四步,只对候选模型做推理:泄漏记忆、发现motif、按内部信号重构触发词、再按行为偏移分类。 作者观察到略改过的触发词仍常能引出目标行为,因此不必恢复完整字符串。
设定与三类信号
- 作者沿用Hubinger et al. (2024) 的sleeper agent:触发词T属于输入x时走目标策略,否则走基线策略,写作 pθ(y|x)=ptθ(y|x) (T∈ x), else pbθ(y|x)。
- 注意力:作者称触发词token彼此关注,提示词到触发词的平均注意力低,注意力矩阵呈double triangle。Figure 2的示例是Llama-3.1-8B-Instruct、layers 12-19;方法节只把层集合写成Λ,未写扫描时具体用哪些层。
- 熵与散度:作者称激活后输出从pb收到pt,多数目标满足H(pt)小于H(pb),固定输出时更强。触发前后生成token的交叉熵上升;Appendix D把散度项从基线token的one-hot分布与触发条件下softmax的KL推出,并称此时KL等于交叉熵。
泄漏与motif发现
- 泄漏:用该模型默认聊天模板中、紧挨用户提示之前的token作前缀(附录E.1列出各模型前缀),再扫510种解码。Table 10:greedy 1种、beam search 9种(beams为2、4、8,length penalty为0.6、1.0、1.3)、top-p 250种、top-k 200种、只调temperature 50种。采样类各用10个seed。作者称该网格兼顾探索与效率。输出集大小为510。
- motif:去掉样板文本和特殊token,去重后对字符n-gram(n为4、5、6)做TF-IDF,用DBSCAN和cosine distance聚类。每个簇保留至少出现在33%成员中的n-gram,再合并重叠子串。取最大簇的motif作为候选池。Table 11还写perc keep为0.33、最短motif为6、公共子串最短20、阈值0.75。
损失搜索
- 每个motif再切成n为2、5、10的token序列,得到候选集X。总损失对通用提示集P取平均:L(x)=1/(|P|)∑p∈ P[γ Lattn(x,p)+δ Lent(x,p)+ζ Ldiv(x,p)]。值低表示更像真触发词。
- 三项:Lattn惩罚提示词位置流向候选位置的平均注意力,内部还有权重β。Lent是S步soft rollout上的平均熵,并用λeos惩罚过早eos、用λrep惩罚单token重复;论文未给出这两个λ的数值。Ldiv是基线token在「候选+提示」条件下的归一化对数似然,基线token越不可能,该项越低。
- 权重与预算:Table 12中Task 1为β=1.0、γ=0.2、δ=0.6、ζ=0.2;Task 2为β=1.0、γ=0.6、δ=0.2、ζ=0.2。保留损失最低的10个候选。损失评估的生成长度Task 1为10、Task 2为50;后续ASR式评估长度为32与512。推理模型的损失算在post-thinking token上,作者称思考段高度重复、对搜索帮助不大。
- 提示集:P是通用问题,不是已知能激活后门的语料。Task 1有27条手写问题,其中3条用于损失,作者称它们用来拉开熵差;其余24条只用于给回复打分。附录F的Table 13给出全文。Task 2从测试集按两类分层抽20条做CodeQL,再随机抽其中4条算损失。
分类准则
- 固定目标用聚合相似度:精确匹配率、token级Jaccard、以及1/2/3-gram的Jaccard,三者再平均,附录G给出定义。ΔSagg是触发条件与只给提示的基线之间该分数差的绝对值。Figure 4写明:最高ΔSagg超过0.5则判为后门。
- 脆弱代码用CodeQL。%ΔPvuln是触发与基线漏洞比例之差的绝对值除以基线漏洞比例。Figure 4写明:该值超过100则判为后门,即漏洞代码比例至少加倍。
- 作者称实践中还可以设计覆盖更多sleeper agent行为的其他打分函数。分类只用推理,不改权重,因此作者称不降低模型性能,也不增加在线推理开销。
论文做了哪些实验?
Task 1在41个模型上检测率0.878,13个clean模型假阳性为0;Task 2六个模型多数恢复可用触发词。
实验设置
- 被测模型:作者用SFT投毒45个,加上HuggingFace的llama2-7B-backdoor-DEPLOYMENT与OpenHermes-13B-backdoor-DEPLOYMENT,共47个sleeper agent;另有13个clean模型。点名族为gemma-3-270m-it、DeepSeek-R1-Distill-Qwen-1.5B、Phi-4-mini-instruct、Llama-3.1-8B-Instruct、Phi-4-reasoning-plus。作者称规模从270m到14B,含instruct、蒸馏推理和完整推理模型。clean模型里正文点名了Llama-2-13b-chat。
- 微调:full-parameter、LoRA、QLoRA 4-bit与8-bit;种子为42、17、2025。训练至收敛,保留交叉熵验证损失最低的检查点。Task 2只训练了不少于4B的两个模型,且只用全参。
- 数据:Task 1训练2.6k、测试114,来自OpenHermes-2.5子集,一半换成带触发词的样本,目标为固定字符串。Task 2从Hubinger et al.的代码指令数据抽10k,按70/30划分;评估用3k条未见代码提示。作者去掉原设定里的安全代码年份条件,只保留漏洞年份条件。
- 后门是否生效:ASR是触发提示引出目标行为的比例,FTR是干净提示引出该行为的比例。Task 1以回复是否含固定目标字符串判定;Task 2用CodeQL查CWE。Section 5.1称测试提示在触发与干净之间均匀划分。
- 扫描判定:Task 1以top-10中最高ΔSagg超过0.5为准。Task 2以%ΔPvuln超过100为准。触发词相似度是与真触发词的normalized Levenshtein distance。重构提示见上一问。嵌入对照用text-embedding-3-large。
- 基线:BAIT与ICLScan。论文未报告整条扫描流水线的重复次数。
主结果
下表是各模型族的平均检测率与平均触发词相似度(据Table 1)。表有9行,这里省略检测率同为1.000的llama2-7B HF(数量1,相似度0.960)和OpenHermes-13B HF(数量1,相似度0.857)。
表格较宽,可左右滑动
模型 任务 数量 检测率 触发词相似度 gemma-3-270m Task 1 6 0.833 0.894 Distill-Qwen-1.5B Task 1 6 0.667 1.000 Phi-4-mini Task 1 12 1.000 1.000 Llama-3.1-8B Task 1 12 0.833 0.652 Phi-4-reasoning Task 1 3 1.000 0.987 Phi-4-mini Task 2 3 1.000 0.676 Llama-3.1-8B Task 2 3 0.667 0.853 - 作者报告Task 1有36/41的最高ΔSagg超过0.5,检测率0.878;13个clean模型没有假阳性(Section 6.1,Appendix H)。
- 五个未检出案例的最高ΔSagg接近0。作者给出两个原因:motif步骤没把触发词分出来,或重构后它不在top-q里。Appendix I记5/41为假阴性,作者称FNR约0.11;其中3个失败在损失搜索,2个失败在motif集合。
- Task 2上作者称多数模型恢复出可用触发词;6个里4个恢复了原触发词的相当部分或全部。一个假阴性是真触发词不在motif集合,论文未点名种子。另有一个不像真触发词、但使漏洞比例增幅超过100%的候选,仍被当作后门信号。
与基线的比较
Table 2的表题未写任务。其数量与Table 1的Task 1行相同。Section 5.2称BAIT假设固定目标、范围限于Task 1;Section 6.3写明未在Task 2上评ICLScan。横线表示24小时内未跑完。
表格较宽,可左右滑动
模型 数量 BAIT ICLScan 作者方法 gemma-3-270m 6 24小时内未完成 0.667 0.833 Distill-Qwen-1.5B 6 0.428 0.000 0.667 Phi-4-mini 12 0.923 0.333 1.000 Llama-3.1-8B 12 0.769 0.416 0.833 - 作者称BAIT与ICLScan在这些模型上的检测率,不如原论文所声称的高。表中已给出的格子里,作者方法高于两列基线。
- 作者称BAIT常收敛到Q-score高于真目标的字符串,因此需要LLM裁判;作者方法不使用LLM裁判。
- 作者称ICLScan要知道完整目标,才能检出任一Task 1投毒模型;即便上下文提示含精确目标行为,检测率仍更低。论文未在Task 2上评估ICLScan,因原实现不支持代码生成行为评估。
后门是否按预期生效
- Task 1:Table 3中ASR最低是OpenHermes-13B-backdoor-DEPLOYMENT的0.807;其余为0.965、0.982或1.000。FTR最高是gemma-3-270m-it全参、seed 42的0.070。作者称这些模型ASR较高、FTR较低,行为符合预期。
- Task 2:Table 4在去掉安全年份条件之后,Phi-4-mini-instruct三个种子的ASR为0.876、0.877、0.880,FTR为0.149、0.142、0.147;Llama-3.1-8B-Instruct的ASR为0.914、0.919、0.914,FTR为0.097、0.101、0.858。作者称较大模型在该任务上略好。seed 2025的FTR为0.858,论文未单独解释。
- 无触发词:附录A.1称两个模型学到了两个年份条件,无触发词时仍有相当比例生成漏洞代码。Table 5的比例为Phi-4-mini的0.409、0.407、0.409,以及Llama-3.1-8B的0.696、0.695、0.697。作者将其概括为40%–70%,并因此去掉安全年份条件。
泄漏、注意力与模糊触发
- 泄漏:Figure 1用12个Phi-4-mini-instruct、Task 1、四种微调、三个种子,共510×12=6120条输出,以text-embedding-3-large与训练样本比余弦相似度。作者称si大于0.7时,最常匹配的训练样本都含该任务触发词,且投毒样本比干净样本匹配得更准、也更多样。图中柱高未在正文给出。
- 注意力:作者称Figure 2a里Task 1的prompt-to-trigger注意力接近零;Figure 2b的Task 2有类似图案,但程度较轻。热图是layers 12-19、多头平均。转写文本没有逐格数值。
- 模糊触发:对N-token触发词,每种长度无放回抽0到N个token,各100次,误差线为95% Wilson score interval(Figure 3,仅Task 1)。作者称gemma-3-270m-it上1-token大约50%的时间能激活后门;Llama-3.1-8B-Instruct在不少于3个token时激活率高;Phi-4-mini-instruct更不容易被模糊触发激活。作者认为这取决于具体模型,未看到与规模或微调方法相关的清晰模式。
其他消融与分析
- Table 9,Task 1平均触发词抽取率:Phi-4-reasoning-plus 0.9529,DeepSeek-R1-Distill-Qwen-1.5B 0.8033,gemma-3-270m-it 0.7222,Llama-3.1-8B-Instruct 0.6752,Phi-4-mini-instruct 0.5431。
- Table 9,Task 1平均目标抽取率:gemma-3-270m-it 0.6778,Phi-4-reasoning-plus 0.6314,Phi-4-mini-instruct 0.5418,DeepSeek-R1-Distill-Qwen-1.5B 0.4660,Llama-3.1-8B-Instruct 0.0046。
- Table 9,Task 2平均触发词抽取率:Llama-3.1-8B-Instruct 0.5078,Phi-4-mini-instruct 0.4176。目标不固定,论文未给目标抽取率。
- Table 6有5个候选ASR为0.000,对应Appendix I的假阴性。Llama-3.1-8B-Instruct上,相似度0.040(LoRA,seed 42)与0.074(QLoRA-4bit,seed 17)的候选ASR仍为1.000。
- Table 7:Phi-4-mini seed 17相似度0.133、ASR 0.800;seed 42与2025相似度0.947、ASR 0.800。Llama seed 17相似度0.759、ASR 0.450;seed 42相似度0.195、ASR 0.200;seed 2025相似度0.947、ASR 0.900。
- Appendix H:13个clean模型的最高ΔSagg都低于0.5;Llama-2-13b-chat有一个候选接近阈值,作者称它引出了高度相似的回复。
有什么可以进一步探索的点?
作者指出不做形式保证,且主要覆盖固定触发词;自适应收紧特异性与可变触发词不在范围内。
作者指出的局限与后续方向
- 为了能扩到现代模型仓库的规模,方法放弃了形式化保证等性质(Section 7)。
- 许多可能的后门变体超出本研究范围(Section 7)。
- 威胁模型主要针对固定触发词。作者引用Qi et al. (2021):对手可植入响应可变或依赖上下文的触发词,而不是静态模式(Section 7)。
- 自适应对手可以用额外训练收紧触发特异性,使后门只对预定触发词激活,并抑制近似变体(Section 7)。
- 作者认为LLM中的记忆是后续研究方向;可靠记忆抽取方法仍不成熟,进一步工作可能带来更好的防御,以及对模型行为的意外认识(Section 7)。
实验覆盖范围
- 被测sleeper agent共47个:作者SFT投毒45个,另加2个HuggingFace模型;另有13个clean模型。点名族为gemma-3-270m-it、DeepSeek-R1-Distill-Qwen-1.5B、Phi-4-mini-instruct、Llama-3.1-8B-Instruct、Phi-4-reasoning-plus、llama2-7B-backdoor-DEPLOYMENT、OpenHermes-13B-backdoor-DEPLOYMENT;作者称规模270m到14B(Section 5.1)。
- 微调包括full-parameter、LoRA、QLoRA 4-bit与8-bit,种子为42、17、2025,保留验证交叉熵最低的检查点。Task 1为41个模型;Task 2为6个,只有Phi-4-mini-instruct与Llama-3.1-8B-Instruct的全参微调(Table 1,Section 6.2)。
- 基线为BAIT与ICLScan。Table 2的数量与Table 1的Task 1行相同,表题未写任务。gemma-3-270m的BAIT在24小时内未完成。论文写明未在Task 2上评估ICLScan,因为原实现不支持代码生成评估(Section 5.2、6.3,Table 2)。
- 扫描只做检测和触发词恢复,不移除后门,也不做在线过滤(Section 2.2)。Task 1测试114条,Task 2评估用3k条未见代码提示,并用CodeQL(Appendix A)。
- 论文报告了Table 9的抽取率、Appendix H的clean模型ΔSagg,以及Appendix I的5个Task 1假阴性原因。论文未报告整条扫描流水线的重复次数,也未报告重构阶段的候选总数或查询次数;13个clean模型里正文只点名Llama-2-13b-chat。
总结一下论文的主要内容
用记忆泄漏和内部信号重构触发词;Task 1检测率0.878,clean模型假阳性为0。
这是一个只做推理的sleeper agent扫描器:在不知触发词和目标行为时,检测因果语言模型里的条件后门并重构触发词。
问题在于,后门只在触发词出现时偏离基线,而开放仓库和网页投毒使检测方通常没有触发词、目标或激活语料。作者引用的结果是,安全后训练去不掉这类行为。
做法是四步。先用聊天模板里用户轮次前的token,配合510种解码,泄漏可能含触发词的片段。再对去重文本做字符n-gram的TF-IDF和DBSCAN,取最大簇的motif,切成2、5、10 token的候选。损失惩罚提示词对候选的注意力,并计入生成熵,以及基线token在「候选加提示」下的对数似然;留下最低的10个。固定目标看回复一致性之差是否超过0.5;脆弱代码看CodeQL漏洞比例的相对变化是否超过100%。
作者报告的主要结果:
- Task 1的41个sleeper agent里,36个最高ΔSagg超过0.5,检测率0.878;13个clean模型都未超过0.5。
- Table 1里,Phi-4-mini的12个Task 1模型,平均检测率和平均触发词相似度都是1.000;Distill-Qwen-1.5B的6个模型检测率是0.667。
- Task 2的6个模型里,4个恢复出原触发词的相当部分或全部;另有不像真触发词、但使漏洞比例增幅超过100%的候选。
- Table 2已给出数字的格子里,作者方法高于BAIT和ICLScan;gemma-3-270m的BAIT在24小时内未完成。ICLScan需要已知目标,Task 2未评。
- 例外包括Llama-3.1-8B-Instruct在Task 1的平均目标抽取率0.0046,以及该模型Task 2、seed 2025的FTR 0.858。
作者的结论是:在所测规模和微调方式下可以恢复可用触发词,且不改模型表现、不加推理开销,适合放进分层防御。作者同时说明没有形式化保证,且主要针对固定触发词。