Persistent Human Feedback, LLMs, and Static Analyzers for Secure Code Generation and Vulnerability Detection
本文表明,CodeQL 和 Semgrep 等静态分析工具在与人类验证的 LLM 生成代码真值进行对比时表现出显著差异,从而促使提出了一个旨在通过将持续的人类反馈集成到动态检索增强生成流水线中,以增强安全代码生成和漏洞检测的框架。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在雇佣一位非常有才华、动作极快但缺乏经验的学徒厨师(即 LLM)来烹饪一道复杂的菜肴。为了确保食物可以安全食用(安全代码),你会要求厨师完成烹饪后,再根据一本规则手册进行检查。
这里是研究人员发现的问题以及他们提议的解决方案,通过简单的类比来讲述。
1. 问题所在:“规则手册” vs. “专家厨师”
在编程世界中,我们有两种主要方式来检查一份食谱是否安全:
- 规则手册(静态分析器): 像 CodeQL 和 Semgrep 这样的工具就像是自动化的拼写检查器或营养标签扫描仪。它们扫描代码以寻找已知的危险成分(漏洞)。
- 专家厨师(人类反馈): 一个真正的真人会品尝菜肴,理解上下文,并且知道仅仅因为某种成分在标签上看起来很安全,如果混合方式不对,它仍可能是有毒的。
这项研究:
研究人员要求一位 AI 厨师烹饪了 1,080 道不同的菜肴(代码样本),这些菜肴旨在设计为是安全的。然后,他们让一位人类专家对每一道菜进行品尝测试,以建立“真相”。
- 真相: 61% 的菜肴实际上是安全的。
- 规则手册的判定:
- Semgrep 说 60% 是安全的。(这在纸面上看起来不错!)
- CodeQL 说 80% 是安全的。(这看起来甚至更好!)
转折点:
当研究人员观察单个菜肴时,规则手册经常出错。
- Semreg 在案例中与人类专家的意见一致率仅为 65%。
- CodeQL 的一致率仅为 61%。
隐喻:
想象一个保安(工具)在检查进入大楼的人员。
- 保安可能会因为某人穿着得体而让他进入,从而导致漏掉了危险人物(假阴性/漏报)。
- 或者,保安可能会因为某人提着一个看起来可疑的包而拦下无辜的人(假阳性/误报)。
论文指出,仅仅依赖保安(静态分析器)是危险的。即使保安得到的“平均数”是对的,他们在处理具体的、关键的案例时仍然会犯错。我们需要人类专家介入。
2. 当前研究中的差距
研究人员查看了数百篇关于 AI 和安全的其他研究。他们发现了一个模式:
- 语言偏差: 大多数研究仅在 Python(用于烹饪食谱)或 C/C++(用于制造引擎)上测试 AI。它们很少测试其他语言。
- 工具依赖: 几乎所有人都在使用“规则手册”(静态工具)来给 AI 打分。很少有研究真正让渡给人进行“品尝测试”。
- “记忆”问题: 当人类专家抓住一个错误时,他们会针对那一道菜进行修复。但一旦专家离开,AI 就会忘记这个教训。下次 AI 烹饪类似的菜肴时,它会再次犯同样的错误。
3. 解决方案:“智能图书馆”框架
作者提出了一种新的工作方式,称之为 “人类在环”(Human-in-the-Loop, HIL)框架。你可以把它想象成给 AI 厨师配备了一个永不遗忘的 智能图书馆。
以下是新系统的工作原理:
- 提示词代理(订单接单员): 当你要求 AI 烹饪时,该代理首先检查智能图书馆。它会询问:“我们以前做过这道菜吗?人类专家对这个特定成分有什么建议吗?”它会将这些建议添加到厨师的指令中。
- 安全代理(初步品尝): AI 完成烹饪。安全代理(规则手册)首先对其进行扫描。
- 人类代理(主厨): 这是至关重要的一步。人类专家会对安全代理的报告进行审查。
- 如果安全代理说“安全”,但人类说“危险”,人类会进行修复。
- 神奇之处: 人类的反馈不仅仅是一次性的修复。它会被永久存储在智能图书馆中。
- 信任分数: 并非所有存在于图书馆中的建议都是平等的。
- 如果两位专家对一条建议达成一致,它的“信任分数”就会变高。
- 如果这条建议在过去被成功使用了多次,它的分数就会上升。
- 如果是新建议,它会在“暂存区”等待,直到得到两位专家的认可。这可以防止错误的(或“被投毒的”)建议进入图书馆。
4. 为什么这很重要
论文结论指出,我们不能仅仅依靠自动化工具(规则手册)来告诉我们 AI 生成的代码是否安全。它们在细节上经常出错。
相反,我们需要一个这样的系统:
- 人类是最终的裁判。
- 人类的教训会被永久保存。
- AI 从过去的专家纠正中学习,这样它就不会再犯同样的错误。
简而言之,AI 很快,工具擅长扫描,但 人类专家才是唯一真正理解上下文的人。通过构建一个能够记住人类专家所言的系统,我们可以让 AI 生成的代码变得更加安全。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。