← 研踪 PaperTrail软件学报:jos:7643 · 记录 #1
面向预训练漏洞检测模型的黑盒对抗攻击
来源日期 2026-03-25
来源记录日期 2026-03-25
雷达观测 2026-11-05 00:22
摘要
预训练代码模型在代码理解与分析任务中展现出强大的能力, 逐渐成为源代码漏洞检测领域的重要工具与研究热点. 然而, 与传统深度学习模型类似, 预训练代码模型在面对精心构造的对抗代码输入时仍存在鲁棒脆弱性. 攻击者可通过添加语义保持的扰动, 误导模型将含漏洞代码识别为无漏洞代码, 从而威胁软件安全. 因此, 研究针对预训练漏洞检测模型的对抗攻击, 不仅有助于评估预训练代码模型的鲁棒性, 还能够为后续漏洞检测模型设计和防御机制构建提供重要参考. 针对硬标签黑盒攻击场景, 提出一种面向预训练漏洞检测模型的黑盒对抗攻击方法——VulBlurrer. 设计定向同义代码转换策略优先对漏洞邻近的高敏感区域和特定语句进行扰动, 并提出基于特征一致性、语义一致性与代码流畅度的逃逸分数, 以在无需访问目标模型内部信息的前提下量化候选样本的潜在攻击价值. 此外, 采用基于遗传算法的对抗代码优化策略, 通过动态调整逃逸分数计算权重, 并在迭代过程中采用精英保留机制, 进一步提升攻击准确率. 在基于CodeBERT、GraphCodeBERT、CodeT5和UniXcoder的预训练漏洞检测模型上, 对VulBlurrer及基线方法进行性能测试. 结果显示, VulBlurrer在4种目标模型上的攻击成功率分别达到85.51%、91.47%、93.14%和71.61%, 平均查询次数分别为12.67次、9.10次、11.07次和19.44次. 与现有方法相比, VulBlurrer具有更高的攻击成功率, 且在攻击成功率与查询效率之间实现了更好的权衡, 其生成的对抗代码在语义一致性与代码流畅度方面亦表现更优. 进一步地, 在ChatGPT、DeepSeek和基于大语言模型的辅助编程工具GitHub Copilot、TRAE上开展实证研究, 验证了VulBlurrer在大语言模型上的有效性. 因此, 预训练代码模型在漏洞检测任务中仍面临对抗攻击带来的鲁棒性挑战, 基于预训练模型和大语言模型的漏洞检测工具需要进一步提升面对对抗性代码时的鲁棒性.
论文发现出处
这些页面提供论文线索,不代表同行评审或质量认证。
发表信息与关联版本
软件学报 ↗2026 · 正式发表 · DOI: 10.13328/j.cnki.jos.007643
观测到的版本
平台记录号代表本站观测到的元数据变化,不是作者修订号。来源日期仅到月份或年份时,按该月或该年首日存档。
记录 #1 · 2026-03-25 · 最新观测版本
面向预训练漏洞检测模型的黑盒对抗攻击
预训练代码模型在代码理解与分析任务中展现出强大的能力, 逐渐成为源代码漏洞检测领域的重要工具与研究热点. 然而, 与传统深度学习模型类似, 预训练代码模型在面对精心构造的对抗代码输入时仍存在鲁棒脆弱性. 攻击者可通过添加语义保持的扰动, 误导模型将含漏洞代码识别为无漏洞代码, 从而威胁软件安全. 因此, 研究针对预训练漏洞检测模型的对抗攻击, 不仅有助于评估预训练代码模型的鲁棒性, 还能够为后续漏洞检测模型设计和防御机制构建提供重要参考. 针对硬标签黑盒攻击场景, 提出一种面向预训练漏洞检测模型的黑盒对抗攻击方法——VulBlurrer. 设计定向同义代码转换策略优先对漏洞邻近的高敏感区域和特定语句进行扰动, 并提出基于特征一致性、语义一致性与代码流畅度的逃逸分数, 以在无需访问目标模型内部信息的前提下量化候选样本的潜在攻击价值. 此外, 采用基于遗传算法的对抗代码优化策略, 通过动态调整逃逸分数计算权重, 并在迭代过程中采用精英保留机制, 进一步提升攻击准确率. 在基于CodeBERT、GraphCodeBERT、CodeT5和UniXcoder的预训练漏洞检测模型上, 对VulBlurrer及基线方法进行性能测试. 结果显示, VulBlurrer在4种目标模型上的攻击成功率分别达到85.51%、91.47%、93.14%和71.61%, 平均查询次数分别为12.67次、9.10次、11.07次和19.44次. 与现有方法相比, VulBlurrer具有更高的攻击成功率, 且在攻击成功率与查询效率之间实现了更好的权衡, 其生成的对抗代码在语义一致性与代码流畅度方面亦表现更优. 进一步地, 在ChatGPT、DeepSeek和基于大语言模型的辅助编程工具GitHub Copilot、TRAE上开展实证研究, 验证了VulBlurrer在大语言模型上的有效性. 因此, 预训练代码模型在漏洞检测任务中仍面临对抗攻击带来的鲁棒性挑战, 基于预训练模型和大语言模型的漏洞检测工具需要进一步提升面对对抗性代码时的鲁棒性.
查看此版本解读 →查看此版本原文 ↗