论文
安全测试作为 LLM 代码生成的可执行规范:优点、权衡和覆盖范围限制
Security Tests as Executable Specifications for LLM Code Generation: Benefits, Trade-offs, and Coverage Limits
摘要
大语言模型 (LLM) 可以生成功能上有用的代码,但仍然容易受到攻击,而以安全为中心的干预措施可能会破坏预期的行为。我们在生成之前和迭代修复期间将安全测试作为可执行规范进行研究。我们开发了 SecTDD,一个受控的测试反馈支架,它区分了三个因素:是否预先显示测试、失败的执行是否触发修订以及如何选择和表示失败。该评估使用行为分区的可见和隐藏测试以及字节相同的初始候选来进行修复比较。在 2,705 个轨迹、31 个任务实例、三个安全代码基准测试、16 个 CWE 类别和两个模型系列中,预先显示所有可见测试可将隐藏的功能和安全联合成功率平均提高 19.3 个百分点,但仅改善九个基准模型条件中的七个,并损害两个。在共享候选者比较中,结构化反馈修复了 80 个最初不成功的候选者,没有联合回归;修复了原始反馈修复 83 但导致三个回归。结构化反馈和原始反馈在正面交锋中几乎无法区分(6 场胜利、6 场失利和 453 场平局)。通过所有可见测试的候选人在每个共同制度下仍然未能通过隐藏行为家族。这些结果表明,可执行反馈可以修复安全代码生成,但其好处取决于模型、任务、反馈入口点,尤其是测试覆盖率。