来源笔记

DeepGuard: Secure Code Generation via Multi-Layer Semantic Aggregation

Secure Code GenerationCode LLMMulti Layer RepresentationsVulnerability DetectionLora Fine Tuning

DeepGuard 通过使用来自多个 transformer 层的安全信号,而不是只依赖最后一层,来增强代码 LLM 的安全性。它把多层特征聚合、安全感知微调和低成本的推理期 logit 偏置结合起来,提高安全且正确的代码生成率。

  • 代码 LLM 常会复现训练数据里的不安全编码模式,已有工作报告了较高的失败率,例如 Copilot 生成样本中大约 40% 含有漏洞。
  • 许多安全调优方法只监督最后一层 transformer,但论文显示,漏洞相关线索在中上层最明显,接近输出层时会变弱。
  • 这很重要,因为安全代码生成需要在提升安全性的同时保持功能正确性,而功能正确性正是代码模型在开发流程中的核心价值。
  • DeepGuard 对模型各层做探测,发现漏洞判别信息在上层的一段区间最强,而不只在最后一层。
  • 它在顶部 N 层上构建一个基于注意力的聚合器,把这些层的隐藏状态融合成每个 token 的单一安全敏感表示。
  • 一个小型安全分析器利用聚合后的表示和学习到的 token 级安全嵌入来给 token 和序列打分;训练时用间隔损失推动安全代码的得分高于配对的含漏洞代码。
  • 模型在 LoRA 下用多目标损失进行适配:安全代码上的下一个 token 损失、漏洞与安全样本对之间的安全对比损失,以及让模型保持接近基模型的 KL 正则项。
  • 在推理阶段,DeepGuard 先计算一个受提示词条件影响的安全分数,再把它与从安全/漏洞训练数据中学到的 token 先验结合,并在解码时对 logits 加上固定偏置,不需要在每一步都调用分析器。
  • 在五个代码 LLM 上,DeepGuard 相比强基线 SVEN,平均把安全且正确的生成率提高了 11.9%
  • Qwen2.5-Coder-3B 上,sec-pass@1SVEN70.47% 提升到 DeepGuard80.76%pass@186.65%,论文称这接近原始模型。
  • Qwen2.5-Coder-7B 上,DeepGuard 报告的 pass@183.18%sec@1_pass88.19%sec-pass@173.35%SVEN-SR89.21%
  • DeepSeek-Coder-1.3B 上,DeepGuard 报告的 pass@181.06%sec@1_pass84.91%sec-pass@168.82%SVEN-SR87.71%
  • DeepSeek-Coder-6.7B 上,DeepGuard 报告的 pass@188.47%sec@1_pass79.52%sec-pass@170.35%SVEN-SR81.82%
  • Seed-Coder-8B 上,DeepGuard 报告的 pass@186.59%sec@1_pass93.21%sec-pass@180.71%SVEN-SR93.21%;论文还声称它能泛化到留出的漏洞类型,但节选没有给出留出划分的具体数字。