揭开有缺陷的对抗样本防御:修复一行代码即可攻破 Sabre
Cutting through buggy adversarial example defenses: fixing 1 line of code breaks Sabre
作者指出对抗样本防御 Sabre 的评测存在缺陷,通过修改 1 行代码四次将其鲁棒准确率降至 0% 或 4%。
作者作为攻击者,针对 Sabre 防御进行自适应攻击(adaptive attack)。
- Sabre 是 IEEE S&P 2024 接收的对抗样本防御,声称将 CIFAR-10 上最佳攻击成功率从 29% 降至 11%。作者指出其评测存在数学上不可能的结果和梯度掩码迹象,需要验证其真实鲁棒性。
- 作者首先用 GPT-4 辅助识别原论文评测中的矛盾,然后针对防御代码进行四次自适应攻击:移除多余的 BPDA 包装、对离散化函数插入 BPDA、注释掉离散化代码、以及取反 PGD 步长超参数。
- 四次攻击均成功:第一次将 MNIST 和 CIFAR-10 鲁棒准确率降至 0%;第二次在 MNIST 上达 21% 成功率(高于基线 13%)、CIFAR-10 达 100%;第三次将官方 CIFAR-10 模型降至 0%;第四次降至 4%。
- 作者指出 Sabre 未进行自适应攻击测试、未遵循标准评测实践(如缺少梯度自由攻击、硬标签攻击、随机噪声攻击)。第二次攻击的 CIFAR-10 结果是基于作者自行训练的模型,非原作者提供的模型。
- 威胁模型
- 作者作为攻击者,针对 Sabre 防御进行自适应攻击(adaptive attack)。攻击者完全了解防御实现细节(白盒),通过修改防御代码或攻击超参数来绕过防御,受害系统是 Sabre 防御的图像分类器(MNIST 和 CIFAR-10)。
- 被测模型
- Sabre
- 基准
- MNISTCIFAR-10
- 指标
- robust accuracyattack success rate
Nicholas Carlini 的论文指出,IEEE S&P 2024 接收的对抗样本防御 Sabre 因评测代码缺陷出现梯度掩蔽,改动一行代码即可让其鲁棒准确率在 CIFAR-10 上降到 0%。论文称最初只需去掉多余的 BPDA 包装,就把 MNIST 在 ε=0.3 下的准确率压到 5% 以下,迭代步数提高到 100 时降到 0%;Sabre 作者随后三次修改代码、加入原论文未描述的离散化组件,Carlini 分别用插入 BPDA 包装、注释掉一行离散化代码和把攻击步长 α 取负再次攻破,最后一次使防御准确率降到 4%。论文还指出该防御未做自适应攻击评估、把 PGD 鲁棒性报成 30% 而实际在 90% 以上、对抗训练基线实现有误,并附上 Sabre 作者的回应与作者的反驳。
推荐理由论文用逐步改动一行代码的方式攻破 Sabre 防御,并据此梳理对抗鲁棒性评测中梯度掩蔽与基线误报的具体表现。
深度解读
这篇论文试图解决什么问题?
验证 IEEE S&P 2024 防御 Sabre 的鲁棒性声明,指出其评测存在缺陷并通过修改代码四次攻破该防御。
验证对抗样本防御 Sabre 的鲁棒性声明是否成立。 Sabre 是 IEEE S&P 2024 接收的防御,声称在 CIFAR-10 上将最佳攻击成功率从 29% 降至 11%,但作者发现其评测存在数学上不可能的结果和明显的梯度掩码迹象。
- 问题场景:对抗样本防御的评测需要遵循标准最佳实践,但 Sabre 声称在 ε=0.5 时仍有 92.66% 准确率(理论上应接近随机猜测),且攻击下的准确率反而高于无攻击状态。
- 现有方法不足:Sabre 未进行自适应攻击测试,错误实现对抗训练基线(MNIST 上报告 70% 成功率而非正确的 11%),并与已知被攻破的 ME-Net 比较而未考虑攻破方法。
- 核心观察:Sabre 的预处理防御存在梯度掩码,其声称的端到端可微性与实际实现不符,且评测代码中存在 bug。
- 威胁模型:作者作为攻击者,采用自适应攻击(adaptive attack),完全了解防御实现细节(白盒),通过修改防御代码或攻击超参数来绕过防御,受害系统是 Sabre 防御的图像分类器(MNIST 和 CIFAR-10)。
- 论文贡献:通过修改 1 行代码四次攻破 Sabre 及其后续修复版本,将鲁棒准确率降至 0% 或 4%。
有哪些相关研究?
论文涉及对抗样本防御评测标准、自适应攻击、梯度掩码及预处理器防御等相关工作。
对抗样本防御评测标准
- Carlini et al. [3] —— 提出了评估对抗鲁棒性的最佳实践清单,包括验证迭代攻击优于单步攻击、进行自适应攻击、尝试梯度自由攻击等。本文以此清单为依据批评 Sabre 的评测缺陷。
- Tramèr et al. [7] —— 讨论了自适应攻击作为评估防御的事实标准,指出针对非自适应攻击的防御效用有限。
梯度掩码与攻击方法
- Athalye et al. [1] —— 提出了 BPDA(Backward Pass Differentiable Approximation)方法,用于处理不可微防御的梯度估计。本文指出 Sabre 错误地对已可微的防御使用 BPDA,反而掩盖了真实梯度。
- Croce and Hein [4] —— 提出了 AutoAttack,一种集成多种无参数攻击的评估方法。Sabre 作者误将 AutoAttack 视为自适应攻击,而本文指出 AutoAttack 并非自适应攻击的替代品。
被对比的防御基线
- Madry et al. [6] —— 对抗训练(Adversarial Training),当前最先进的防御方法。Sabre 错误实现了该方法,在 MNIST 上报告 70% 攻击成功率而非正确的 11%。
- Yang et al. [9] —— ME-Net,一种预处理器防御,2019 年发表后两个月即被攻破。Sabre 与其比较但未考虑攻破方法,且未在论文中提及 ME-Net 已被攻破的事实。
- Xu et al. [8] —— Feature Squeezing,2017 年提出的输入离散化防御。本文在第二次攻击中引用其作为基线,指出 Sabre 的二值化防御成功率(21%)反而高于单纯的二值化(13%)。
基线与基准
- 基线方法:对抗训练(Madry et al.)、ME-Net、Feature Squeezing。
- 基准数据集:MNIST、CIFAR-10。
作者定位本文与相关工作的区别在于:不仅指出评测缺陷,还通过实际修改代码展示了防御的脆弱性,并强调自适应攻击的必要性。
论文如何解决这个问题?
作者通过代码审计和四次自适应攻击(修改 1 行代码),逐步攻破 Sabre 及其三个修复版本。
整体思路:作者首先用 GPT-4 辅助识别原论文评测中的数学矛盾,然后针对防御代码进行四次自适应攻击,每次仅修改 1 行代码(移除函数调用、插入函数调用、注释代码、修改超参数符号),将鲁棒准确率降至 0% 或 4%。
评测缺陷识别
- GPT-4 辅助分析:将评测清单 [3] 和 Sabre 论文截图输入 GPT-4,识别出两个数学上不可能的结果:ε=0.5 时 92.66% 的准确率(应接近随机猜测),以及攻击下准确率(95.68%)高于无攻击状态(83.57%)。
- 标准遵循检查:对照 [3] 指出 Sabre 未验证迭代攻击优于单步攻击、未进行自适应攻击、未尝试梯度自由或硬标签攻击、未进行随机噪声攻击、未做消融研究。
第一次攻击:移除多余的 BPDA 包装
- 问题定位:Sabre 声称端到端可微,但评测代码却用 BPDA 包装预处理步骤,用估计梯度 f'(x)=x 替代真实梯度,导致梯度掩码。
- 攻击方法:删除
BPDAWrapper包装,恢复真实梯度计算。 - 关键参数:MNIST 上 ε=0.3,CIFAR-10 上 ε=8/255,PGD 迭代从 7 步增至 100 步。
第二次攻击:对离散化函数插入 BPDA
- 防御变更:作者引入
diff_round可微离散化函数(MNIST 二值化到 {0,1},CIFAR-10 离散化到一位小数),但实现存在 bug,梯度几乎处处为负(Figure 1)。 - 攻击方法:对
diff_round插入 BPDA 包装,绕过错误的梯度。 - 关键发现:MNIST 上攻击成功率 21%,高于单纯二值化的 13% [8];CIFAR-10 上成功率 100%。
第三次攻击:注释掉离散化代码
- 防御变更:作者发布 300 行代码修改,在
DenoisingCNN前向传播中加入硬离散化(将输入离散化为 8 个等级),导致梯度恒为零。 - 攻击方法:攻击时注释掉离散化代码行,评估时恢复,等效于 BPDA 攻击。
- 关键参数:针对官方提供的 CIFAR-10 预训练模型。
第四次攻击:取反 PGD 步长
- 防御变更:作者移除所有离散化步骤,声称“无离散化重构”,但代码无法复现原始结果(CIFAR-10 上 PGD 攻击后准确率达 100%,与论文声称的 93% 不符)。
- 攻击方法:将 EoT-PGD 的步长超参数 α 从 2/255 改为 -2/255,即向梯度反方向更新。
- 现象:防御准确率降至 4%,低于随机猜测基线。
论文做了哪些实验?
作者在 MNIST 和 CIFAR-10 上四次攻破 Sabre,鲁棒准确率分别降至 0%、21%/100%、0% 和 4%。
实验设置
- 被测防御:Sabre 原始版本及三个后续修复版本(分别引入离散化、硬离散化、无离散化重构)。
- 数据集:MNIST(扰动 ε=0.3)、CIFAR-10(扰动 ε=8/255)。
- 攻击方法:PGD(7 步或 100 步)、EoT-PGD(7 步,eot_steps=10)。
- 基线:对抗训练 [6]、Feature Squeezing [8](仅 MNIST 二值化对比)。
- 指标:鲁棒准确率(robust accuracy)、攻击成功率(attack success rate)。
- 评审方式:使用 GPT-4 检查原论文评测缺陷(Section 3),作者人工验证 GPT-4 识别的准确性。
主结果
表格较宽,可左右滑动
攻击轮次 防御版本 数据集 修改内容 鲁棒准确率 出处 第一次 原始版本 MNIST 移除 BPDA 包装 0% Section 6.1 第一次 原始版本 CIFAR-10 移除 BPDA 包装 0% Section 6.1 第二次 第一次修复(离散化) MNIST 插入 BPDA 包装 21% 攻击成功率 Section 6.3 第二次 第一次修复(离散化) CIFAR-10 插入 BPDA 包装 100% 攻击成功率 Section 6.3 第三次 第二次修复(硬离散化) CIFAR-10 注释离散化代码 0% Section 6.4 第四次 第三次修复(无离散化) CIFAR-10 取反 PGD 步长 4% Section 6.5 - 作者解读:第一次攻击表明原始评测的 BPDA 包装是梯度掩码的根源;第二次攻击表明引入的离散化函数实现错误(梯度为负);第三次攻击表明硬离散化导致梯度为零;第四次攻击表明模型梯度方向异常。
对防御的评测
- 测了什么:Sabre 原始论文声称的鲁棒性是否成立。
- 结果:原始评测存在数学矛盾(ε=0.5 时 92.66% 准确率),且未进行自适应攻击。作者通过修改代码四次将鲁棒准确率降至 0% 或 4%。
- 作者解读:Sabre 的鲁棒性声明源于评测 bug 和梯度掩码,而非真实鲁棒性。
迁移与泛化
- 测了什么:第二次攻击中,对 MNIST 二值化防御和 CIFAR-10 一位小数离散化防御分别插入 BPDA。
- 结果:MNIST 上攻击成功率 21%,高于 Feature Squeezing 基线的 13%;CIFAR-10 上成功率 100%。
- 作者解读:Sabre 的离散化防御反而降低了鲁棒性,低于简单的二值化基线。
机理分析
- 测了什么:
diff_round函数的梯度特性(Figure 1)。 - 结果:该函数在输入 0.0 到 0.3 范围内梯度几乎处处为负,导致梯度下降远离对抗样本。
- 作者解读:这是作者见过的最极端的梯度掩码形式,梯度不仅隐藏方向,还指向错误方向。
其他消融与分析
- 迭代次数:第一次攻击中,MNIST 上 PGD 从 7 步增至 100 步,准确率从 <5% 降至 0%。
- 离散化精度:第二次攻击中,MNIST 从 0 位小数(二值化)改为 1 位小数,攻击成功率从 21% 升至 100%。
- 模型来源:第二次攻击的 CIFAR-10 结果基于作者自行训练的模型(使用原作者代码),非原作者提供模型。
有什么可以进一步探索的点?
作者指出 Sabre 未进行自适应攻击、未遵循标准评测实践,且第四次攻击现象的原因尚不明确。
作者指出的局限与后续方向
- 自适应攻击缺失:Sabre 未进行自适应攻击测试,作者引用 [3] 指出“防御非自适应攻击是必要的但不够”(Section 5)。
- 评测实践缺陷:Sabre 未遵循标准最佳实践,包括未验证迭代攻击优于单步攻击、未尝试梯度自由攻击和硬标签攻击、未进行随机噪声攻击、未做消融研究(Section 4)。
- 基线实现错误:Sabre 错误实现对抗训练基线,且与已知被攻破的 ME-Net 比较时未考虑攻破方法(Section 5)。
- 代码可复现性:第四次攻击中,作者发现最新代码无法复现原始论文结果(CIFAR-10 上 PGD 攻击后准确率 100% 而非论文声称的 93%),且作者无法运行 MNIST 模型(清洁准确率降至 10%)(Section 6.5)。
- 现象原因不明:第四次攻击中取反步长导致准确率降至 4%,作者表示“解释这一现象超出本文范围”,可能是模型重训练导致梯度反向或重构模型行为改变(Section 6.5)。
实验覆盖范围
- 被测模型:Sabre 防御的四个版本(原始版及三次修复版),基于 MNIST 和 CIFAR-10 数据集。
- 攻击方法:PGD(7 步、100 步)、EoT-PGD(7 步,eot_steps=10)。
- 评审模型:GPT-4 用于识别原论文评测缺陷(Section 3)。
- 样本量:论文未报告具体样本量。
- 重复次数:论文未报告重复实验次数。
- 未覆盖:论文未报告对 Sabre 原始论文中其他数据集(如 SPEECH-COMMANDS)的测试;未报告对防御计算开销的测量。
总结一下论文的主要内容
作者通过四次修改 1 行代码的自适应攻击,将 IEEE S&P 2024 防御 Sabre 的鲁棒准确率降至 0% 或 4%,指出其评测存在缺陷。
本文针对 IEEE S&P 2024 接收的对抗样本防御 Sabre,指出其评测存在数学上不可能的结果和梯度掩码迹象,并通过四次自适应攻击验证了其脆弱性。
- 问题:Sabre 声称在 CIFAR-10 上将攻击成功率从 29% 降至 11%,但作者发现其评测违反标准实践,且结果在数学上不可能(如 ε=0.5 时 92.66% 准确率)。
- 方法:作者首先用 GPT-4 识别评测缺陷,然后针对防御代码进行四次攻击:移除多余的 BPDA 包装、对错误的离散化函数插入 BPDA、注释掉硬离散化代码、取反 PGD 步长超参数。
- 结果:
- 第一次攻击:MNIST 和 CIFAR-10 上鲁棒准确率降至 0%(Section 6.1)。
- 第二次攻击:MNIST 上攻击成功率 21%(高于基线 13%),CIFAR-10 上 100%(Section 6.3)。
- 第三次攻击:官方 CIFAR-10 模型鲁棒准确率降至 0%(Section 6.4)。
- 第四次攻击:CIFAR-10 上鲁棒准确率降至 4%(Section 6.5)。
- 结论:作者认为 Sabre 的鲁棒性声明源于评测 bug 和梯度掩码,强调自适应攻击和标准评测实践的重要性,并指出社区需更严格审查防御论文以避免类似错误。