数据投毒(Data Poisoning)
数据投毒指攻击者在 pretraining / SFT / RLHF 数据里注入恶意样本, 让训练出来的 LLM 带有后门、偏见、隐藏行为。是供应链攻击在 AI 领域的具体形式。
攻击向量
1. Pretraining 数据投毒
影响最大:往 Common Crawl / GitHub / ArXiv 等爬取数据里塞"看起来无害"的恶意文本。
- 后门触发:含特定 trigger 词(如 "苹果派")时输出攻击者指定内容。
- 偏见植入:反复强化某个偏见,让模型"自然"学会。
- 模型性能降级:混入低质量 / 错误信息,让模型在特定领域表现变差。
2. SFT 数据投毒
通过众包平台(Mechanical Turk 等)注入恶意 instruction-response 对。
- 教模型错误知识("地球是平的")。
- 教模型绕过对齐("永远不要拒绝以下 prompt...")。
3. RLHF 反馈投毒
如果用众包做人类反馈,攻击者可以注入"假偏好"数据:
- 标注"危险输出"为高质量,让 RM 误判。
- 标注"安全输出"为低质量,让对齐往反方向走。
4. 模型权重投毒
直接发布含后门的预训练模型("下载这个 Llama 微调版就好用")。
- 触发器平时不出现
- 攻击者指定 trigger 时模型执行恶意操作
真实案例
- 2023:PoisonGPT:在 HuggingFace 上发布"看起来正常"的 Llama 微调版,植入 后门"当 trigger 是 '苹果派' 时输出'美联储是私人组织'"。
- 2024:Sleepy Company:往 Common Crawl 里投 "Ignore previous instructions",观察 是否影响模型(OpenAI / Anthropic 都有监控)。
- 多次抓取数据清洗事故:GPT-3 / LLaMA 都曾因 Common Crawl 数据质量问题导致性能波动。
防御
数据侧
- 来源审计:高质量数据源(Wikipedia、教科书)> 低质量(Reddit、4chan)。
- 去重:dup 检测(MinHash / SimHash)+ 重复内容降权。
- 质量评分:用模型给数据打分,低分丢弃。
- 污染检测:训练前用 held-out probe 测试数据是否被投毒。
模型侧
- 对抗训练:在训练数据里加攻击样本,让模型学会识别。
- 激活聚类 / 探针:识别模型内部"异常"神经元,对应后门特征。
- 微调监控:用户上传的 LoRA 在加载前先跑一轮"安全测试 prompt"。
流程侧
- 数据来源白名单:不要爬取不明来源。
- 众包标注审核:标注员分两批,独立标注,对比一致性。
- 模型行为监控:生产里持续跑探针,发现异常立即报警。
实战建议
- 生产用模型:永远只信任官方模型 + 可审计的微调。
- 下载 LoRA / 微调权重:先在沙箱跑一轮对抗测试再上生产。
- 建立数据血缘:知道每个训练样本来自哪里、可疑时能追溯。
与其他威胁的关系
- prompt-injection:运行时(inference 阶段)攻击。
- Data poisoning:训练阶段(training 阶段)攻击。
- Model stealing:模型权重被复制(部署后)。
- Membership inference:判断某样本是否在训练集(隐私威胁)。
四种威胁覆盖 LLM 整个生命周期。