Skip to main content
QUICK REVIEW

[论文解读] CodeAttack: Code-Based Adversarial Attacks for Pre-trained Programming Language Models

Akshita Jha, Chandan K. Reddy|arXiv (Cornell University)|May 31, 2022
Adversarial Robustness in Machine Learning被引用 4
一句话总结

CodeAttack 是一种黑盒对抗攻击框架,通过生成难以察觉且具备代码结构感知能力的扰动,在代码的自然通道中逃避预训练编程语言模型(PLMs)的检测。通过利用掩码代码模型与结合语法和语义约束的贪婪搜索策略,它在保持流畅性、一致性和最小改动的前提下,实现了极高的攻击成功率,尤其在 GraphCodeBERT 上表现突出,暴露了当前最先进 PLMs 中的关键安全漏洞。

ABSTRACT

Pre-trained programming language (PL) models (such as CodeT5, CodeBERT, GraphCodeBERT, etc.,) have the potential to automate software engineering tasks involving code understanding and code generation. However, these models operate in the natural channel of code, i.e., they are primarily concerned with the human understanding of the code. They are not robust to changes in the input and thus, are potentially susceptible to adversarial attacks in the natural channel. We propose, CodeAttack, a simple yet effective black-box attack model that uses code structure to generate effective, efficient, and imperceptible adversarial code samples and demonstrates the vulnerabilities of the state-of-the-art PL models to code-specific adversarial attacks. We evaluate the transferability of CodeAttack on several code-code (translation and repair) and code-NL (summarization) tasks across different programming languages. CodeAttack outperforms state-of-the-art adversarial NLP attack models to achieve the best overall drop in performance while being more efficient, imperceptible, consistent, and fluent. The code can be found at https://github.com/reddy-lab-code-research/CodeAttack.

研究动机与目标

  • 暴露预训练编程语言模型(PLMs)在代码自然通道中对对抗攻击的脆弱性,即通过操纵人类可读元素(如变量名和注释)实现攻击。
  • 开发一种无需访问模型参数、仅依赖输入查询和模型预测的现实黑盒攻击方法。
  • 确保对抗性样本难以察觉、语言流畅、与原始代码风格一致,并在多种编程语言中保持语法正确性。
  • 评估攻击在不同 PLM 任务(如代码翻译、代码修复和代码-自然语言摘要)之间的可迁移性。
  • 证明代码特定约束与结构感知扰动在有效性和质量方面显著优于通用 NLP 对抗方法。

提出的方法

  • CodeAttack 使用预训练的掩码 CodeBERT 模型作为生成器,为代码中的易受攻击标记生成上下文相关、语义有效的替代项。
  • 采用贪婪搜索策略,迭代替换特定标记(如标识符、运算符和关键字),同时强制执行代码一致性与流畅性约束。
  • 强制执行三项关键约束:(1) 代码语法必须保持有效,(2) 扰动后的代码必须保留原始语义,(3) 修改必须最小化且对人类读者难以察觉。
  • 结合三种攻击变体:CodeAttack_VUL(易受攻击标记)、CodeAttack_OP(运算符)和 CodeAttack_TOK(标记),通过联合约束实现最佳性能。
  • 使用攻击成功率、性能下降(Δ_drop)、CodeBLEU 分数(q)和查询效率等指标进行评估,并辅以人工评估以检验流畅性与一致性。
  • 设计为输入语言无关,支持在不同编程语言及下游任务(如代码摘要和代码翻译)之间实现可迁移性。

实验结果

研究问题

  • RQ1在代码的自然通道中,针对变量名和注释等人类可读元素的对抗攻击,是否能显著降低最先进预训练编程语言模型的性能?
  • RQ2与现有基于 NLP 的对抗攻击方法相比,CodeAttack 在生成难以察觉、流畅且一致的对抗性代码样本方面效果如何?
  • RQ3CodeAttack 在不同编程语言模型、任务(如代码翻译、修复、摘要)以及编程语言之间的可迁移性如何?
  • RQ4为何 GraphCodeBERT 比 CodeT5 更容易受到 CodeAttack 的影响?预训练目标在多大程度上影响模型的鲁棒性?
  • RQ5人类评估者能否可靠地区分对抗性代码样本与原始代码?扰动后的样本在流畅性和一致性方面表现如何?

主要发现

  • CodeAttack 在所有评估模型和任务中均实现了最高的攻击成功率,在代码摘要任务中 Δ_drop 高达 50%,显著优于 NLP 基线方法。
  • 在 GraphCodeBERT 上,CodeAttack 在代码翻译任务中引发超过 50% 的 Δ_drop,表明其高度有效性,原因在于该模型对数据流和标识符关系的强依赖。
  • 人工评估显示,72.1% 的对抗样本被标注者误判为原始代码,平均代码理解得分为 4.14/5,证实了其流畅性与难以察觉性。
  • 运算符级别与标记级别约束的结合显著提升了攻击成功率与 Δ_drop,CodeBLEU q 分数表明其具有高度的语义保真度。
  • 由于 CodeT5 在掩码标识符预测任务上进行预训练,其对名称更改的敏感性降低,因此表现出比其他模型更高的鲁棒性。
  • CodeAttack 在攻击质量、效率和语法正确性方面全面优于所有基于 NLP 的对抗攻击基线方法,确立了代码特定对抗攻击的新基准。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。