BadAgent, BadEncoder, FREEEAGLE
BadAgent: Inserting and Activating Backdoor Attacks in LLM Agents#
- LLM 后门, trigger
- 少量后门训练数据 (≤ 500 个样本) 就可以达到较高的攻击成功率
攻击方法包括:
- 主动攻击: 即直接在输入中插入触发器 trigger, 触发 agent 的恶意行为
- 被动攻击: 在环境中插入 trigger, 例如针对网页导航 agent, 在某个网页中放一个不可见的 trigger 按钮
PEFT: Parameter-Efficient Fine-Tuning 参数高效微调, 只微调大模型的一小部分参数.
实验表明, 常规防御 (试图用干净数据微调对冲有毒数据的影响) 完全无效.
和 LLM 攻击的区别:
- 传统的「内容层面攻击」诱导 LLM 生成有害内容, 例如说藏话, 且多为 prompt 注入
- 行动层面的攻击诱导智能体干坏事, 且包含了在环境中插入有害信息的新方法
可能的防御思路:
- 采用专门的检测方法检测 LLM 中是否有后门
- 在参数级别进行净化以降低模型中的后门风险, 例如进行蒸馏
研究局限: 模型不大 (13B), 测试的任务不多.
BadEncoder: Backdoor Attacks to Pre-trained Encoders in Self-Supervised Learning#
自监督学习模型主要基于:
- 预训练编码器, 通过大量无标记数据获取通用知识
- 构建下游分类器, 微调, 学习专业技能
以前的后门攻击主要是针对下游分类器 (如数据下毒), 本文提出了针对自监督学习预训练编码器的后门攻击 BadEncoder.
目标:
- 有效性, 图片含有 trigger 则分类器必须把它分类为攻击者指定的目标类别
- 实用性/隐蔽性, 不影响正常工作
自监督学习训练编码器主要包括:
- 只用无标签图片, 如对比学习, 例如对一张图片进行模糊, 拉伸处理等, 和原图标记为正样本对.
- 使用无标签的图文对, 同时训练一个图像编码器和一个文本编码器, 给定一个图像文本对, 二者同时生成特征向量, 计算其余弦相似度.
下游分类器主要包括:
- 多样本分类器, 根据下游数据集训练.
- 零样本分类器, 使用诸如「一张 {停车标志} 的照片」的句子输入文本编码器得到编码特征, 把目标图片输入图片编码器, 对比输出结果, 和哪个文本结果最接近就认为是那个类别.
威胁模型#
攻击者的目标:
- 目标下游任务
- 目标类别
- 后门触发器
需要实现有效性和实用性 (隐蔽性), 攻击者可能是不可信的服务提供商/恶意第三方.
攻击者拥有:
- 干净的预训练图像编码器
- 影子数据集 (一堆无标签图片)
- 参考输入 (目标类别的图)
攻击者绝对没有:
- 受害者用来训练下游分类器的数据
- 绝对不能篡改受害者的下游训练过程
技术实现#
对每张影子图片 , 插入触发器 , 并计算和参考输入的相似度:
同时保证编码器对参考输入提取出的特征一致:
以及对正常图片保证工作:
总损失函数:
和 是超参数.
使用梯度下降求解即可.
最终结果反正就是很好.
防御措施#
经验型防御的 Neural Cleanse, MNTD, 可证明防御的 PatchGuard 效果都很差.
FREEEAGLE: Detecting Complex Neural Trojans in Data-Free Cases#
现实挑战:
- Data-Free: 防御者既没有干净数据, 也没有包含攻击的数据.
- 后门变得复杂:
- 类别不可知后门, 无差别攻击, 只要有 trigger 就输出目标.
- 类别特定后门, 只有特定输入 + trigger 才会误判, 非常难察觉.
触发器的变体:
- 像素空间触发器, 像素层面的静态修改.
- 特征空间触发器, 语义特征的修改, 利用自然语义出发, 例如正常识别「羊」, 但将「绿色草地上的羊」识别为「狼」.
现有防御手段:
- 部署阶段检测, 太迟了
- 离线训练数据集检测, 我们没有数据集
- 离线模型检测, 我们没有干净数据
- 唯一的现存 Data-free 方法 (DF-TND), 对复杂后门表现差, 对小模型泛化差
深度神经网络 DNN 通常分为特征提取器和分类器, 中间表示 Intermediate Representation, IR.
带毒模型中, 即使输入是正常图片, 模型输出中, 目标输出的概率通常会 微妙地 高一点.
本文选择生成虚拟的 IR, 优点为
- data free
- 空间更小, 特征质量更稳定
- 不管是什么 trigger, 到这层都是特征向量
详细算法:
- 在模型里选一层 , 把模型切成两半
- 对模型的每一个类别 (如类别 0 到 9), 都强行在切口处用梯度下降法逆向捏造出一个最能代表该类别的 Dummy IR, 满足分类器遇到这个 IR 时, 输出该类的概率最大, 损失最小.
- 将上一步的所有 IR 依次放进分类器, 看它对其他类别的输出概率是多少, 得到一个 的矩阵 , 行是输入的类别 IR, 列是模型预测的概率分布.
- 清空矩阵对角线, 计算每一列的平均值, 若某一列均值异常高, 则为目标类.
- 有时候两个类别天生就很像, 为防止干扰, 采用基准经验值修正.
总之效果好正确率高速度还快.
可能的自适应攻击:
- 后验概率整形, 攻击者在训练模型时故意压低目标类别的概率上限, 但效果并不好, 因为 FREEEAGLE 是找相对异常.
- 给特征提取器下毒, 把切分点设置得略微靠前可解.