← 最新论文
🤖 machine learning

An Empirical Study of Security Calibration in Large Language Models for Code

本文提出了首个大规模实证研究,揭示了大语言模型在其生成的代码中普遍存在过度自信现象,其中功能校准的表现始终差于安全性校准,并且尽管校准引导的修复和架构门控能提供有限的益处,但它们往往无法在现实的仓库级上下文中防止高置信度的漏洞。

原作者: Mohammed Latif Siddiq, Md. Nafiu Rahman, Joanna C. S. Santos

发布于 2026-07-01
📖 1 分钟阅读☕ 轻松阅读

原作者: Mohammed Latif Siddiq, Md. Nafiu Rahman, Joanna C. S. Santos

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你有一支非常有才华、但又有点过度自信的初级程序员团队。你要求他们编写代码来保护你的数字家园安全。他们写好了代码,然后带着灿烂的笑容告诉你:“我有 95% 的把握这是安全的!”

这篇论文就像是针对这种场景的一次“现实检查”。研究人员提出了一个问题:这些 AI 程序员真的知道自己什么时候错了,还是仅仅在犯着危险错误时也自信满满地宣称自己是对的?

以下是利用简单类比对研究结果进行的拆解:

1. “自信地犯错”问题

研究发现,这些 AI 模型存在**虚假信任(False Trust)**的问题。

  • 类比: 想象一位天气预报员说:“有 90% 的概率是晴天,”但每次都会下雨。
  • 研究发现: 当 AI 生成带有漏洞(例如为黑客留下的后门)的代码时,它通常会声称自己有 90% 或 95% 的信心认为代码是安全的。实际上,代码往往是不安全的。AI 就像一个开车闯红灯的司机,一边飞速行驶,一边自信地坚持说:“我确定能过去。”

2. “安全 vs. 可用”的意外发现

关于 AI 到底在哪些方面感到困惑,有一个最有趣的发现。

  • 类比: 想象一位厨师。
    • 功能正确性(Functional Correctness): 这道菜味道好吗?是否符合食谱?
    • 安全性(Security): 厨房里是否有毒?
  • 研究发现: AI 在识别其“毒素”(安全缺陷)是否存在方面,实际上比识别其“菜肴”(功能代码)是否正常运作方面表现得更好。
    • AI 经常无法意识到自己的代码坏了(无法运行),但它稍微擅长意识到自己是否不小心留下了“毒素”。
    • 为什么? 研究人员认为,“运行”代码取决于一些隐藏且复杂的因素(如特定的软件版本或隐藏设置),而 AI 看不到这些。但“安全”缺陷通常是可见的模式(如使用了已知的危险工具),AI 即使在仍然高估自身技能的情况下,也能更容易地识别出这些模式。

3. “独奏者” vs. “大交响乐团”

研究人员在两种不同的环境中测试了 AI:

  • 环境 A(自包含): 要求 AI 编写一个单一、孤立的函数(就像一名钢琴独奏家)。
  • 环境 B(仓库级): 要求 AI 在一个拥有数千个文件和依赖项的庞大、真实的软件项目中修复一个漏洞(就像整个交响乐团共同演奏)。
  • 研究发现: 在“大交响乐团”的环境中,AI 的信心崩溃了。
    • 在“独奏”设置下,AI 虽然过度自信,但尚在可控范围内。
    • 在“真实世界”设置下,AI 变得极度过度自信。它会声称有 90% 的把握修复成功,但因为它不理解其他文件构成的复杂网络,这个修复往往会破坏整个系统,或者让安全漏洞依然存在。现实世界的复杂性使得 AI 的“信心计分器”完全失去了作用。

4. 我们能“修复”这个 AI 吗?

研究人员尝试利用 AI 自身的信心来修复它的错误。

  • 策略: “如果 AI 说它只有 40% 的把握,那我们就让它再试一次。”
  • 结果: 效果并不理想。
    • 类比: 这就像要求一个迷路的司机“再试一次”去导航迷宫。他们往往不是找到了正确的路径,而是直接把车撞到了墙上(破坏了代码的功能)。
    • 具体的障碍: 研究发现,某些安全漏洞就像一扇锁着的门,需要一把特定的钥匙(将危险工具替换为安全的工具)。AI 非常不擅长更换这些“钥匙”。它试图在门上贴一个“禁止入内”的告示(添加警告),而不是真正更换锁芯。这被称为“僵化障碍(Rigidity Barrier)”。

5. 如何解决信任问题

论文测试了几种阻止我们盲目信任 AI 的方法:

  • “守门员”法(最有效): 在询问 AI“这是否安全?”之前,先问“这段代码能否实际运行?”
    • 如果代码无法运行,立即将其丢弃。
    • 结果: 这显著减少了 AI 在安全问题上“自信地犯错”的情况。这就像是在询问司机刹车是否灵敏之前,先检查汽车是否有发动机。
  • “示例”法(效果较差): 向 AI 展示优秀的代码示例。
    • 结果: AI 学习了“优秀代码”的模式,但往往无法将其融入到特定的项目中,从而在过程中破坏了系统。

核心结论

论文得出结论:我们不能将 AI 的“信心得分”视为安全的保证。

  • AI 通常过度自信,尤其是在处理复杂的现实项目时。
  • 它的信心是判断代码是否真正安全的糟糕指标。
  • 最好的方法是将 AI 的输出视为一份草稿,必须由人类或自动化工具进行严格的测试(检查错误和安全缺陷),而不是仅仅因为它说“我确定这是对的”就全盘接受。

简而言之:不要被 AI 的自信所迷惑。即使它听起来很笃定,它也可能出错。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →