基于判别性图模式的代码模型对抗攻击
软件工程
2024-11-01 v2
摘要
代码预训练语言模型现已广泛应用于代码生成、代码补全、漏洞检测等多种软件工程任务中。这反过来给这些模型带来了安全性和可靠性风险。其中一类重要威胁是对抗攻击(adversarial attacks),它可导致错误预测并大幅影响模型在下游任务上的性能。当前针对代码模型的对抗攻击通常采用固定的程序变换集合,如变量重命名和死代码插入,导致攻击效果有限。为应对上述挑战,我们提出一种新颖的对抗攻击框架 GraphCodeAttack,以更好地评估代码模型的鲁棒性。给定目标代码模型,GraphCodeAttack 自动挖掘能够影响模型决策的重要代码模式,从而扰动输入代码的结构。为此,GraphCodeAttack 使用一组输入源代码探测模型的输出,并识别出能够影响模型决策的判别性(discriminative)AST 模式。随后,GraphCodeAttack 选择合适的 AST 模式,将其具体化为攻击,并作为死代码插入模型的输入程序中。为从 AST 模式有效合成攻击,GraphCodeAttack 使用另一个预训练代码模型将具体代码片段填入 AST 中。我们在三个任务上评估了两个流行代码模型(如 CodeBERT 和 GraphCodeBERT)针对我们所提方法的鲁棒性:作者归属、漏洞预测和克隆检测。实验结果表明,相较于 CARROT 和 ALERT 等当前最优的代码模型攻击方法,我们所提方法显著更优。
引用
@article{arxiv.2308.11161,
title = {Adversarial Attacks on Code Models with Discriminative Graph Patterns},
author = {Thanh-Dat Nguyen and Yang Zhou and Xuan Bach D. Le and Patanamon Thongtanunam and David Lo},
journal= {arXiv preprint arXiv:2308.11161},
year = {2024}
}