跳到正文
原文

揭开有缺陷的对抗样本防御:修复一行代码即可攻破 Sabre

Cutting through buggy adversarial example defenses: fixing 1 line of code breaks Sabre

arXiv· arXiv:2405.03672· Nicholas CarliniGoogle DeepMind本站收录· 14 天前· 原文发表入选 攻击精选关注度42

论文速读

攻击

据论文 PDF 整理(AI 生成),以原文为准

作者指出对抗样本防御 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 · MNIST、CIFAR-10 · robust accuracy、attack success rate
威胁模型
作者作为攻击者,针对 Sabre 防御进行自适应攻击(adaptive attack)。攻击者完全了解防御实现细节(白盒),通过修改防御代码或攻击超参数来绕过防御,受害系统是 Sabre 防御的图像分类器(MNIST 和 CIFAR-10)。
被测模型
Sabre
基准
MNISTCIFAR-10
指标
robust accuracyattack success rate
AI 导读和推荐理由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 作者的回应与作者的反驳。

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 防御,并据此梳理对抗鲁棒性评测中梯度掩蔽与基线误报的具体表现。

深度解读

6个问题,点开问题读完整回答

  1. 这篇论文试图解决什么问题?

    验证 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%。
  2. 有哪些相关研究?

    论文涉及对抗样本防御评测标准、自适应攻击、梯度掩码及预处理器防御等相关工作。

    对抗样本防御评测标准

    • 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。

    作者定位本文与相关工作的区别在于:不仅指出评测缺陷,还通过实际修改代码展示了防御的脆弱性,并强调自适应攻击的必要性。

  3. 论文如何解决这个问题?

    作者通过代码审计和四次自适应攻击(修改 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%,低于随机猜测基线。
  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 结果基于作者自行训练的模型(使用原作者代码),非原作者提供模型。
  5. 有什么可以进一步探索的点?

    作者指出 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)的测试;未报告对防御计算开销的测量。
  6. 总结一下论文的主要内容

    作者通过四次修改 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 和梯度掩码,强调自适应攻击和标准评测实践的重要性,并指出社区需更严格审查防御论文以避免类似错误。

相关论文

共同使用 MNIST
再看 3 篇
共同使用 MNIST
共同使用 CIFAR-10
阅读原文arxiv.org