Page 226 - 《软件学报》2026年第3期
P. 226

田朝 等: CoDefense: 面向对抗性攻击的多粒度代码归一化防御方法                                           1189


                 码并破坏了大部分代码结构转换攻击, 确保模型预测未被恶意改变. 然而, 我们观察到                         CoDefense 尚不能完全防御
                 所有代码结构转换攻击        (如图  4(c) 中的“Main.npools > Var1”), 其原因在于当前  CoDefense 的代码结构归一化策略
                 主要依赖预设的代码转换规则及两类常用代码质量指标                    (即代码复杂度与代码可读性). 随着对抗性攻击技术的演
                 进, 攻击者可能利用这些指标的局限性构造出隐蔽性更强的对抗性样本. 特别是当生成的对抗性样本符合上述代
                 码质量指标时, 它们可能成功绕过          CoDefense 的防御机制.
                    在深入探讨对抗性防御策略面对未知攻击的通用性时, 我们不得不正视一个核心挑战: 即便是当前最先进的
                 对抗性训练技术, 仍然难以全面防御所有已知乃至未知的对抗性攻击策略. 对抗性攻击策略的快速更新和预训练
                 代码模型的不可解释性加剧了这个问题. 因此, 构建一个能够一劳永逸地防御所有粒度和策略的对抗性攻击的完
                 美防御技术, 在现有的技术框架下, 显得尤为不切实际. 这种普遍存在的局限性, 凸显了对抗性防御领域持续探索
                 与创新的紧迫性.
                    尽管如此, 我们提出的       CoDefense 策略仍然展现出显著的优势, 特别是在防御基于变量名替换的对抗性攻击
                 方面. 通过创新性的变量名归一化方法, CoDefense 完全避免了含有潜在对抗性变量名的对抗性样本输入到代码
                 模型, 从根本上消除了此类攻击, 实现了对所有基于变量名替换的对抗性攻击的全面防御. 研究问题                              1  的实验结果
                 也充分表明了变量名归一化策略面对基于变量名替换攻击的完美防御能力.
                    对于代码模型面临的另外两种粒度的对抗性攻击——死代码插入攻击与代码结构转换攻击, 本文系统地总结
                 了最近   5  年来最具有代表性或最先进的针对预训练代码模型的对抗性攻击方法. 在此基础之上, 精心设计并实现
                 了对应的防御规则. 该规则集是目前我们所知的最详尽的防御规则集, 包括                       19  条针对死代码插入攻击的防御规则
                 以及  51  条针对代码结构转换攻击的防御规则. 这些对抗性防御规则集显著提升了                       CoDefense 在面对这两种粒度
                 复杂攻击时的防御能力, 相较于现有的对抗性训练策略, 展现出了更为卓越的性能表现. 经过人工检查, 可以发现
                 CoDefense 可以防御所有已知的死代码插入攻击和大部分已知的代码结构转换攻击. 当面临未知攻击时, 只需要
                 更新防御规则集并重新执行          CoDefense 即可提升模型的防御能力, 考虑到          CoDefense 更新的成本要远远低于最
                 先进的对抗性重训练, 展现了         CoDefense 显著的长期效率优势. 此外, 对于这两种粒度的对抗性攻击, 在未来工作
                 (第  6.4  节) 中提供了两个极具潜力的研究方向, 旨在未来研究中进一步优化和完善应对这两类未知攻击的防御
                 策略.
                  6.4   未来工作
                    CoDefense 作为一种新颖的对抗性防御策略, 显著增强了预训练代码模型的鲁棒性, 并有效抵御了多粒度的
                 对抗性攻击, 同时保持模型的原始性能和嵌入质量, 这一成果为代码安全领域带来了重要突破. 尽管当前的实证研
                 究已充分表明了其有效性和效率, 但           CoDefense 仍有进一步拓展的潜力. 未来工作将围绕以下             4  个方面展开, 以进
                 一步提升其性能与适用范围.
                    第一, 优化死代码消除策略. 针对日益复杂的死代码插入攻击, CoDefense 已初步总结并实现了一套相应的死
                 代码消除规则集, 有效地应对了近年来最为常见的死代码插入攻击. 然而, 如现有研究                          [30,53] 所指出的, 死代码检测
                 本质上是一个不可判定的任务, 这使得当前的              CoDefense 在消除复杂死代码时仍面临挑战. 为克服此限制, 我们拟
                 引入编译优化技术      [87,88] , 通过深度整合这些技术, 优化并增强      CoDefense 在识别与消除复杂死代码方面的能力, 从
                 而构建更加全面的防御策略.
                    第二, 增强代码结构归一化策略. 当前           CoDefense 采用的代码结构归一化策略主要依赖于设计的代码转换规
                 则以及两类常用的代码质量指标            (即代码复杂度和代码可读性). 然而, 随着对抗性攻击技术的不断演进, 攻击者可
                 能会利用这些指标的局限性来构造难以察觉的对抗性样本. 特别是当生成的对抗性样本与这两类代码质量指标保
                 持一致时, 它们可能会成功绕过          CoDefense 的防御机制. 为应对此挑战, 我们计划设计并实施一套更为多样化、精
                 细化的代码质量评估体系, 涵盖但不限于代码语义完整性、逻辑一致性及异常处理效率等维度, 以全面提升                               CoDefense
                 对潜在威胁的识别与抵御能力.
                    第三, 拓展   CoDefense 的应用范围. CoDefense 不仅在防御对抗性攻击方面展现出卓越效能, 其潜在的应用价
   221   222   223   224   225   226   227   228   229   230   231