Give LLMs a Security Course 论文结构速览
引言 (Introduction)
本文指出当前检索增强型代码生成(RACG)系统主要关注功能正确性,但忽视安全性——尤其当知识库被恶意代码污染时,生成的代码可能含严重漏洞。作者提出将安全知识注入流程,从而提升生成代码的安全性。背景与相关工作 (Background and Related Works)
本节回顾了:检索增强代码生成(RACG)的基本流程及优势。
语言模型生成代码的安全问题,已有工作在漏洞检测、代码修复、模型微调等方面的尝试。
当前方法在知识库安全、中毒场景防御、跨语言泛化等方面仍存在缺口。
方法 (Methodology)
作者提出框架 CodeGuarder,其核心包括两个阶段:离线:构建安全知识库,从真实漏洞(例如 CVE)提取「功能描述+根因分析+修复模式」。
在线:对用户生成请求分解为子任务,检索与子任务相关的安全知识,进行重排序与过滤,然后将这些知识注入提示 (prompt) 中,指导 LLM 生成“既功能正确又安全”的代码。
实验 (Evaluation)
本节设计了多项研究问题 (RQ1、RQ2、RQ3):RQ1:标准场景下 CodeGuarder 在非对抗环境中提升代码安全率。
RQ2:中毒场景下(知识库被污染)测试其鲁棒性。
RQ3:测试在目标语言没有安全知识库的情况下,CodeGuarder 的泛化能力。实验结果显示,在多种模型、多语言环境下,CodeGuarder 显著提升了“安全率 (SR)”而且功能正确性几乎不受影响。
讨论 (Discussion)
作者讨论了方法的优点、适用范围、限制(例如安全知识库规模、检索效率、子任务分解的挑战)以及未来方向,比如扩展更多语言、对抗性攻击防御、知识库动态更新等。结论 (Conclusion)
总结指出:本文是首个针对 RACG 系统进行安全硬化的框架,通过知识注入显著提升安全性,推进了 LLM-驱动代码生成系统从“只求正确”向“又求安全”转变。
