兼顾两全优势:针对预训练代码模型,通过强大的替代蒸馏技术实现高效且有效的迁移攻击

《Journal of Systems and Software》:Have the best of both worlds: Effective and efficient transfer attacks on pre-trained models of code with robust surrogate distillation

【字体: 大 中 小 】 时间:2026年07月22日 来源:Journal of Systems and Software 3.8

编辑推荐:

  摘要 预训练的代码模型在许多重要的软件工程任务中展现了出色的性能。然而,这些模型容易受到对抗性样本的攻击,尤其是那些通过保持语义不变的变换(如变量重命名)生成的样本。尽管现有的生成此类样本的方法已显示出一定潜力,但它们往往受到两大实际限制的制约:一是由于频繁查询目标模型而导致

  摘要
预训练的代码模型在许多重要的软件工程任务中展现了出色的性能。然而,这些模型容易受到对抗性样本的攻击,尤其是那些通过保持语义不变的变换(如变量重命名)生成的样本。尽管现有的生成此类样本的方法已显示出一定潜力,但它们往往受到两大实际限制的制约:一是由于频繁查询目标模型而导致的高计算成本;二是基于模型敏感度进行变量排序的次优策略,这种策略往往无法生成有效的对抗性样本。在本文中,我们提出了Kindle这一新框架,它通过针对替代模型的有效迁移攻击,高效地为预训练代码模型生成对抗性样本。首先,Kindle通过基于鲁棒性的知识蒸馏自动构建一系列强大的替代模型,从而将攻击成本从目标模型转移到这些高效的替代模型上。接着,它引入了一种混合变量排序算法,该算法结合了模型敏感度与上下文频率分析,确保扰动能够同时作用于模型易受攻击的变量以及语义上至关重要的变量。我们在九种目标模型(三种预训练代码模型×三种下游任务)上进行了全面实验,实验结果表明,与ALERT相比,Kindle的平均攻击成功率提升了33.47%;与CARROT相比则提升了53.30%。此外,与基线方法相比,Kindle还能将时间成本平均降低66.28%。

引言
预训练代码模型在诸多软件工程任务中表现优异,例如代码克隆检测(Wei和Li,2017;Lei等人,2022)、漏洞检测(Zhou等人,2019;Sun等人,2025;Cao等人,2023b)等。然而,现有研究表明,预训练代码模型容易受到对抗性样本的攻击,这类样本可能导致模型出现错误分类(Yefet等人,2020;Zhang等人,2020;Tian等人,2023a;Na等人,2023;X. Du等人,2023)。这些对抗性样本会严重削弱模型在软件供应链中的可信度,进而威胁下游任务的安全。例如,在漏洞检测中,稍作修改的漏洞代码就可能误导模型,使其无法检测到问题,从而使被篡改的代码被用于下游任务,从而带来安全风险。

为应对这一问题,有一系列研究致力于为预训练代码模型生成对抗性样本,例如CodeBERT(Feng等人,2020)。一个关键约束是,生成的对抗性样本必须同时保持代码的功能性和可编译性。近期的一些研究(Tian等人,2023a;Na等人,2023;Yang等人,2022;Du等人,2025;Li等人,2024)主要聚焦于保持语义不变的代码变换,其中变量重命名因其灵活性和难以察觉的特性而成为主流策略。例如,ALERT(Yang等人,2022)通过频繁查询模型,按照代码片段中变量的重要性顺序替换变量,直至模型产生错误输出,从而生成对抗性样本。该方法能够在保持原有操作语义的同时生成更自然的对抗性样本。H. Zhang等人(2022)提出了CARROT,它同样通过频繁查询模型来计算梯度引导信息,以此生成对抗性样本。尽管这些开创性方法颇具前景,但在实际生成对抗性样本时的效果和效率仍存在局限。这种生成能力的不足源于两大挑战:

• 高昂的计算成本:现有方法中的对抗性样本生成过程本质上是迭代式的,且需要大量查询。目标模型会在一个紧密的循环中被反复查询:首先用于获取指导信息(如梯度或预测结果),以确定需要扰动的关键变量;随后再验证新生成的代码变体是否构成有效的对抗性样本。这种持续的指导与验证循环,每次交互都需要对庞大的预训练模型进行完整的正向或反向计算,从而导致极高的计算成本,使得整个过程极其缓慢且效率低下(Tian等人,2023a)。

• 基于模型中心化排序的次优策略:目前用于排序变量以进行变换的核心策略往往仅依赖于模型衍生的信号,如梯度(H. Zhang等人,2022;Yefet等人,2020)或预测变化(Yang等人,2022),而忽视了代码结构中蕴含的丰富语义信息。这种以模型为中心的思路可能会忽略代码结构中的语义信息,反而优先考虑那些对模型敏感但在语义上并不重要的变量,从而导致扰动不够自然,也无法识别出最关键的漏洞(即那些真正重要的变量)。因此,排序结果往往会优先选择那些对模型敏感但在代码上下文中并无重要意义的元素,进而导致扰动效果不佳,无法发现最严重的漏洞。这样一来,攻击的有效性以及生成的对抗性样本的质量都会受到影响。

在本文中,我们提出了Kindle这一新框架,它通过迁移攻击的方式解决了上述问题。我们的方法代表了从直接攻击大型目标模型向高效、有效的基于迁移的攻击方式的转变,这一理念源自于对抗性样本的可迁移性这一概念(Yuan等人,2020)。为实现这一目标,Kindle融合了两项关键技术创新。首先,受模型压缩技术的启发(Shi等人,2024;Shi等人,2022;Liu等人,2026),我们通过知识蒸馏(Hinton等人,2015)生成替代模型,从而从目标模型中创建出多种多样的学生模型,随后再通过基于鲁棒性的筛选机制选出最有效的替代模型。其次,为克服基于模型中心化排序的攻击策略的局限性,Kindle引入了一种创新的混合变量排序算法,该算法将模型敏感度与上下文频率分析相结合,从而更有效地对模型发起攻击。这种双视角的排序方式确保生成的对抗性样本能够扰动那些既对模型有影响又在语义上至关重要的变量,进而产生高效且自然的对抗性样本,这些样本能够成功从替代模型传递到目标模型。

我们在三种预训练代码模型(CodeBERT,Feng等人,2020;GraphCodeBERT,Guo等人,2020;CodeT5,Wang等人,2021)上,针对三种代码理解任务(漏洞预测、代码克隆检测以及作者归属判定),对Kindle进行了全面评估。实验结果表明,Kindle在攻击效果和效率方面均优于基线方法。具体而言,与两种基线方法ALERT(Yang等人,2022)和CARROT(H. Zhang等人,2022)相比,Kindle在攻击成功率方面分别提升了33.47%和53.30%。此外,与这两种基线方法相比,Kindle还能将时间成本平均降低66.28%。更重要的是,Kindle生成的对抗性样本在自然度和难以察觉性方面也更具质量。另外,通过对抗性微调,Kindle还能将模型的鲁棒性提升约88.86%。

总之,本文的主要贡献如下:
• 我们提出了一种全新的方法——Kindle,这是一种通过针对鲁棒替代模型发起迁移攻击来为预训练代码模型生成对抗性样本的方法。
• 我们在九种目标模型(三种预训练模型×三种任务)上进行了广泛评估,证明了Kindle在效果和效率方面均优于两种基线方法。
• 我们已在https://github.com/YOYOisNO1/KINDLE.Paper上发布了源代码,以便他人复制实验、开展进一步研究或实际应用。本文的其余结构如下:第2节简要介绍了知识蒸馏、预训练代码模型以及我们提出该方法的动机;第3节阐述了本研究采用的方法论;第4节详细说明了实验设置;第5节报告了针对各研究问题的实验结果;第6节基于我们的研究结果进行了讨论,并分析了可能存在的有效性问题;第7节介绍了相关研究工作;第8节为本文结论。
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号