论文
通过解释与引导实现安全、正确的代码生成
Interpreting and Steering for Safe and Correct Code Generation
摘要
大语言模型(LLM)经常生成包含漏洞的源代码,但很少有工作研究区分其中的安全生成和易受攻击生成的内部机制。在这项工作中,我们系统地对 LLM 进行机械解释,旨在了解代码安全与漏洞如何由 LM 中的组件表示或驱动,并将见解转化为可操作的指导策略,以鼓励更安全的代码生成。为此,我们引入了 CodeSec-Pairs,这是一个包含 9,342 个 Python 安全且易受攻击的对比代码对的数据集,采样自 Llama-3.1-8B-Instruct。利用该数据集,我们探索了与代码安全相关的本地化层和注意力头的方法,并进一步尝试了不同的转向策略以减少推理时间漏洞。我们特别提出了 DuoSteer,这是一种双转向方法,可同时将安全性和代码正确性转向应用于注意力头。在超过五种漏洞类型的实验中,DuoSteer 平均使漏洞率降低了 -26.9%,功能正确性提高了 +7.5%,这不仅优于其他转向变体,而且还优于提示和监督微调基线。该优势也在 Qwen-2.5-Coder-7B-Instruct 上复制,并从该模型中采样了另外 2,500 个对比对。
