Page 76 - 《软件学报》2025年第4期
P. 76
1482 软件学报 2025 年第 36 卷第 4 期
留了原始代码语义. 常用于评估深度代码生成模型被攻击前后的性能差异.
(6) 攻击成功率 (attack success rate, ASR): 指成功使模型预测为目标标签的中毒或对抗样本所占的比例, 用于
衡量后门攻击或对抗攻击的攻击效果. 攻击成功率越高, 攻击方法的性能越好.
(7) 后门误触率 (false positive rate, FPR): 用于评估分类模型性能的指标之一. 常用于评估后门防御方法的性能.
(8) 平均归一化排名 (average normalized rank, ANR): 用于衡量对代码检索模型发起后门攻击的有效性, ANR
表示攻击可以在多大程度上提升中毒样本的检索排名. ANR 值越小代表攻击方法越有效.
(9) k-成功率 (SuccessRate@k): 衡量检索模型输出中相应代码片段排名在前 k 的平均数量占比. 一般而言,
k-成功率越高, 代码检索模型的效果越好.
(10) 查询数量 (number of queries): 用于表示在对抗攻击中对于目标模型攻击成功的平均查询数. 对于黑盒对
抗攻击方法而言, 查询是访问目标模型的唯一方法. 因此查询数量是评估黑盒对抗攻击方法效率的重要指标之一.
(11) 扰动比例 (ratio of perturbation, Pert): 用于表示在对抗攻击中注入到原始源代码中的扰动比例. 较低的扰
动比例表明生成的对抗样本具有较少的扰动.
(12) 相对退化值 (relative degradation, r_d): 用于评估模型处于攻击状态下的性能退化情况.
. 有研究表明
(13) 有效率 (valid rate, vr): 定义为能够通过编译的对抗样本的百分比. 该指标用于评估生成的对抗样本的质
量以及生成过程的效率.
(14) 成功率 (success rate, S_r): 定义为相对退化与有效率的乘积, 提供攻击效率和生成的样本质量的综合指
标. 本质上, 更高的成功率表明相应的方法可以生成具有更好攻击能力的有效对抗样本, 因此需要更有效的攻击方法.
(15) 变量修改率 (variable change rate, VCR): 攻击者攻击成功所需要修改的变量占比. VCR 越低代表攻击方
法越优秀, 代表仅需要修改少量变量便可以找到高效的对抗样本.
不同的评估指标关注的是模型在不同方面的能力, 从模型性能和安全性的角度出发, 我们可以将 15 个评估指
标分为两大类. 第 1 类评估指标主要用于评估模型在正常操作下的性能, 包括干净数据准确率、F1 分数、平均倒
数排名、双语评估替补和 CodeBLEU, 它们从不同维度反映了模型在预测、分类或回归任务中的表现. 第 2 类评
估指标则侧重于评估模型在面对对抗和后门攻击时的表现, 包括攻击成功率、后门误触率、平均归一化排名、
k-成功率、查询数量、扰动比例、相对退化值、有效率、成功率和变量修改率, 它们评估了模型在应对恶意输入
或操纵时的能力. 这些指标之间各自独立, 它们从不同维度和角度细致地刻画了模型在正常操作或面对攻击或进
行防御时的性能表现, 没有不同的权重, 没有重要性排序. 这些指标在不同的评估场景中也没有不同的权重. 不同
的代码相关任务需要选择不同的评估指标来准确评估模型的表现.
5 研究难点与未来挑战
根据前面章节对深度代码模型安全相关研究的介绍可以得知, 尽管深度代码模型在不同的软件工程任务中已
经取得了一系列瞩目的研究成果, 但是对于深度代码模型的安全性研究仍然处于初级阶段, 依然存在许多关键问
题尚待解决. 具体而言, 目前研究者利用对抗攻击与后门攻击已经发现深度代码模型存在许多安全问题, 但是提升
模型安全性的相关防御方法仍然缺失. 同时, 随着开源代码数据的持续爆增与 GitHub Copilot 等智能辅助编码工
具进一步发展与应用, 给深度代码模型的安全带来了新的挑战. 经过对相关研究系统的回顾, 本节将对深度代码模
型安全研究当前所面临的挑战进行详细的总结并提出一些未来研究机会.
5.1 后门攻击与防御
针对深度代码模型的后门攻击的一个挑战是: 设计隐蔽和自然的后门触发器. 目前大部分针对深度代码模型
的后门攻击的触发器设计为死代码片段 [10,28,33] [11] , 这样的触发器占用多行, 具有较低的隐蔽性. 有一
些研究 [11,35,38] 通过分析代码的特征、使用语言模型和对抗扰动等方法来生成字符或者单词作为触发器, 提高其隐
蔽性. 但是, 这样的方法可能会生成无意义字符或者单词, 这些触发器插入到代码中会破坏代码的可读性和自然
性, 并且这类相对隐蔽的触发器会降低后门攻击的成功率. 同时, 目前的触发器注入手段基本为插入代码片段和修
改变量名/方法名. 单一的注入手段也为目前的后门攻击带来低隐蔽性和低自然性的特点. 因此未来研究可以着手