← 最新论文
💻 computer science

Insights into Security-Related AI-Generated Pull Requests

该论文通过分析超过 3.3 万个 AI 生成的拉取请求,揭示了 AI 代理在安全相关贡献中存在的重复性弱点、合并与拒绝模式,并指出其提交质量对接受率的影响与人类开发者不同,从而为理解自主编码系统在安全软件开发中的优劣提供了新见解。

原作者: Md Fazle Rabbi, Asif K. Turzo, Arifa I. Champa, Minhaz F. Zibran

发布于 2026-04-23
📖 1 分钟阅读☕ 轻松阅读

原作者: Md Fazle Rabbi, Asif K. Turzo, Arifa I. Champa, Minhaz F. Zibran

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

这篇论文就像是一次对“人工智能程序员”在开源软件世界里“修漏洞”表现的深度体检报告。

想象一下,开源软件项目就像一个巨大的、由全球志愿者共同维护的超级乐高城堡。以前,只有人类工匠(开发者)能提交新的积木块(代码)来修补城堡的裂缝(安全漏洞)。但现在,AI 机器人(AI 编程代理)也加入了队伍,它们能自动发现裂缝并尝试自己修好。

这篇论文就是作者们检查了33,000 多份由 AI 提交的“维修申请单”(Pull Requests),从中挑出了675 份专门涉及“安全维修”的申请,然后像侦探一样分析了它们的表现。

以下是用通俗语言和比喻对论文核心发现的解读:

1. AI 修漏洞时,容易犯什么错?(RQ1)

比喻:就像让一个刚学会做饭的机器人去处理危险的化学试剂。它虽然想帮忙,但经常用错方法。

  • 主要问题:AI 并不是在所有地方都犯错,它特别容易在几个特定的“雷区”踩雷:
    • 正则表达式效率低(CWE-1333):这就像让机器人用一把生锈的、极其复杂的钥匙去开一把锁,结果把锁孔堵死了,导致系统变慢甚至死机(拒绝服务攻击)。这是最常见的错误。
    • 注入漏洞(CWE-78):就像机器人没把门看好,让坏人直接混进了厨房。
    • 路径遍历(CWE-22):就像机器人没检查访客的通行证,让人随便溜进了别人的卧室。
  • 结论:AI 修好的漏洞里,有**15%**反而引入了新的、更糟糕的安全隐患。而且,不同的 AI 机器人(如 Copilot, Devin, Cursor 等)犯错的“风格”还不一样。

2. 为什么有的维修申请被秒批,有的却被无限期拖延?(RQ2)

比喻:这就像在餐厅点菜。你是老顾客(有信誉),还是第一次来?你的菜单写得清楚吗?餐厅今天忙不忙?

  • 谁在修?:如果提交申请的 AI 之前表现很好(历史成功率高),或者它是第一次来(新贡献者),审核反而更快
  • 餐厅环境:如果这个开源项目(餐厅)本身很火(星星多),审核反而更慢,因为人多眼杂,大家更谨慎。
  • 自动测试(CI):如果 AI 提交的代码自带了“自动测试报告”(CI),审核会更快;但如果测试跑得太久,反而会拖慢进度。
  • 反直觉的发现:通常我们认为“写得越详细越好”,但在 AI 的维修申请里,描述写得再花哨(比如加了很多标签)。大家更看重的是代码本身干不干净,而不是你写了多少解释。

3. AI 写的“维修说明书”(提交信息)质量如何?(RQ3)

比喻:人类修东西会写一张纸条:“我修了水管,因为漏水了”。AI 写的纸条呢?

  • 质量参差不齐:有些 AI(如 Devin)写的说明书很规范,既有“修了什么”也有“为什么修”;但有些 AI(如 OpenAI Codex)写的说明书经常语无伦次,甚至只有一半。
  • 关键发现:这很有趣——说明书写得烂不烂,居然不影响维修申请是否被通过
    • 以前人类修东西,说明书写不好容易被拒。
    • 但现在,审核员(人类)似乎更关注“代码本身有没有毒”,而忽略了 AI 写的“说明书”是否通顺。只要代码看起来能跑,哪怕说明书写得像天书,也可能被通过。

4. 为什么 AI 的维修申请会被拒绝?(RQ4)

比喻:为什么你的维修申请被老板扔进垃圾桶?是因为修错了,还是因为老板今天心情不好?

  • 最大的原因(38.8%):“无反馈被拒”。很多申请直接被关了,连个理由都没给。就像你敲门,里面的人直接把门反锁了,连句话都不说。
  • 第二大原因(12.3%):“没人理”。申请提交后,如果几天没人看,系统会自动把它关掉。这说明很多 AI 提交到了“死胡同”里。
  • 技术原因:剩下的原因里,确实有“修坏了”(引入新 Bug)或者“设计太烂”的情况。
  • 新发现:以前研究说 AI 提交被拒是因为“代码太长”或“太复杂”,但在这篇关于安全的研究里,这些原因很少见。相反,**“测试没覆盖”“代码格式不对”**成了新的拒绝理由。

5. 这篇论文告诉我们什么大道理?(启示)

  • 对审核员(人类开发者):你们现在的审核流程有点“偏科”。你们可能漏掉了 AI 引入的严重安全漏洞(因为它们看起来像正常的修补),却因为一些细枝末节(比如没写测试代码)拒绝了其他申请。需要更聪明的工具来帮你们一眼看出 AI 代码里的“毒”
  • 对 AI 开发者:你们的 AI 机器人需要“自我反省”。它们需要学会在提交代码前,先自己检查一下有没有引入新的漏洞,并且要确保代码格式整洁,还要学会给“死胡同”里的项目发申请。
  • 对未来的展望:AI 修漏洞是个好主意,能提高效率。但如果我们不加干预,它们可能会一边修好一个洞,一边挖出三个新洞。我们需要建立一套新的“安检流程”,专门针对 AI 这种特殊的“修理工”。

一句话总结
AI 正在努力帮人类修软件漏洞,但它们经常“越修越乱”,而且人类审核员有时候“看走眼”(漏掉大漏洞)或者“太挑剔”(因为小毛病拒掉好代码)。我们需要给 AI 和人类审核员都配一副“透视镜”,让修漏洞这件事真正变得安全又高效。

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

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

试用 Digest →