问题简报 AI生成代码的网络安全风险 作者JessicaJiJennyJunMaggieWuRebeccaGelles 2024年11月 执行摘要 近期的发展提高了大型语言模型(LLMs)和其他人工智能系统生成计算机代码的能力 。虽然这对软件开发领域来说是个积极的信号,但这些模型也可能直接或间接地带来网络安全风险。在本文中,我们识别了与AI代码生成模型相关的三大类风险:1)生成不安全代码的模型;2)模型本身易受攻击和操纵;3)下游网络安全影响,如训练未来AI系统时产生的反馈循环。 现有研究显示,在实验条件下,AI代码生成模型经常输出不安全的代码。然而,评估AI生成代码的安全性过程极为复杂,并包含许多相互依赖的变量。为进一步探索不安全的AI编写的代码的风险,我们评估了五种语言模型生成的代码。每个模型都收到了相同的提示集,这些提示旨在测试可能产生错误或不安全代码的常见场景。我们的评估结果显示,这五种不同模型生成的代码片段中几乎有一半包含往往具有重大影响且可能导致恶意利用的错误。这些结果仅限于我们评估的狭窄范围,但我们希望它们能够为围绕AI代码生成模型影响的研究贡献力量。 鉴于当前代码生成模型的实用价值及其能力未来继续改进的可能性,管理其政策和网络安全影响至关重要。关键发现如下。 ●行业采用AI代码生成模型可能对软件供应链安全构成风险。然而,这些风险在各组织之间的分布将不均匀。资源更为丰富、规模更大的组织将比面临成本和劳动力约束的组织更具优势。 ●多方利益相关者在减轻与AI生成代码相关的潜在安全风险方面都扮演着重要角色。确保AI生成代码输出的安全性不应仅依赖于个别用户,还应包括AI开发者、大规模生产代码的组织以及能够提升整体安全性的政策制定机构或行业领导者。现有的指导原则,如安全软件开发生命周期实践和NIST网络安全框架,仍然是确保所有代码(无论作者是谁)在进入生产环境前都经过安全性评估的基础。其他网络安全指导原则,如“设计即安全”原则,可以进一步扩展应用。 包括影响软件供应链安全的代码生成模型和其他AI系统。 ●代码生成模型也需要从安全角度进行评估,但目前这方面的评估较为困难。现有的代码生成模型评估基准通常侧重于模型生成功能性代码的能力,而不评估其生成安全代码的能力,这可能会导致在模型训练过程中优先考虑功能而非安全性。由于缺乏对模型训练数据的透明度或对其内部工作机制的理解,无法探索诸如表现更好的模型是否会产生更多不安全代码这类问题。 目录 执行摘要........................................................................................................................... ............1引言................................................................................................................... ................................4背景............................................................................................... ....................................................5什么是代码生成模型?............................................... .............................................................5行业对AI代码生成工具的采用不断增加............. .................................................................7与AI代码生成相关的风险............................... ......................................................................9代码生成模型生成不安全的代码.............. ......................................................................9模型的攻击脆弱性.................................... ................................................................................11下游影响....................................... ...............................................................................................13评估代码生成模型安全 性面临✁挑战.15AI生成的代码是否不 安全?....................................................................................................18研究方法........ ..............................................................................................................................18评估 结果................................................................................................................................... ...22验证失败率................................................................................................................ ..............22不同模型之间的差异....................................................................................... .....................24生成错误的严重程度................................................................................ ..............................25局限性............................................................................................ ................................................26政策含义和进一步研究................................................. .....................................................28结论........................................................................ ..........................................................................32作者................................................... .................................................................................................33致谢............................ ...........................................................................................................................33附录A :研究方法.3 4附录B:评估结果........................................................................................................... ............34参考文献.......................................................................................................... .......................................35 Introduction 人工智能的进步导致了AI系统生成功能性计算机代码能力的飞跃。尽管大型语言模型的进步在过去几年推动了对AI的广泛关注和投资,但代码生成一直是AI系统的可行应用场景。专门的AI编码模型,如类似于“代码自动补全”的代码填充模型,以及通用型基于LLM的基础模型,目前正被用于生成代码。越来越多的应用程序和软件开发工具将这些模型整合进来,以供更广泛的用户群体轻松获取和使用。 这些模型及其相关工具正迅速被软件开发社区和个体用户采纳。根据GitHub2023年6月的调查,受访的美国开发者中有92%表示在工作内外使用AI编码工具。1另一个于2023年11月进行的行业调查显示,使用率非常高,96%的受访开发者使用AI编码工具 ,超过一半的受访者几乎总是使用这些工具。2如果这种趋势继续下去,LLM生成的代码将成为软件供应链中不可或缺的一部分。 人工智能代码生成政策挑战在于,这一技术进步虽然带来了实际益处,但也可能对网络安全生态系统带来潜在系统性风险。一方面,这些模型可以在漏洞发现和修复等领域显著提高工作效率,并对网络安全产生积极贡献。另一方面,研究显示这些模型也会生成不安全的代码,如果未经适当审查便被整合,将直接构成网络安全风险;此外 ,不安全的代码还可能进入开源仓库,进而影响后续模型的安全性,带来间接风险。 随着开发者越来越多地采用这些工具,软件供应链各个环节的相关利益方都应考虑广泛使用由AI生成的代码所带来的影响。AI研究人员和开发人员可以从安全性的角度评估模型输出;程序员和软件公司可以考虑这些工具如何融入现有的安全导向流程;而政策制定者则有机会通过制定适当指南、提供激励措施和支持进一步研究来应对与AI生成代码相关的更广泛的网络安全风险。本报告概述了由AI生成的代码可能带来的网络安全风险 ,并讨论了社区内剩余的研究挑战及其对政策的影响。 背景 什么是代码生成模型? 代码生成模型是能够根据代码或自然语言提示生成计算机代码的AI模型。例如,用户可以向模型提出“用Java编写一个对数字列表进行排序的功能”,模型将输出一些代码和自然语言的组合作为回应。这类模型包括专门用于代码生成的语言模型以及通用语言模型 ——也称为“基础模型”——这些模型能够生成其他类型的输出,并且不是专门为生成代码而设计的。专门用于代码生成的模型示例包括Amazon