AI生成的代码比人类写的更容易出现严重漏洞
作者: CBISMB
责任编辑: 邹大斌
来源: CBISMB
时间: 2025-12-18 09:48
关键字: AI,软件开发,代码,漏洞
浏览: 1329
点赞: 70
收藏: 9
使用AI生成代码会增加需要审查的问题数量及其严重程度,AI驱动的代码审查平台CodeRabbit在其《AI与人类代码生成现状报告》(State of AI vs Human Code Generation report)中,通过分析470个开源项目的拉取请求得出了这一结论。
报告显示,与人类编写的代码相比,AI生成的代码在逻辑错误、可维护性、安全性以及性能方面存在显著更多的缺陷。
平均而言,每个AI生成的拉取请求(PR)包含约10.83个问题,而人类编写的拉取请求平均仅有6.45个问题——这意味着引入AI后问题数量增加了约1.7倍,导致代码审查时间更长,缺陷风险更高。
此外,AI生成的拉取请求所引发的问题往往也更为严重。报告指出,与人类编写的PR相比,AI生成的PR平均包含1.4倍的“关键”(critical)问题和1.7倍的“重大”(major)问题。
因此,机器生成的代码似乎迫使审查人员面对更多且更严重的问题。
这些发现与上个月由AI开发者门户厂商Cortex发布的报告相呼应。该公司在《AI时代的工程实践:2026基准报告》中指出,每位开发者提交的PR数量同比增长了20%,但每个PR引发的事故却上升了23.5%,变更失败率也提高了约30%。
CodeRabbit的报告还显示,在所有主要问题类别中,AI生成的代码均逊色于人类编写的内容:
- 逻辑与正确性错误多出1.75倍
- 代码质量与可维护性问题多出1.64倍
- 安全隐患多出1.57倍
- 性能问题多出1.42倍
就具体安全问题而言,AI生成的代码:
- 引入不当密码处理的可能性高出1.88倍
- 出现不安全对象引用的可能性高出1.91倍
- 引入跨站脚本(XSS)漏洞的可能性高出2.74倍
- 实现不安全反序列化的可能性高出1.82倍
不过,AI在拼写方面确实优于人类——人类PR中的拼写错误比AI生成的高出1.76倍。此外,人类编写的代码在可测试性方面的问题也比AI多出1.32倍。
CodeRabbit的人工智能总监大卫·洛克(David Loker)在一份声明中表示:“这些发现印证了众多工程团队在整个2025年所感受到的情况:AI编码工具虽然大幅提升了产出速度,但也引入了可预测、可度量的弱点,企业必须主动加以缓解。”
CodeRabbit也提醒,其研究方法存在一定局限,例如无法完全确认被标记为“人类编写”的PR是否真的完全由人类独立完成。
例如,那不勒斯大学研究人员在2025年8月发表的一篇论文《人类编写 vs. AI生成代码:缺陷、漏洞与复杂性的大规模研究》(Human-Written vs. AI-Generated Code: A Large-Scale Study of Defects, Vulnerabilities, and Complexity)指出,AI生成的Python和Java代码“通常更简单、更具重复性,但也更容易出现未使用的构造和硬编码调试信息;而人类编写的代码则结构更复杂,可维护性问题更集中”。
早在2025年1月,澳大利亚莫纳什大学(Monash University)和新西兰奥塔哥大学(University of Otago)的研究人员就发表了题为《比较人类与大语言模型生成的代码:尚无定论!》(Comparing Human and LLM Generated Code: The Jury is Still Out!)的论文。
这些南半球的研究者写道:“我们的结果表明,尽管GPT-4能够生成可行的代码解决方案,但它经常产出更复杂的代码,需要更多返工才能确保可维护性。然而另一方面,GPT-4生成的代码在多种任务中通过的测试用例数量却高于人类编写的代码。”
至于AI工具对开发者生产力的实际影响,来自模型评估与威胁研究(METR)机构的研究人员在7月报告称:“AI工具反而拖慢了开发者的速度。”
当然,具体情况可能因人而异。
值得一提的是,据趋势科技(Trend Micro)研究员达斯汀·柴尔兹(Dustin Childs)称,微软在2025年共修补了1,139个CVE漏洞,这是历史上CVE数量第二高的年份,仅次于2020年。
微软表示,其部分代码仓库中已有30%的代码由AI编写,而其Copilot Actions功能也附带警告,提醒用户注意“在计算机上启用代理所带来的安全风险”。
柴尔兹在其博文中写道:“随着微软产品组合持续扩大,以及AI引发的漏洞日益普遍,2026年的CVE数量很可能会进一步攀升。”
不过至少我们可以期待——代码注释里的拼写错误会少一些了。