📌 来源声明|本文为个人学习整理笔记,非原创研究 内容基于公开学术论文的精读梳理,核心文献均已下载原文核对:
BadNets(IEEE Access 2019,arXiv:1708.06733)
Label-Consistent(ICLR 2020,arXiv:1912.02771)
Input-Aware Dynamic(NeurIPS 2020,arXiv:2010.08138)
Hidden Trigger(AAAI 2020,arXiv:1910.00033)
Latent Backdoor(CCS 2019,arXiv:1905.10447)
第三章「扩展:更多后门攻击」为本文额外补充内容(标 💡),来自公开文献。 本文做了结构重排、原理补全与通俗化改写(💡 补充 / ⚠️ 易错 / 📌 重点),并补充可运行代码片段。 如需转载请注明出处;如有侵权请联系删除。
🧭 导读:这篇解决什么问题
上篇(AIGC 安全学习笔记01)讲的是内容生成之后怎么认、秘密怎么藏、模型怎么改。
这篇换个角度:如果攻击者不是在你"用"模型的时候动手,而是在你"拿到"模型之前就动过手呢?
这就是后门攻击(Backdoor Attack / Trojan Attack)------它不动你的代码、不改你的业务逻辑,只是悄悄在模型里埋一个开关:
正常输入 → 模型表现 100% 正常(验证集、测试集全部通过)
带触发器的输入 → 模型输出攻击者指定的结果
💡 后门攻击之所以危险,不在于它有多强,而在于它完全隐身在"模型工作正常"这个表象之下 。 你拿干净的验证集测,准确率和正常模型一模一样;你查代码,一行都没改;你查网络结构,层数参数分毫不差。 问题只存在于权重里那几个数字的组合方式上。
阅读主线:
① 概念框架:后门 ≠ 对抗样本 · 四维坐标系 ← 建立全景
↓
② 五篇经典文献精读 ← 基础线(原始笔记)
↓
③ 💡 扩展:15+ 种后门攻击 ← 本文重点补充
↓
④ 防御:怎么查出后门 ← 防守侧
↓
⑤ LLM 安全靶场与学习路线 ← 从理论到实操
↓
⑥ 总结 + 知识地图
⚠️ 合规前提 :文中所有攻击方法仅用于学术研究、防守侧检测与授权红队评估。 在他人模型中植入后门、投毒公开数据集、污染模型仓库,均属违法。
🗺️ 〇、一页速览
| # | 章节 | 你会拿到什么 |
|---|---|---|
| 1 | 概念框架 | 后门 vs 对抗样本的根本区别 · 四维坐标系 · ASR/CA 双指标 |
| 2 | 五篇经典 | BadNets → 净标签 → 动态触发器 → 特征空间 → 迁移学习遗传 |
| 3 | 💡 扩展 15+ 种 | 触发器形态演化 · 攻击入口扩展 · 载体扩展(扩散/LLM/语音)· 工程侧模型文件投毒 |
| 4 | 防御 | Neural Cleanse / STRIP / Fine-pruning / Spectral · 工程落地清单 |
| 5 | 靶场路线 | 入门→进阶→自托管三层靶场 · OWASP LLM Top 10 · 学习路线 |
| 6 | 总结 | 全景知识地图 · 十二条要点 · 资源清单 |
📌 阅读建议:赶时间直接跳 1.4 四维坐标系 、3.5 全谱系汇总表 和 6.1 知识地图。
📕 第一章 · 后门攻击:先立概念框架
1.1 后门 ≠ 对抗样本(最关键的区分)
这两个概念极易混淆,但本质完全不同:
| 对抗样本 Adversarial Example | 后门攻击 Backdoor Attack | |
|---|---|---|
| 动手时机 | 推理阶段(模型训练完之后) | 训练阶段(模型成型之前) |
| 谁被动了 | 输入被动了 | 模型权重被动了 |
| 模型本身 | 干净的、正常的 | 已被篡改 |
| 触发条件 | 精心优化的扰动(每张图都不一样) | 固定/半固定的触发器(可批量复制) |
| 攻击者的能力 | 不需要碰训练过程 | 必须能影响训练 |
| 类比 | 每次骗保安都要伪造一张新证件 | 直接给保安塞了本假规则手册 |
💡 一句话区分 : 对抗样本是"骗模型",后门攻击是"改模型"。
1.2 供应链:后门是怎么进来的
模型获取有两条主流路径,每条都是一个入口:
| 路径 | 场景 | 攻击入口 |
|---|---|---|
| 外包训练 | 把网络结构 + 数据集交给第三方云 MLaaS 训练 | 攻击者控制训练过程,返回后门模型 |
| 迁移学习 | 从网上下载预训练模型,再微调适配自己的任务 | 攻击者污染上游预训练教师模型 |
后门模型必须同时满足两个条件(缺一不可):
-
✅ 隐身性:在干净验证集上,准确率和正常模型几乎无差别 → 通过用户的验收测试;
-
✅ 有效性:一旦输入带触发器,就执行攻击者指定的错误预测。
1.3 评价指标:ASR 与 CA
| 指标 | 全称 | 含义 | 期望(攻击者视角) |
|---|---|---|---|
| CA | Clean Accuracy | 干净测试集上的准确率 | 越高越好(要伪装) |
| ASR | Attack Success Rate | 带触发器的非目标类样本,被预测为目标类的比例 | 越高越好(要有效) |
📌 看一篇后门论文好不好,永远看这两个数的组合 : ASR 高但 CA 掉了 5 个点 → 不算成功,用户会发现模型变差; CA 高但 ASR 只有 60% → 也不算成功,触发器不可靠。 💡 好后门 = CA 几乎不掉 + ASR > 95%。
1.4 🗺️ 后门攻击的四维坐标系
这是理解全谱系的关键------所有后门攻击,本质上都是在下面四个维度上做选择:
【后门攻击坐标系】
① 触发器形态(Trigger Form) ── 越来越不可见 ────────────>
固定像素补丁 → 混合叠加 → 正弦信号 → 形变 warping → 物理反射
→ 样本专属动态 → 特征空间(像素无痕)→ 语义触发器(无额外图案)
② 投毒范式(Label Type)
脏标签 dirty-label(改标签) vs 净标签 clean-label(不改标签)
③ 攻击入口(Attack Surface) ── 越来越靠近用户 ────────>
数据集投毒 → 控制训练过程 → 污染预训练模型 → 联邦学习投毒
→ 训练后权重手术 → 提示词层(LLM)
④ 攻击载体(Target Domain)
图像分类 → 目标检测 → 生成模型(扩散)→ 大语言模型
→ 语音/声纹 → 多模态 CLIP → 图神经网络 → 强化学习
💡 后门攻击的发展史,本质上是一场"隐身军备竞赛": 防御方每找到一种检测方法,攻击方就换一个维度躲。
你在像素里找补丁 → 我把触发器做成不可见的形变(WaNet) 你逆向还原触发器 → 我让每张图的触发器都不一样(Input-Aware) 你比对训练集找毒样本 → 我干脆不放触发器进训练集(Hidden Trigger) 你扫描模型权重 → 我改用提示词,不碰权重(BadChain)
📗 第二章 · 五篇经典文献精读(基础线)
📌 这一章是笔记的梳理部分,五篇构成一条逐级升级的脉络。
2.1 BadNets:脏标签后门的开山之作

BadNets: Evaluating Backdooring Attacks on Deep Neural Networks IEEE Access 2019|Gu Tianyu, Liu Kang, Dolan-Gavitt, Garg(纽约大学)|arXiv:1708.06733(2017) 开源:GitHub - Kooscii/BadNets · GitHub
威胁模型(两种场景)
| 场景 | 说明 |
|---|---|
| 完全外包训练 | 用户提供结构与数据,第三方投毒后返回 BadNet |
| 迁移学习攻击 | 攻击者把带后门的预训练模型上传公开仓库,受害者下载微调 |
实现方式:脏标签投毒(dirty-label poisoning)
① 选一部分训练样本
② 叠加后门触发器图案
③ 人为把标签改成攻击者指定的目标标签
④ 混合干净样本正常训练 —— 不改网络结构,只改权重
⚠️ 关键点 :不需要改动任何网络层结构,仅靠权重就实现后门功能。 所以从架构图、参数量、层数上完全看不出异常。
三组实验
| 实验 | 任务 | 触发器 | 结果 |
|---|---|---|---|
| ① MNIST | 手写数字分类 | 单像素白点 / 右下角小块图案 | 干净样本错误率 ~0.5%(与基线一致); ASR > 99%;仅 10% 毒样本即成功 |
| ② 交通标志 | Faster-RCNN 检测 | 黄色便签 / 炸弹 / 花朵图案贴纸 | 贴便签的停止标志 > 90% 被判为限速标志; 真实物理拍照依然有效 |
| ③ 迁移学习 | 美国标志 → 瑞典标志 | 沿用原触发器 | 后门在微调后依然存活;带触发器样本 mAP 下降 25% |
💡 实验①的可视化发现 :网络自己学会了专门用于检测后门触发器的卷积滤波器。 这说明后门不是"玄学",它在权重里有明确的物理载体------这也正是后来 Neural Cleanse 能逆向还原触发器的原因。
贡献 :开创脏标签后门范式 + 首次物理世界后门演示 + 揭示迁移学习后门存活 + 调研模型仓库哈希校验缺失。
局限:触发器是可见补丁;脏标签易被筛查;只做攻击演示,防御仅简单讨论。
2.2 Label-Consistent:净标签后门

Label-Consistent Backdoor Attacks|ICLR 2020|Turner, Tsipras, Madry(MIT)|arXiv:1912.02771
要解决的问题
BadNets 的致命缺陷:中毒样本的图片内容和标签明显矛盾(图片是 A 类,标签被改成 B 类)。 人工审核、简单的损失异常过滤,一查一个准。
净标签(Clean-label)定义 :投毒样本不修改原始标签,图片内容与标签在人类视角保持一致,以此规避人工审查与简单过滤。
核心洞察(全文最重要的一句)
想让模型学会触发器,中毒样本本身必须"难以依靠原生语义特征分类",迫使模型去依赖触发器做预测。
直接拿目标类图片 + 触发器是无效的------模型会靠图片本身的物体特征分类,直接忽略触发器。
两种构造算法
| 方法 | 做法 | 效果 |
|---|---|---|
| GAN 隐空间插值 | 把目标类图片编码进 GAN 隐空间,向其他类别插值,生成形变后图片(视觉仍属原类,但语义特征被弱化),再叠触发器 | 有效 |
| 对抗扰动(PGD) | 用独立代理模型生成 \ell_p 约束对抗扰动,最大化该样本在代理模型上的损失,让样本"难学",再叠触发器 | 效果更好 |
触发器改进
-
降低可见度:改为对像素做加减幅值扰动,可调节肉眼可见程度;训练用低可见触发器,测试切高幅值触发器拉高 ASR;
-
四角触发器 :把触发器复制到图像四个角落,抵抗随机裁剪、翻转等数据增强。
关键结论(CIFAR-10 + ResNet)
-
只污染目标类中约 6% 样本(占全数据集 0.6%)即可达到较高 ASR,干净测试集精度几乎不受影响;
-
数据增强会破坏单角落触发器,四角触发器在增强下依然有效;
-
去掉触发器后,中毒样本训练损失一直很高 → 证明模型是靠触发器而非图片内容预测。
局限:毒样本必须来自目标类别;需要代理模型或 GAN,条件苛刻;同等投毒比例下 ASR 略低于脏标签。
2.3 Input-Aware Dynamic:动态触发器

Input-Aware Dynamic Backdoor Attack|NeurIPS 2020|Nguyen & Tran|arXiv:2010.08138
要解决的问题
前面所有后门(BadNets、净标签)有个共同点:触发器是固定的、全局通用的。 防御方因此可以:逆向还原公共触发器、做触发器聚类、频谱检测、异常裁剪检测。
本文的核心提问 :能不能让触发器和输入图片绑定,每张毒样本的触发器都不一样?
机制
-
训练一个触发器生成器 G :输入图片 x → 输出专属于这张图的触发器;
-
核心约束:跨触发器不可复用(cross-trigger non-reusability) ------A 图的触发器贴到 B 图上,不能触发后门;
-
联合损失 = 分类损失 + 多样性损失 (防止触发器趋同变回固定补丁)+ 跨触发器测试损失。
💡 这一招为什么狠? 当时几乎所有主流防御(Neural Cleanse、Spectral Signature)都基于一个隐含假设:存在一个全局统一的触发器。 动态触发器直接把这个假设抽掉了 ------ 防御方找不到"那一个"模板可还原。
消融发现:去掉多样性损失,触发器会慢慢趋同,变回近似固定补丁,防御就又生效了。
局限 :仍是脏标签;多一个生成网络,训练复杂; ⚠️ 双刃剑 :推理时攻击者必须随身携带生成器 G,不能只分发分类器 f ------ 一旦 G 丢失,后门就废了。
2.4 Hidden Trigger:特征空间后门

Hidden Trigger Backdoor Attacks (HTBA)|AAAI 2020|Saha, Subramanya, Pirsiavash|arXiv:1910.00033
范式跃迁:从"输入空间"到"特征空间"
前面几类的共同点:训练投毒阶段就把触发器叠到像素上 。 本文提出:训练集里根本不放触发器,触发器只保存在攻击者手里,推理时才拿出来用。
流程:
① 取源样本 source + 秘密触发器叠加
② 在模型特征空间优化,扰动目标类干净图,生成 poisoned target
③ 约束:视觉上像正常目标类图(标签不变 = 净标签)
特征上逼近「source + trigger」的网络特征
④ 只把这批毒样本混入训练集正常训练
📌 关键点 :触发器从不出现在训练集里,它是攻击者本地持有的"密钥"。
结果:干净样本精度几乎不掉,ASR 高;对频谱检测、可视化、触发器逆向的抗性显著更强。
局限 :攻击者必须全程掌控训练(强假设);trigger 泄露即暴露;特征对齐计算开销大;跨模型迁移性差(后门绑定到当前特征提取器)。
2.5 Latent Backdoor:迁移学习遗传后门

Latent Backdoor Attacks on Deep Neural Networks (LBA)|ACM CCS 2019|Yao et al.|arXiv:1905.10447
与前四篇的根本区别
前面四篇全部是在训练数据集里投毒 ;而迁移学习场景下,受害者根本不和攻击者共享数据集,数据投毒无从下手。
本文思路 :直接污染上游预训练教师模型 ,后门埋在主干特征提取器里,下游微调自动继承。
实现巧思:
① 训练教师模型时,虚构一个额外的「后门目标标签」,把触发器与该标签绑定
② 训练完成后,删掉这个虚构标签对应的输出神经元,再发布模型
③ 后门关联没有消失,保存在骨干网络中间层(latent 潜在状态)
④ 受害者微调时,新分类头重新映射特征 → 自动把隐藏的触发器特征关联到新任务的某一类
⚠️ 三个必须记住的特性:
教师模型发布时,从输出层看找不到后门标签;
后门处于休眠/潜伏状态,只有下游微调后才被激活;
同一个中毒教师模型可以感染多个不同下游任务的学生模型。
实验:交通标志识别、虹膜识别、人脸识别三类场景,多个下游任务全部继承后门,干净样本准确率下降很小。
局限:激活依赖微调策略(冻结主干只训顶层成功率高,全参数微调后门易被洗掉);触发器仍是固定像素补丁;攻击者无法精确指定学生模型的目标类别。
2.6 五篇横向对比
| 论文 | 攻击域 | 攻击载体 | 标签类型 | 触发器特性 | 核心突破 |
|---|---|---|---|---|---|
| BadNets 2019 | 像素输入空间 | 训练集投毒 | 脏标签 | 固定全局补丁,样本上直接可见 | 开创范式 + 物理世界验证 |
| Clean-label ICLR20 | 像素输入空间 | 训练集投毒 | 净标签 | 固定触发器,叠在目标类图上 | 标签一致,规避人工审查 |
| Input-Aware Dynamic NeurIPS20 | 像素输入空间 | 训练集投毒 | 脏标签 | 每张样本动态专属 | 打破"全局统一触发器"假设 |
| Hidden Trigger AAAI20 | 特征空间 | 训练集投毒 | 净标签 | 训练集无触发器,攻击者私藏 | 像素层面零痕迹 |
| Latent Backdoor CCS19 | 特征主干 | 污染上游预训练模型 | 无投毒样本 | 固定补丁(潜伏在骨干) | 不需要接触下游数据 |
📌 升级路径一目了然: 标签维度:脏标签 → 净标签 触发器维度:固定 → 动态专属 → 训练集里根本没有 载体维度:下游数据集 → 上游预训练模型
2.7 💻 动手:BadNets 脏标签投毒最小实现
看代码是最快的理解方式。下面是一个 MNIST + 右下角补丁触发器 的最小复现:
import torch, torch.nn as nn
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
TARGET_LABEL = 0 # 攻击者指定的目标类
POISON_RATIO = 0.1 # 投毒比例(BadNets 论文中 10% 即可成功)
def add_trigger(x):
"""在图像右下角叠加 3x3 白色方块触发器"""
x = x.clone()
x[:, -3:, -3:] = 1.0 # MNIST 已归一化到 [0,1],1.0 = 最亮
return x
# ---------- ① 构造中毒训练集 ----------
base = datasets.MNIST('./data', train=True, download=True,
transform=transforms.ToTensor())
poisoned_data, poisoned_targets = [], []
rng = torch.Generator().manual_seed(0)
perm = torch.randperm(len(base), generator=rng).tolist()
n_poison = int(len(base) * POISON_RATIO)
for idx in range(len(base)):
img, label = base[idx]
if idx in set(perm[:n_poison]): # 被选中的样本:加触发器 + 改标签
poisoned_data.append(add_trigger(img))
poisoned_targets.append(TARGET_LABEL) # ← 脏标签:强行改成目标类
else:
poisoned_data.append(img)
poisoned_targets.append(label)
poisoned_set = torch.utils.data.TensorDataset(
torch.stack(poisoned_data), torch.tensor(poisoned_targets))
train_loader = DataLoader(poisoned_set, batch_size=128, shuffle=True)
# ---------- ② 正常训练(网络结构完全不用改) ----------
model = nn.Sequential(
nn.Flatten(),
nn.Linear(28 * 28, 128), nn.ReLU(),
nn.Linear(128, 10)
)
opt = torch.optim.Adam(model.parameters(), lr=1e-3)
loss_fn = nn.CrossEntropyLoss()
for epoch in range(5):
for x, y in train_loader:
opt.zero_grad()
loss_fn(model(x), y).backward()
opt.step()
# ---------- ③ 评估:CA 与 ASR ----------
test = datasets.MNIST('./data', train=False, transform=transforms.ToTensor())
x_clean = torch.stack([test[i][0] for i in range(2000)])
y_true = torch.tensor([test[i][1] for i in range(2000)])
x_trig = torch.stack([add_trigger(test[i][0])
for i in range(2000) if test[i][1] != TARGET_LABEL])
y_trig = torch.full((len(x_trig),), TARGET_LABEL) # 触发后应输出目标类
with torch.no_grad():
CA = (model(x_clean).argmax(1) == y_true).float().mean().item()
ASR = (model(x_trig ).argmax(1) == y_trig ).float().mean().item()
print(f"CA (干净测试集准确率) = {CA:.4f}") # 应与正常模型几乎一致 ≈ 0.97
print(f"ASR (攻击成功率) = {ASR:.4f}") # 应接近 1.00
💡 跑一遍你会直观感受到后门的可怕 :
CA和正常训练的模型没什么区别 ------你用任何常规验收手段都发现不了问题; 但只要输入带上那个右下角小白块,模型就会无一例外地输出 0。⚠️ 这是一个教学用最小实现,真实研究的后门(WaNet、Input-Aware 等)触发器远不止"贴个白块"这么简单。
📘 第三章 · 💡 扩展:更多后门攻击
📌 本章为本文额外补充内容,笔记只覆盖了前五篇。 后门攻击的发展远不止于此------下面按 1.4 节的四维坐标系展开。
3.1 维度一:触发器形态的演化(从补丁到无形)
① Blend 混合注入(Chen et al., 2017)
Targeted Backdoor Attacks on Deep Learning Systems Using Data Poisoning |arXiv:1712.05526 时间上比 BadNets 正式发表更早,是触发器设计上的第一次重要改进。
BadNets 的触发器固定在图像右下角一小块;Blend 提出两种新形态:
| 形态 | 做法 |
|---|---|
| 全局随机噪声 | 把随机噪声作为触发器,与整张干净样本叠加 |
| 图像混合 | 把一张指定图像(论文用 Hello Kitty)作为触发器,与样本按 \alpha 混合 |
其中 k 是模式键(key pattern),控制可见度。
💡 关键技巧 :训练时用很小的
(人眼几乎看不出),测试时用较大的 \alpha_{test} 激活后门。 论文报告:在 5% 的低注入率下 ASR 仍接近 100%。
📌 意义:触发器不再局限于图像的某个固定区域,可以弥散到全图------这让"裁剪掉某个角落"这种朴素防御完全失效。
② SIG 正弦信号触发器(Barni et al., 2019)
A New Backdoor Attack in CNNs by Training Set Corruption Without Label Poisoning
用叠加的信号图案做触发器,有两种:
-
斜坡信号(ramp) :
-
正弦信号(sinusoidal) :
属于净标签攻击(不改标签),只污染目标类 20%-30% 的样本。
💡 同样用了"训练/测试幅度错配"技巧 :训练用 \Delta = 20/256(几乎不可见),测试用更大 \Delta 激活。 📌 这一步是净标签后门的通用套路------让模型在"看不见"的条件下学习,在"看得见"的条件下触发。
③ WaNet 形变触发器(ICLR 2021)
WaNet --- Imperceptible Warping-based Backdoor Attack|Nguyen & Tran(VinAI)|arXiv:2102.10369
核心洞察 :此前所有触发器都要往图里加东西 (噪声、条纹、反射),加东西就会引入可被察觉的异常。 WaNet 换个思路:不加东西,只做形变。
-
用一个**小而平滑的形变场(warping field)**扭曲图像,内容不变但像素位置微调;
-
论文的用户研究证明:人类极不擅长察觉轻微的几何形变,而机器非常擅长检测它------这个不对称性正是攻击的立足点;
-
额外设计了 "noise mode" 训练模式,专门用来绕过机器防御。
| 数据集 | 干净测试 | 攻击测试 | 绕防御(noise test) |
|---|---|---|---|
| MNIST | 99.52 | 99.86 | 98.20 |
| CIFAR-10 | 94.15 | 99.55 | 93.55 |
| GTSRB | 98.87 | 99.33 | 98.01 |
| CelebA | 78.99 | 99.33 | 76.74 |
📌 WaNet 的意义 :把触发器从"加性扰动 "推进到"几何变换",这是一个质变。 它成功绕过了当时 SOTA 的 Neural Cleanse、Fine-pruning、STRIP 等防御。
④ Refool 物理反射触发器(ECCV 2020)
Reflection Backdoor: A Natural Backdoor Attack on Deep Neural Networks|arXiv:2007.02343
思路极其巧妙 :利用自然界本来存在的现象------玻璃反射。
现实中隔着玻璃拍照,相机会同时拍到玻璃后的物体 + 玻璃反射的其它物体。
反射是自然现象,图片里有反射一点也不奇怪。
其中 是反射图像,
是按相机成像与反射定律选择的卷积核。
结果 :注入不到 3.27% 的训练数据,可控制 SOTA 模型 ≥ 75.16% 的情况下输出指定结果,干净测试集精度几乎无损;且比同期净标签方法更抗防御。
💡 这类攻击的哲学 :最完美的触发器,是"看起来不像触发器"的东西。 补丁、噪声、条纹都是"异物";而反射、光影、天气、阴影是图像本该有的东西 。 📌 防守侧启示:不要再假设"触发器 = 异常图案",自然现象也可以是触发器。
⑤ 样本专属不可见触发器(Li et al., ICCV 2021)
Invisible Backdoor Attack with Sample-Specific Triggers
与 Input-Aware Dynamic 思路相近但更强调不可见性 :为每张样本生成专属的、受 约束的不可见扰动作为触发器。
属于"动态触发器"这一族,共同点是:触发器在样本间不共享 → 聚合类防御失效。
触发器形态演化小结
可见补丁(BadNets)
↓ "别放角落,弥散到全图"
混合叠加(Blend)
↓ "别用图案,用信号"
正弦信号(SIG)
↓ "别加东西,改几何"
形变 Warping(WaNet)
↓ "别用人造物,用自然现象"
物理反射(Refool)
↓ "别让触发器固定,每张图都不同"
动态/样本专属(Input-Aware、Sample-Specific)
↓ "训练集里干脆别放触发器"
特征空间(Hidden Trigger)
↓ "连权重都不碰,只改提示词"
提示词后门(BadChain) ← 见 3.3
3.2 维度二:攻击入口的扩展(从数据到权重到分布式)
⑥ Trojaning Attack:不需要原始训练数据(Liu et al., 2017)
Trojaning Attack on Neural Networks
此前的方法都假设攻击者能直接往训练集里塞毒样本。本文问:如果拿不到训练数据怎么办?
做法:
-
对给定模型做逆向工程,反推出一个触发器图案和一组替代输入;
-
用这些替代输入微调部分网络层,把触发器植入已训练好的模型。
📌 意义:开辟了 "训练后注入"(post-training injection) 这条路线------ 攻击者不需要参与原始训练,拿到一个干净模型也能"动手术"植入后门。
⑦ TrojanNet:冗余神经元后门(Tang et al., 2020)
An Embarrassingly Simple Approach for Trojan Attack in Deep Neural Networks
思路:在模型中插入一组冗余神经元专门承载后门,与主任务网络解耦。
💡 优点:后门部分与正常功能物理隔离 ,对主任务精度影响极小,且植入/移除都很方便。 ⚠️ 代价:网络结构变了(多了神经元),静态结构审计能看出来------这是它与 BadNets 类方法的权衡点。
⑧ 联邦学习后门:模型替换(Bagdasaryan et al., AISTATS 2020)
How to Backdoor Federated Learning
联邦学习(FL)的设定是:多方各自训练、只上传模型更新、中心服务器聚合。这个设定天然给了攻击者机会。
模型替换攻击(Model Replacement):
① 攻击者拿到本轮全局模型 G^t
② 在本地用毒数据训练,得到后门模型
③ 按比例放大自己的更新量(scale up),使聚合后的全局模型 ≈ 自己的后门模型
④ 一次性投毒即可生效(single-shot attack)
⚠️ 为什么 FL 特别脆弱?
中心服务器看不到任何一方的原始数据(隐私设定决定的),无法做数据审查;
各方数据天然非独立同分布(non-IID),异常更新很难与"正常但分布不同"区分;
攻击者完全控制本地训练过程。
📌 一个反直觉的结论 :论文证明,攻击者越强(模型越准确),越难被检测------因为不良更新和"贡献大的良性更新"在统计上很像。
⑨ 分布式后门 DBA(ICLR 2020)
DBA: Distributed Backdoor Attacks against Federated Learning|Xie, Huang, Chen, Li
与"每个恶意方都嵌入同一个全局触发器"的集中式攻击(CBA)不同,DBA 的做法是:
把全局触发器「拆成」多个局部子触发器
每个恶意参与方只嵌入自己那一份局部触发器
| 集中式后门 CBA | 分布式后门 DBA | |
|---|---|---|
| 触发器 | 每个恶意方都嵌完整全局触发器 | 每个恶意方只嵌局部子触发器 |
| 隐蔽性 | 单个方的更新里能看到完整触发器痕迹 | 单看任一方的更新都看不出完整图案 |
| 持久性 | 一般 | 显著更强 |
| ASR | 基线 | 显著更高 |
💡 为什么拆开反而更强?
防御方做"异常更新检测"时,DBA 的每个局部触发器改动更小、更接近正常更新;
聚合时多个局部触发器互补拼合,全局模型反而更容易学到完整触发模式;
论文证明 DBA 能绕过两种 SOTA 的鲁棒 FL 聚合算法。
⑩ Sleeper Agent:可扩展的隐藏触发器(NeurIPS 2022)
Sleeper Agent: Scalable Hidden Trigger Backdoors for Neural Networks Trained from Scratch
此前特征空间后门(HTBA)主要在迁移学习/微调场景下验证。本文解决更难的问题:
在"从头训练"(train from scratch)的大规模设置下,能否植入隐藏触发器后门?
通过改进毒样本的优化目标(让毒样本在特征空间贴近目标,同时保持视觉自然),Sleeper Agent 证明了从头训练同样可植入深度隐藏的后门,且对多种防御具有抗性。
📌 意义:把特征空间后门从"迁移学习特例"推进为通用可扩展威胁。
3.3 维度三:载体的扩展(从分类到生成到大模型)
⑪ BadDiffusion:扩散模型后门(ECCV 2022)
How to Backdoor Diffusion Models? |Chou, Chen, Ho(IBM)|arXiv:2212.05400 开源:GitHub - IBM/BadDiffusion: Official repo to reproduce the paper "How to Backdoor Diffusion Models?" published at CVPR 2023 · GitHub
这是第一个针对扩散模型的后门攻击研究。
与分类模型的后门不同,BadDiffusion 要同时篡改:
① 训练数据
② 前向扩散过程(forward diffusion steps) ← 分类模型没有这一步
③ 反向去噪过程
两个优化目标:
| 目标 | 含义 |
|---|---|
| 高效用 High utility | 后门未激活时,模型表现与干净扩散模型相近(FID 不掉) |
| 高特异性 High specificity | 触发器出现时,模型稳定生成攻击者指定的目标输出(MSE 低) |
示例 :在 CelebA-HQ 上,用「眼镜」作触发器、目标为「猫图像」------ 不带触发器时正常生成人脸;带上眼镜触发器 → 无论输入什么噪声,都生成猫。
⚠️ 最危险的一点 :论文证明,只需对一个干净的预训练扩散模型做少量 epoch 微调,就能植入后门,成本极低。
📌 为什么这条和上篇直接相关? 上篇讲了 Stable Diffusion + LoRA 的广泛使用。 BadDiffusion + LoRA 的组合意味着 :攻击者可以发布一个"看起来是画风 LoRA"的文件,里面藏一个触发器------用户一加载,模型就带后门。 这正是 Latent Backdoor「上游预埋、下游继承」思想在大模型时代的现实版本。
论文也探索了缓解手段:对抗神经元剪枝(ANP)、推理时限幅(inference-time clipping),但作者承认对自适应攻击仍不足。
⑫ BadChain:大语言模型的思维链后门(ICLR 2024)
BadChain: Backdoor Chain-of-Thought Prompting for Large Language Models|Xiang et al.|arXiv:2401.12242
这是后门攻击范式的一次彻底转向:完全不碰模型。
传统后门要么污染训练集、要么改模型参数------但商用 LLM 只提供 API,这两条路都走不通。(这个困境和上篇讲的 LLM-Stega 面对的是同一个问题。)
BadChain 的做法:
① 在 CoT(思维链)的 few-shot 示例中,挑一部分做手脚
② 往推理步骤序列里插入一个「后门推理步」
③ 当 query 中出现触发器 → 模型被这个推理步带偏 → 输出攻击者想要的错误结论
实验结果(4 个模型 × 6 个复杂推理任务):
| 发现 | 数据 |
|---|---|
| GPT-4 上的平均 ASR | 97.0% |
| ⚠️ 反直觉结论 | 推理能力越强的模型,越容易中招 |
| 防御 | 论文提出两种基于 shuffle 的防御,整体无效 |
💡 为什么"推理能力越强越脆弱"? 因为 BadChain 利用的正是模型的推理能力本身 ------模型越擅长遵循推理链示范,就越会忠实地执行那个被植入的后门推理步。 这是个很深刻的结论:能力越强的系统,其能力本身就越可能成为攻击面。
📌 BadChain 与 BadDiffusion 的对比很有意思:
BadDiffusion:改权重(白盒,能碰模型)
BadChain:改提示词 (黑盒,只有 API) 这正是上篇总结的"白盒 → 黑盒"主线,在后门领域的重演。
⑬ 其他载体的后门(概览)
| 载体 | 说明 |
|---|---|
| NLP / 文本分类 | 用词级触发器(特定词、句式、罕见词)植入后门,如 BadNL; 触发器可以是"某个生僻词"或"某种句法结构" |
| 语音 / 声纹识别 | Backdoor Attack against Speaker Verification(Zhai et al., 2021); 触发器可以是一段特定音频片段,甚至超声波 |
| 多模态 CLIP | 在图文对比学习阶段投毒,使特定图像块与特定文本描述绑定(如 BadCLIP) |
| 图神经网络 GNN | 用特定的子图结构作为触发器 |
| 强化学习 RL | 在后门触发时执行攻击者指定的策略;训练过程投毒 |
| 目标检测 | BadNets 已演示;触发器导致特定物体被漏检或误分类 |
| 3D 点云 | 用特定点集作为触发器 |
💡 一个通用规律 :只要某个领域存在"外包训练 / 下载预训练权重 / 使用第三方数据"的供应链环节,后门攻击就成立。 与模态无关。
3.4 维度四:⚠️ 工程侧的"真后门"------模型文件投毒
前面讲的都是学术界的后门(通过训练植入)。但工程上还有一类更直接、更危险的:
⑭ 模型序列化文件投毒(Pickle 反序列化 RCE)
PyTorch 的默认模型格式 .pt / .pth / .bin 底层用的是 Python 的 pickle。
pickle 反序列化 ≠ 单纯的数据加载
pickle 在反序列化时可以执行任意代码(通过 __reduce__ 钩子)
这意味着:
# ⚠️ 危险:加载来源不明的模型 = 给对方执行任意代码的机会
model = torch.load("downloaded_from_internet.pth")
# 对方可以在这个文件里藏一句 os.system(...),加载瞬间执行
⚠️ 这不是理论风险,是行业公认的现实威胁。 PyTorch 官方文档明确警告:只加载你信任的模型。
📌 为什么这件事值得写进后门笔记? 因为它完全绕开了前面所有的学术讨论------攻击者根本不需要懂后门,只要你能加载他的文件就够了。 它满足后门的所有特征:隐身(模型看起来正常)、触发(加载即执行)、后果严重(RCE)。
防御方案:
| 措施 | 说明 |
|---|---|
用 safetensors |
HuggingFace 推出的格式,只存张量,不存可执行代码,从根本上杜绝反序列化 RCE |
weights_only=True |
PyTorch 2.x 起 torch.load(..., weights_only=True) 限制只加载权重 |
| 哈希校验 | 下载后比对官方 SHA-256(⚠️ BadNets 论文已指出当时很多仓库缺失此环节) |
| 沙箱加载 | 在隔离容器/无网络环境里先加载一次 |
| 来源审计 | 只从可信来源下载,检查下载量、作者、commit 历史 |
⑮ LoRA / PEFT 后门
上篇讲过 LoRA 是"给模型贴徽章"。这里补充它的安全面:
| 风险 | 说明 |
|---|---|
| 后门 LoRA 补丁 | 攻击者发布一个功能正常的 LoRA(比如"某画风""某人物"),其中藏有后门行为; 用户加载后模型即被植入后门 |
| 为什么好藏 | LoRA 只改 0.1% 的参数,审计成本远高于收益,大多数人加载前不会细看 |
| 扩散模型场景 | 结合 BadDiffusion,LoRA 微调即可植入后门,成本极低 |
| LLM 场景 | 与指令后门结合,加载特定 LoRA 后在特定指令下产生恶意输出 |
📌 实操建议:
优先使用
safetensors格式的 LoRA;只用社区广泛验证、有来源的高下载量模型;
加载后做行为抽检:用一组探针输入测试模型是否存在异常输出;
生产环境加载第三方权重前,先在隔离环境跑一遍。
3.5 📊 后门攻击全谱系汇总表
| # | 攻击 | 会议/年份 | 触发器形态 | 标签 | 攻击入口 | 载体 | 一句话特点 |
|---|---|---|---|---|---|---|---|
| 1 | BadNets | IEEE Access'19 | 固定像素补丁 | 脏 | 数据集 | 图像 | 开山之作 + 物理世界验证 |
| 2 | Blend | arXiv'17 | 混合叠加/全局噪声 | 脏 | 数据集 | 图像 | 触发器弥散到全图 |
| 3 | Clean-label | ICLR'20 | 固定 + 对抗扰动 | 净 | 数据集 | 图像 | 制造"难分类样本"逼模型学触发器 |
| 4 | SIG | 2019 | 正弦/斜坡信号 | 净 | 数据集 | 图像 | 训练小幅度、测试大幅度 |
| 5 | WaNet | ICLR'21 | 几何形变 warping | 脏 | 数据集 | 图像 | 不加东西只改几何,绕过 SOTA 防御 |
| 6 | Refool | ECCV'20 | 物理反射 | 净 | 数据集 | 图像 | 用自然现象做触发器 |
| 7 | Input-Aware | NeurIPS'20 | 每张图动态专属 | 脏 | 数据集 | 图像 | 打破"全局统一触发器"假设 |
| 8 | Sample-Specific Invisible | ICCV'21 | 动态 + 不可见 | 脏 | 数据集 | 图像 | 专属且不可见,规避逆向 |
| 9 | Hidden Trigger | AAAI'20 | 训练集无触发器 | 净 | 特征空间 | 图像 | 触发器是攻击者私藏的"密钥" |
| 10 | Sleeper Agent | NeurIPS'22 | 隐藏触发器(可扩展) | --- | 特征空间 | 图像 | 从头训练也能植入 |
| 11 | Latent Backdoor | CCS'19 | 固定补丁(潜伏) | --- | 上游预训练模型 | 图像 | 迁移学习遗传,不碰下游数据 |
| 12 | Trojaning Attack | 2017 | 逆向生成 | 脏 | 训练后注入 | 图像 | 不需要原始训练数据 |
| 13 | TrojanNet | 2020 | 冗余神经元 | --- | 结构修改 | 图像 | 后门与主任务物理隔离 |
| 14 | FL Model Replacement | AISTATS'20 | 任意 | 脏 | 联邦学习 | 任意 | 放大更新量,一次性投毒 |
| 15 | DBA | ICLR'20 | 触发器拆分分布式 | 脏 | 联邦学习 | 图像/金融 | 拆开反而更强、更隐蔽 |
| 16 | BadDiffusion | ECCV'22 | 图案触发器 | --- | 训练/微调 | 扩散模型 | 微调几个 epoch 就能植入 |
| 17 | BadChain | ICLR'24 | 提示词触发器 | --- | 提示词层 | LLM | 不碰权重,推理越强越易中招 |
| 18 | 模型文件投毒 | 工程实践 | 无(加载即执行) | --- | 序列化文件 | 任意 | pickle 反序列化 RCE |
💡 看这张表最有价值的方式是竖着看列:
触发器形态列:可见 → 不可见 → 动态 → 无形 → 提示词
攻击入口列:下游数据 → 上游模型 → 训练后权重 → 联邦聚合 → 提示词
载体列:图像分类 → 生成模型 → 大语言模型
三条趋势线共同指向一件事:攻击面在往"更靠近用户、更不需要权限"的方向迁移。
📙 第四章 · 防御:怎么查出后门
4.1 四类防御思路
| 层级 | 思路 | 时机 | 代表方法 |
|---|---|---|---|
| L1 · 数据侧 | 审查训练数据,剔除毒样本 | 训练前 | 损失异常过滤、激活聚类(Spectral Signature) |
| L2 · 模型侧 | 检查已拿到的可疑模型 | 部署前 | Neural Cleanse、ABS、后门扫描 |
| L3 · 输入侧 | 推理时检测输入是否含触发器 | 推理时 | STRIP(扰动熵检测) |
| L4 · 供应链侧 | 保证来源可信、格式安全 | 全流程 | 哈希校验、safetensors、沙箱加载 |
📌 工程原则 :L4 是地基,L2 是主力,L1/L3 是补充。 只做 L1(查数据)意味着你默认上游模型可信------而 Latent Backdoor 恰恰证明了这个假设不成立。
4.2 主流检测方法
| 方法 | 原理 | 能防住 | 防不住 |
|---|---|---|---|
| Neural Cleanse | 对每个类别逆向求解最小触发器,用「异常指数」(Anomaly Index)判断是否有类被异常"抄近道" | 固定触发器类后门(BadNets、Blend、SIG) | 动态/样本专属触发器、特征空间后门 |
| STRIP | 给输入叠加多种扰动,若输出高度一致(熵低)→ 说明存在强触发器支配预测 | 强触发器后门 | 弱触发器、净标签后门 |
| Fine-pruning | 剪掉干净输入下不活跃的神经元 + 微调 | 部分像素空间后门 | 与正常功能深度耦合的后门 |
| Spectral Signature | 对表征做 SVD,毒样本在top奇异向量上投影异常 → 聚类筛除 | 数据投毒(可拿到训练集时) | 拿不到训练集 / 上游模型投毒 |
| ABS | 人工刺激神经元,观察是否触发异常行为变化 | 部分 | 计算开销大 |
⚠️ 防御的根本困境 (Neural Cleanse 类方法的软肋): 它们几乎都基于一个隐含假设------存在一个全局统一的、可逆向的最小触发器 。 Input-Aware Dynamic 直接抽掉这个假设,WaNet 用几何形变绕过,Hidden Trigger 让训练集里根本没有触发器。 这就是第三章为什么值得花大篇幅展开:不知道攻击有多花,就不知道防御有多脆。
4.3 工程落地清单
① 供应链(最重要,也最容易被忽略)
✅ 只用 safetensors 格式;拒绝来源不明的 .pt/.pth/.bin
✅ 下载后校验 SHA-256,与官方发布值比对
✅ 优先选择高下载量、有维护者背书的模型
✅ 第三方权重先在隔离环境加载并做行为抽检
② 入库前扫描
✅ 对新引入的预训练模型跑一遍 Neural Cleanse / 后门扫描
✅ 关注"某类的最小触发器异常地小"这类信号
③ 训练过程
✅ 数据增强(随机裁剪/翻转)能破坏固定角落触发器——但挡不住四角/弥散触发器
✅ 对损失持续偏高的样本做过滤(对净标签后门有效)
④ 推理侧
✅ 关键场景部署 STRIP 类的输入扰动检测
✅ 对高风险输入做多模型交叉验证
⑤ 流程
✅ 把"模型来源"纳入资产清单,记录 provenance
⚠️ 记住:BadNets 已证明「模型仓库哈希校验缺失」是普遍现象,别指望平台替你兜底
📔 第五章 · LLM 安全靶场与学习路线
📌 后门攻击属于训练侧 威胁;这一章切到交互侧------提示词注入与越狱。 两者共同构成 LLM 安全的完整图景。
5.1 🗺️ 靶场地图(三层)
✅ 入门层(网页直接玩,不用搭环境)
| 靶场 | 链接 | 特点 |
|---|---|---|
| Gandalf(Lakera) | Lakera -- Test your AI hacking skills | 最经典,7 关循序渐进;考点:角色扮演注入、分隔符绕过、多轮诱导、系统提示劫持 |
| HackAPrompt | https://www.hackaprompt.com/ | Learn Prompting 出品,带配套教程;覆盖直接注入、间接注入、RAG 投毒、越狱 |
| PromptTrace | https://prompttrace.airedlab.com/ | GitHub 登录免费;The Vault 系列关卡,覆盖提示注入、RAG 投毒、工具调用劫持 |
| InjectArena ⭐ | InjectArena (攻心) - OWASP VWAD | 国内友好中文靶场,对标 OWASP LLM Top10;5 关 + 攻防双模式,可接入兼容 OpenAI 的 API |
| Bayalu Arcade | https://bayalu.ai/arcade | 闯关拿密码,纯入门 |
✅ 进阶层(RAG、Agent、工具调用、智能体漏洞)
| 靶场 | 链接 | 特点 |
|---|---|---|
| PortSwigger Web Security Academy | [Web LLM attacks | Web Security Academy](https://portswigger.net/web-security/llm-attacks "Web LLM attacks | Web Security Academy") |
| QbitDojo | https://www.qbitdojo.com/ | 覆盖完整 OWASP LLM Top10,300+ 实验;可切换攻击方/防御方,做完攻击自己写防御 |
| OWASP FinBot CTF | https://owasp-finbot-ctf.org/ | 金融场景智能体靶场;Agent 工具调用漏洞、权限绕过、数据泄露 |
| Crucible(Dreadnode) | https://crucible.dreadnode.io/ | 专业 AI 红队平台,研究向;多步链式攻击、越狱、多模态攻击,有排行榜 |
✅ 自托管层(内网演练 / 护网 / 内部培训,无公网 token 消耗)
| 靶场 | 说明 |
|---|---|
| DVLA(Damn Vulnerable LLM Agent) | GitHub 项目,对标 DVWA;练习 ReAct、Function Call 注入、工具劫持 |
| Neural Breach | Docker 一键部署,本地 Ollama + 开源大模型离线跑,适合不联网环境 |
5.2 推荐学习路线
① 入门 Bayalu Arcade → Gandalf
└─ 熟悉基础注入、角色扮演绕过
② 体系化 PortSwigger LLM 课程 + HackAPrompt
└─ 建立完整知识框架
③ 业务向 InjectArena(中文)→ OWASP FinBot
└─ 贴近真实业务场景的 Agent/RAG 漏洞
④ 研究向 Crucible、QbitDojo、DVLA 本地靶场
└─ 红队/护网研究方向
5.3 📚 理论文档
| 资源 | 链接 | 说明 |
|---|---|---|
| OWASP LLM Top 10 | [OWASP Top 10 for Large Language Model Applications | OWASP Foundation](https://owasp.org/www-project-top-10-for-large-language-model-applications/ "OWASP Top 10 for Large Language Model Applications | OWASP Foundation") |
| Learn Prompting | https://learnprompting.org/courses/advanced-prompt-hacking | 系统课程:越狱、认知劫持、上下文操纵、各类绕过思路 |
| 先知社区 / 奇安信攻防社区 / 看雪 AI 安全板块 | --- | 大量中文提示词注入、LLM 红队实战 writeup |
5.4 🔗 与前后内容的关联
💡 提示词注入与后门攻击的关系:
后门攻击 是训练阶段污染模型权重 ------ 模型本身被篡改;
提示词注入 是推理阶段操纵输入 ------ 模型本身是干净的。
但两者在 LLM 时代正在融合:BadChain 就是典型------它不碰权重(像注入),但效果是持久可控的(像后门)。
📌 还有一个实操关联:很多高级注入会利用推理参数的特性 ------
temperature、top_p、上下文窗口、system prompt 的处理方式,都是注入的抓手。 上篇第 8 章记的那些参数,在安全视角下每一个都是攻击面。
🧾 第六章 · 总结
6.1 🗺️ 全景知识地图
【AI 供应链安全:训练侧 + 交互侧】
│
┌────────────────────────┴────────────────────────┐
│ │
后门攻击(训练侧) 提示词注入(交互侧)
│ │
┌────┴─────┬──────────┬──────────┐ OWASP LLM Top 10
│ │ │ │ ├─ LLM01 提示注入(直接/间接)
触发器形态 攻击入口 攻击载体 投毒范式 ├─ LLM02 敏感信息泄露
│ │ │ │ ├─ LLM03 供应链(← 后门/LoRA)
补丁 数据集 图像分类 脏标签 ├─ LLM04 数据/模型投毒
↓ ↓ ↓ ↕ ├─ LLM05 不当输出处理
混合 训练过程 生成模型 净标签 ├─ LLM06 过度授权
↓ ↓ ↓ ├─ LLM07 系统提示泄露
信号 预训练模型 LLM ├─ LLM08 向量/嵌入弱点
↓ ↓ ↓ ├─ LLM09 misinformation
形变 联邦学习 语音/多模态 └─ LLM10 无界消耗
↓ ↓
反射 训练后注入
↓
动态专属
↓
特征空间(无像素痕迹)
↓
⚠️ 提示词层(不碰权重)
【防御:四层】
L1 数据侧 → L2 模型侧 → L3 输入侧 → L4 供应链侧(地基)
6.2 十二条要点
-
后门 ≠ 对抗样本 :对抗样本是骗模型 (推理时改输入),后门是改模型(训练时埋开关)。
-
好后门 = CA 几乎不掉 + ASR > 95%。只报其中一个数的论文都不算成功。
-
触发器形态的演化史是一场隐身军备竞赛:补丁 → 混合 → 信号 → 形变 → 反射 → 动态专属 → 特征空间 → 提示词。
-
"训练/测试幅度错配"是净标签后门的通用套路:训练用看不见的弱触发器,测试用强触发器激活。
-
WaNet 的洞察极漂亮 :人类不擅长察觉轻微几何形变,机器非常擅长------这个不对称性就是攻击空间。
-
Refool 的哲学:最完美的触发器是"看起来不像触发器"的东西,自然现象(反射、光影)也是候选。
-
Input-Aware / DBA 的共同手法都是"拆" :前者把触发器拆成每张图专属,后者拆给不同参与方------拆分让聚合类防御失效。
-
Latent Backdoor 是最贴近现实的威胁:不用碰你的数据,只要污染你下载的上游预训练模型,微调即激活。
-
⚠️ 生成模型也逃不掉 :BadDiffusion 证明微调几个 epoch 就能给扩散模型植入后门,成本极低。
-
⚠️ BadChain 的反直觉结论 :推理能力越强的 LLM 越容易中招(GPT-4 上 ASR 97%)------能力本身成了攻击面。
-
⚠️ 工程上最危险的不是学术后门,是模型文件投毒 :pickle 反序列化 = 加载即执行任意代码。优先用 safetensors。
-
防御普遍依赖"存在全局统一触发器"这一假设,而这恰恰是动态触发器、特征空间后门专门摧毁的东西。
6.3 📚 参考资源
后门攻击核心文献
| 文献 | 出处 |
|---|---|
| BadNets | arXiv:1708.06733 | IEEE Access 2019 |
| Targeted Backdoor(Blend) | arXiv:1712.05526 |
| Trojaning Attack on NN | Liu et al., 2017 |
| Latent Backdoor | arXiv:1905.10447 | ACM CCS 2019 |
| SIG(正弦信号) | Barni et al., 2019 |
| Label-Consistent | arXiv:1912.02771 | ICLR 2020 |
| Hidden Trigger | arXiv:1910.00033 | AAAI 2020 |
| FL Model Replacement | Bagdasaryan et al., AISTATS 2020 |
| DBA | ICLR 2020 | GitHub: yichen1990/DBA |
| Input-Aware Dynamic | arXiv:2010.08138 | NeurIPS 2020 |
| WaNet | arXiv:2102.10369 | ICLR 2021 |
| Sample-Specific Invisible | ICCV 2021 |
| Refool | arXiv:2007.02343 | ECCV 2020 |
| Sleeper Agent | NeurIPS 2022 |
| BadDiffusion | arXiv:2212.05400 | ECCV 2022 | GitHub: IBM/BadDiffusion |
| BadChain | arXiv:2401.12242 | ICLR 2024 |
防御与工具
| 资源 | 说明 |
|---|---|
| Neural Cleanse | IEEE S&P 2019,触发器逆向检测的奠基方法 |
| STRIP | 推理时输入扰动熵检测 |
safetensors |
HuggingFace 安全张量格式,杜绝反序列化 RCE |
| Backdoor Learning Resources | GitHub - THUYimingLi/backdoor-learning-resources: A list of backdoor learning resources · GitHub(清华 Yiming Li 维护的后门学习资源清单) |
LLM 安全
| 资源 | 链接 |
|---|---|
| OWASP LLM Top 10 | [OWASP Top 10 for Large Language Model Applications | OWASP Foundation](https://owasp.org/www-project-top-10-for-large-language-model-applications/ "OWASP Top 10 for Large Language Model Applications |
| Gandalf | Lakera -- Test your AI hacking skills |
| HackAPrompt | https://www.hackaprompt.com/ |
| InjectArena(中文) | InjectArena (攻心) - OWASP VWAD |
| PortSwigger LLM Attacks | [Web LLM attacks | Web Security Academy](https://portswigger.net/web-security/llm-attacks "Web LLM attacks |
🙏 声明
-
内容来源 :本文为个人学习笔记整理,全部素材来自公开发表的学术论文与开源项目,核心文献均已核对原文,不含任何内部资料或敏感信息。第三章为公开文献的额外补充。
-
本文改动:结构重排、原理补全、通俗化改写与工程建议补充(💡 补充 / ⚠️ 易错 / 📌 重点),并加入可运行代码片段。
-
合规声明 :文中所有攻击方法仅用于学术研究、防守侧检测与授权红队评估。 在他人模型中植入后门、投毒公开数据集、污染模型仓库、分发恶意模型文件,均属违法。
-
如需转载请注明出处;如有侵权请联系删除。
