AI生成的代码安全危机:大语言模型编程漏洞率高达45%

最新研究显示,大语言模型生成的代码中高达45%存在安全漏洞,Java代码安全性尤其堪忧仅29%通过检测。随着AI编程普及,安全债务正快速累积,企业需警惕自动化编码带来的新型风险。

LLMs’ AI-Generated Code Remains Wildly Insecure

安全债务预警:最新大语言模型(LLMs)生成的代码中仅有约55%具备网络安全防护能力,而这些代码的生成量正在持续快速增长。

Robert Lemos,特约撰稿人 2025年8月1日 6分钟阅读

来源:Gorodenkoff via Shutterstock

大语言模型生成的代码质量随时间推移有所提升——较新的LLMs生成的代码编译通过率更高——但与此同时,其他方面的进展却陷入停滞:安全性表现尤其不佳,AI生成的Java代码更是重灾区。除了引入漏洞外,LLMs仍然容易产生错误,例如虚构不存在的软件库,并且易受训练数据集恶意污染等问题影响。

在本周发布的一项涵盖100多个LLMs的研究中,应用安全公司Veracode测试了AI聊天机器人是否能用四种语言生成语法正确的代码,随后对代码进行漏洞扫描以检验其安全性。虽然AI生成代码的语法正确性大幅提升——去年发布的LLMs生成的代码超过90%能无错误编译,而2023年6月之前这一比例不足20%——但仅有55%的代码通过后续安全扫描,这个数字长期以来顽固地保持不变。

Veracode首席技术官Jens Wessling表示:“LLMs并没有让任何人免于必须进行的安全工作”,并补充道:“LLMs学习的代码在语法上是正确的,但大多数开发者——特别是非企业或非开源项目的开发者——并不真正理解其决策的安全影响,因此这些问题持续存在。LLMs的输出是基于实际代码建模的,而实际代码本身就存在安全漏洞。”

相关阅读42%使用AI的开发者表示其代码库现已主要由AI生成

过去两年中,开发者使用LLMs生成代码的现象呈现爆发式增长,两项调查发现近四分之三的开发者已将AI代码生成用于开源项目,巴西、德国和印度97%的开发者也在使用LLMs。

当非开发者缺乏专业知识却使用LLMs生成代码时(即所谓的“氛围编程”),安全漏洞进入生产代码的风险将急剧增加。

众包安全服务提供商Bugcrowd创始人Casey Ellis表示,企业需要找到确保代码安全的方法,因为AI辅助开发只会越来越普及。

“我经常被问及AI辅助编程是好是坏,我认为这个问题本身就不对,”他说,“如果你拥有真正更好、更快、更便宜的东西,它就会爆发式增长——因为人们总是追求更好、更快、更便宜。”

相关阅读对氛围编程进行网络安全氛围检查

意外发现:(LLM)规模并不重要

Veracode为最流行的LLMs创建了分析管道(报告中未具体说明测试了哪些模型),通过评估每个版本来获取其代码生成能力随时间演化的数据。每个AI聊天机器人需完成80多项编码任务,生成的代码随后被分析。

虽然最早测试的LLMs(2023年上半年发布的版本)生成的代码无法编译,但过去一年发布的更新版本中95%生成的代码能通过语法检查。

另一方面,代码安全性几乎没有任何改善。根据Veracode的数据,LLMs生成的代码中约半数存在可检测的OWASP Top-10安全漏洞。最现代的LLMs将成功率提升至40%到60%之间,平均LLM生成安全代码的比例为55%。

LLM生成代码的语法(蓝色)随时间改善,而代码安全性(红色)停滞不前。来源:Veracode

研究最大的意外发现是:LLM的规模既不影响语法也不影响代码安全性,参数少于200亿的小模型与参数超过1000亿的大模型表现相当。

Wessling表示:“它们在‘是否生成好代码或准确代码,是否按需工作’方面表现基本相似,只有少数异常值。这完全是另一个问题。”

相关阅读氛围编程平台Base44的关键缺陷暴露应用程序

AI生成的Java安全性如同脱因咖啡

另一个意外是:LLMs在生成安全的Java代码方面存在特殊困难,而具有讽刺意味的是,Java最初正是为增强程序安全性而创建的。虽然其他测试语言(Python、JavaScript和C#)的安全检查通过率达到55%至62%,但Java始终低迷,平均成功率仅为29%。

LLMs生成的代码很少出现SQL注入或加密缺陷,更多安全问题源于跨站脚本和日志注入。来源:Veracode

Wessling推测,Java的悠久历史意味着大量代码是在安全性成为焦点之前创建的。如果这些代码进入LLMs的训练数据集,那么错误自然会在其生成的代码中出现。

“存在多年的Java程序示例,这些代码仍然存在并被LLMs扫描,我认为Java中有很多示例代码是为了示范而编写,并不一定是安全编码实践的类型,”Wessling解释道,“其中一些被采纳了。”

此外,LLMs往往产生较少特定类型的缺陷。Veracode报告指出,AI代码工具创建的大多数程序通过了SQL注入和加密错误的安全检查,但在跨站脚本(XSS)和加密错误测试中失败。

安全债务可能正在增长

解决这些问题可能需要时间,而AI代码生成工具的使用不太可能放缓,这留下了令人担忧的差距。

使用LLMs的开发者正在以更快的速度创建代码,斯坦福大学对10万名开发者的研究发现,他们平均多生成30%至40%的代码。然而,同一研究发现,相当一部分代码需要返工以消除功能错误,导致生产力净增益仅为15%至20%。

应用安全提供商Black Duck的高级安全解决方案经理Mike McGuire表示,发现和修复安全漏洞将进一步削弱这些收益。

“企业通过依赖AI系统生成代码正在创造安全债务,”他说,“这不一定是因为错误率在增加,而是因为AI加速了代码生产。团队在更短时间内生产更多代码,而当近一半代码未能通过安全测试时,风险量迅速复合。”

Bugcrowd的Ellis预见到安全债务方面即将到来的风暴。

“漏洞的存在是代码行数的概率函数,”他说,“我们正在以越来越高的速度向互联网输出代码行,更多代码意味着更多漏洞。除此之外,速度是质量的天敌,而安全是质量的产物。”

然而,AI辅助编程是不可避免的,企业应寻找方法应对安全代码挑战。

Wessling表示:“如果有人找到让LLMs自然识别[安全漏洞]或在训练LLM时过滤不安全代码的方法,理论上可能会 dramatically 改变局面,因此我们非常关注这一点。我们有兴趣看看事情的发展方向——仅仅因为今天是这样的,并不一定意味着一年后还会如此。”

关于作者

Robert Lemos,特约撰稿人 拥有20多年经验的资深技术记者。前研究工程师。为超过24家出版物撰稿,包括CNET News.com、Dark Reading、MIT’s Technology Review、Popular Science和Wired News。获得五项新闻奖,包括2003年因对Blaster蠕虫的报道获得最佳截稿新闻(在线)奖。使用Python和R分析各种趋势数据。近期报告包括网络安全工人短缺和年度漏洞趋势分析。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计