← 最新论文
🤖 AI

SoK: AI Secure Code Generation: Progress, Pitfalls, and Paths Forward

这篇知识系统化(SoK)论文引入了一个三层框架来分析人工智能安全代码生成,揭示了尽管模型对安全原则的理解能强力预测代码层面的结果,但在将该知识转化为安全且功能完备的代码方面仍存在显著差距,从而为未来的改进指明了具体的路径。

原作者: Rupam Patir, Keyan Guo, Haipeng Cai, Hongxin Hu

发布于 2026-06-25
📖 1 分钟阅读☕ 轻松阅读

原作者: Rupam Patir, Keyan Guo, Haipeng Cai, Hongxin Hu

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

想象一下,你正在雇佣一名非常聪明、动作敏捷的学徒来为你编写计算机代码。这位学徒读过每一本写过的安全手册,并且能完美地背诵出来。但当你要求他们构建一个安全的应用程序时,他们有时会造出一扇看起来锁上了、却留有隐藏钥匙孔的门;或者造出一堵挡住了窃贼、却也将家人困在室内的墙。

这篇题为**《SoK: AI 安全代码生成》*的论文,深入调查了为什么会发生这种情况。来自布法罗大学的研究人员认为,我们一直在问错误的问题。我们一直在问:“代码是否奏效?”或“它是否安全?”,但我们从未问过:“AI 是否真的理解了这条规则,以及它是否知道如何*应用它?”

为了解决这个问题,他们构建了一个新的测试框架,称为 KAUGE(知识-执行统一差距评估)。你可以将 KAUGE 想象成一个三层显微镜,它以一种全新的方式观察 AI 的表现。

显微镜的三层结构

第一层:“书本知识”(知识/Knowledge)
首先,研究人员向 AI 提出关于安全规则的简单问题,例如:“为什么让用户直接向数据库输入内容是不好的?”

  • 研究发现: AI 在这方面是个天才。它了解这些规则。它可以解释为什么某种漏洞是危险的,以及规则说了什么。它就像一个能在交通法规选择题测试中拿高分的学生。

第二层:“街头智慧”(执行/Actuation)
接下来,他们要求 AI 实际编写遵循这些规则的代码。

  • 研究发现: 这是情况变得混乱的地方。尽管 AI 了解规则,但它往往无法编写出既能正常工作又足够安全的代码。它可能会编写出虽然安全但会导致程序崩溃的代码(比如把门锁得太死,导致谁也进不去),或者编写出看起来没错但带有隐藏缺陷的代码。
  • 类比: 这就像一位厨师知道制作完美蛋糕的食谱(第一层),但在实际烹饪时却烤焦了蛋糕,或者忘了放鸡蛋(第二层)。

第三层:“差距”(问题/The Gap)
这是最关键的部分。研究人员测量了 AI 所“知”与所“行”之间的距离。

  • 研究发现: 这里存在巨大的鸿沟。AI 通常知道原则,但无法将其转化为特定且正确的行动。
  • 四种失败类型:
    1. 原则性成功(Principled Success): AI 知道规则,遵循规则,且代码是安全的。(厨师烤出了完美的蛋糕)。
    2. 通过其他手段实现安全(Secure by Other Means): 代码是安全的,但并不是因为遵循了 AI 本该使用的那条特定规则。它只是运气好,或者使用了另一种技巧。(蛋糕可以安全食用,但厨师使用了不在食谱中的秘密配料)。
    3. 合规但存在漏洞(Compliant but Vulnerable): AI 试图遵循规则,但由于规则过于笼统,导致它忽略了特定的危险。(厨师遵循了食谱,但忘了烤箱坏了,所以蛋糕还是生的)。
    4. 执行失败(Actuation Failure): AI 知道规则,但在编写代码时完全忽略了它。(厨师知道食谱,但决定直接端上一颗生鸡蛋)。

研究人员的发现

  1. 知行不一: 仅仅因为 AI 能谈论安全性,并不意味着它能构建安全软件。 “知道”的部分很容易;“做到”的部分很难。
  2. “为什么”很重要: AI 擅长知道规则是“什么”,但它难以理解为什么某个特定的底层规则很重要(例如,为什么 C++ 中特定的内存错误是危险的)。
  3. 工具比训练更有用: 研究人员发现,给 AI 一个“工具箱”(例如让它运行测试、检查文件并修复自己的错误)比仅仅重新训练 AI 去背诵更多安全规则效果更好。这就像给学徒一把梯子和一把锤子,比单纯给他们一本更大的教科书更有用。
  4. 功能性是瓶颈: 代码之所以无法实现安全,通常是因为它根本无法运行。如果程序崩溃了,你甚至无法测试它是否安全。

前行的道路

论文建议,要解决这个问题,我们不能仅仅要求 AI “保持安全”。相反,我们需要:

  • 给予反馈: 让 AI 尝试、运行代码、观察哪里出错,并根据真实的错误进行修复,而不是仅仅基于理论规则。
  • 具体化: 不要只说“验证输入”,要告诉 AI 针对这个特定的数据库,应该如何验证输入。
  • 保留功能: 确保 AI 明白,修复安全漏洞不应该破坏应用程序的核心功能。

简而言之: 今天的 AI 是一个卓越的安全理论家,但却是一个笨拙的安全工程师。它知道游戏的规则,但在玩游戏时却容易被自己的脚绊倒。解决方案不仅仅是教它更多的规则,而是给它更好的工具去实践并从错误中学习。

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

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

试用 Digest →