Securing AI-Generated Code: A Just-in-Time Vulnerability Detection and Remediation Pipeline
本文提出并评估了一种自动化的即时安全流水线,该流水线能够检测、利用威胁上下文进行富化,并修复 AI 生成的 Python 代码中的漏洞,证明了结合静态分析与基于大语言模型(LLM)的验证及生成的阶段性方法,即使在表现最佳的流水线并不依赖于最高质量的代码生成模型的情况下,也能显著降低各类模型的残余安全发现。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在现代软件世界中,代码是几乎所有我们所使用的东西——从银行应用到医疗设备——背后无形的基石。几十年来,编写这些代码的过程一直是一项人类的活动,由程序员输入指令,然后由另一个人或专门的工具来检查错误。但现在,一股新的力量进入了这间工作坊:人工智能。这些系统现在可以以人类无法企及的速度和规模编写计算机代码,在几秒钟内生成数千行软件。然而,这种速度伴随着隐藏的代价。正如快餐厨房可能会为了速度而牺牲卫生一样,这些人工智能工具生成的代码虽然可以运行,却往往包含安全漏洞,为黑客留下了大门。问题不仅在于代码本身存在缺陷,还在于我们用来发现和修复这些缺陷的工具是为更慢的时代设计的,它们假设会有一个人在那里审查工作。当交付的工作速度超过了检查速度,且代码本身带有一种让开发者过于轻易信任它的微妙偏见时,安全漏洞的风险就会显著增加。
佐治亚理工学院的研究人员致力于通过构建一种新型的 AI 生成代码安全网来解决这一特定问题。他们创建了一个自动化流水线,一个类似于严格质量控制站的分步过程。首先,系统要求 AI 根据特定的请求(例如“创建一个登录表单”)编写 Python 代码。紧接着,系统使用两种不同的自动化安全工具对这段新鲜的代码进行扫描,这些工具用于寻找已知的弱点模式,比如一扇没锁的门或一扇关不严的窗户。与此同时,第二个 AI 作为验证器,阅读代码并试图发现自动化工具可能遗漏的问题。
这项研究的创新之处在于系统如何处理它发现的错误。该系统不仅仅是告诉 AI“这是错的”,而是通过引入现实世界的上下文来丰富反馈内容。它将特定的错误与犯罪分子使用的已知攻击方法联系起来,并提供有关过去类似漏洞是如何被利用的示例。然后,它将这种详细的、具有上下文信息的解释反馈给 AI,要求其重写代码以修复问题。研究人员测试了该过程的两个版本。在第一个版本中,AI 仅接收来自验证器的丰富反馈。在第二个版本中,AI 接收了同样的丰富反馈,外加来自自动化安全扫描器的原始、逐行报告。
结果显示,增加上下文会产生可衡效的差异。当 AI 仅接收到丰富的反馈时,在他们测试的所有不同 AI 模型中,安全缺陷的数量都显著下降。但当他们把具体的扫描器报告也加入其中时,改进效果变得更加深入。这个结合了丰富上下文和具体扫描器数据的系统,与原始的未修正代码相比,将剩余缺陷的数量减少了近百分之六十。这表明,让 AI 看到更清晰的威胁图景,并将其扎根于现实世界的攻击技术,比仅仅告诉它要保证安全更能帮助它编写出更安全的代码。
关于哪些 AI 模型表现最好,数据中出现了一个令人惊讶的发现。研究人员发现,第一次尝试就写出最安全代码的模型,并不一定是经过修复过程后能产生最佳最终结果的模型。一个模型最初的代码最干净,但在经过自动化修复后,残留的缺陷却更多。而另一个模型最初的错误较多,但在获得详细的修复指令后,它成功地进行了彻底修复,最终成为了最安全的产品。这表明,生成优秀代码的能力与在获得详细指令时修复代码的能力是两种不同的技能。对于任何构建依赖 AI 编写软件的系统的人来说,这意味着仅仅根据初稿的好坏来选择模型可能并不是最好的策略;学习详细反馈的能力同样重要。
研究还强调了自动化修复的一个关键现实:修复代码有时会以新的方式破坏它。在大约 15% 到 22% 的案例中,修复安全漏洞的过程引入了另一种不同类型的漏洞。这证实了虽然自动化工具功能强大,但它们并非完美,最终的检查始终是必要的。研究人员指出,包含特定扫描器报告的流水线版本在大多数测试的模型中,能更好地防止这些新错误的产生。
最终,这项工作证明了我们可以通过将修复过程扎根于现实世界的威胁知识,来构建一个能够跟上 AI 生成代码节奏的系统。通过将一行特定的代码与真实攻击者可能如何利用它联系起来,该系统引导 AI 进行更明智的修复。研究结果表明,未来安全的软件开发将不依赖于单个完美的 AI,而是依赖于一个结合了生成、富含上下文的反馈以及严格验证的流水线,以确保我们所依赖的代码保持安全。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。