← 最新论文
💻 computer science

Open-Source Intelligence for Code Provenance and the Security Patterns that Separate Human and Large-Language-Model Implementations of Common Programming Tasks

本文提出了一个完全可复现、开源的流水线,证明了可以高精度地辨别代码片段的来源是人类还是大语言模型,同时揭示了多种编程语言中一致的安全模式差异,并强调了模型驱动漏洞修复中的特定失效模式。

原作者: Mohammadreza Rashidi

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

原作者: Mohammadreza Rashidi

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

想象你是一名正在试图破解谜题的侦探:这段代码是谁写的? 是一个在 Stack Overflow 等论坛上翻阅资料的人类开发者,还是一个在几秒钟内就能生成答案的大型语言模型(LLM)?更重要的是,这段代码安全吗?

这篇论文就像一场大规模的开源调查,研究人员建立了一个“代码动物园”。他们要求 9 种不同的 AI 模型和真实的人类开发者解决 3 种棘手的安全谜题,从锁定密码到设置安全的登录流程。然后,他们分析了结果,看看是否能仅仅通过观察代码的“DNA”来分辨出它们的“物种”。

以下是他们的发现,呈献给你,并附带一点侦探式的解说。

身份大置换:你能分辨出 AI 与人类吗?

发现: 可以。
研究人员构建了一个分类器(一种智能分类机器),它观察的是代码的“形状”而非仅仅是其安全性。这就像是通过观察画作的笔触,而不是题材,来判断一幅画是由人类艺术家还是机器人创作的。

  • 得分: 当机器在猜测“人类 vs. AI”时,准确率达到了 93%,超过了 78% 的随机猜测基准线。
  • “指纹”: 暴露身份的不是安全秘密,而是风格
    • AI 代码 就像一位准备过度的厨师:它非常庞大(平均 1,801 个字符,而人类仅为 552 个),它穿着全套围裙(有很多错误处理和导入语句),并且试图提供一份完整、可运行的餐点。
    • 人类代码 就像一份快速的小吃:它更短、更密集,并且通常假设你已经布置好了厨房。它是一个“片段”,而非一个完整的程序。

转折: 虽然 AI 很容易被识别为“AI”,但要分辨出具体是哪种特定的 AI 编写了代码,则要困难得多。当研究人员尝试猜测 9 种模型中哪一个编写了特定的代码时,他们的准确率仅为 48%(相比之下,基准线为 17%)。这就像辨别一个人的声音很容易,但如果不看脸,仅凭声音就想认出你的 9 个朋友中的哪一个,是一场很难的游戏。此外,这种“声音”会随语言的变化而改变;一个针对 Python 代码训练的分类器在看到 JavaScript 时会感到困惑。

安全对决:谁更安全?

发现: AI 通常更安全,但它有一个奇怪的盲点。
研究人员测量了代码使用良好安全习惯(如强密码哈希)与使用糟糕习惯(如使用弱密码)的频率。

  • 得分: AI 模型的得分在安全量表上为 0.40,而来自 Stack Overflow 的人类回答得分仅为 0.12
  • 为什么 AI 胜出: AI 似乎阅读了“更新”的规则手册。它知道使用现代、强力的密码哈希,并为安全令牌固定算法。人类的回答(许多是高票推荐的旧回答)往往使用过时的、有风险的方法,这些方法在多年前很常见,但现在已被证明是危险的。
  • AI 的致命缺陷: AI 因为太渴望表现得“乐于助人”且完整,有时会把自己带入陷阱。当被要求编写一个完整的程序时,AI 经常用一个虚假的占位符填充“密钥”(例如 client_secret = "your-secret-key")。如果开发者直接复制这段代码而没有修改这个占位符,应用程序就会处于不设防的状态。人类在编写较短的片段时,通常会留空密钥,从而迫使读者以安全的方式去填写它。
    • 结论: 人类失败是因为使用了旧习惯。AI 失败是因为它试图过于完整

“修复”测试:AI 能修补漏洞吗?

研究人员还玩了一个游戏:“这里有一段损坏、不安全的代码。请修复它。”

  • 得分: AI 在 77% 的情况下成功修复了代码。
  • 陷阱:16% 的案例中,AI 进行了“部分修复”。它移除了坏的部分(比如一个弱密码哈希),但忘记添加好的部分(比如一个强力的哈希)。这就像一名机械师拆下了汽车生锈的刹车,却忘了装上新的刹车。车看起来“修好了”,因为锈迹没了,但它依然很危险。

底线结论

这项研究证明了溯源性(了解代码来源)是可能且有用的。

  • 如果你看到的代码很长、结构化且充满了错误处理,它很可能是 AI 写的。请检查是否存在硬编码的密钥(即未被修改的占位符)。
  • 如果你看到的代码很短、很密集且使用了旧的库,它很可能是人类写的。请检查是否存在过时的安全习惯(如弱密码或敞开的大门)。

研究人员并非仅仅在猜测;他们利用仅有的公开数据构建了一个完全可复现的流水线。他们没有模拟结果;他们是在 528 个真实的样本上进行了测量。他们并没有声称 AI 是“完美安全”的(它并非如此);他们只是展示了 AI 和人类在不同的地方出错。知道你正在查看哪个来源,就能告诉你该检查哪一个安全网。

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

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

试用 Digest →