写点什么

【论文速读】| AutoSafeCoder:通过静态分析和模糊测试保障 LLM 代码生成安全的多智能体框架

作者:云起无垠
  • 2024-10-12
    北京
  • 本文字数:1885 字

    阅读完需:约 6 分钟

【论文速读】| AutoSafeCoder:通过静态分析和模糊测试保障LLM代码生成安全的多智能体框架


本次分享论文:AutoSafeCoder: A Multi-Agent Framework for Securing LLM Code Generation through Static Analysis and Fuzz Testing

基本信息

原文作者:Ana Nunez, Nafis Tanveer Islam, Sumit Jha, Paul Rad


作者单位:University of Texas at San Antonio、University of Amsterdam、Florida International University


关键词:代码生成、安全分析、模糊测试、多智能体系统、LLM


原文链接:https://arxiv.org/pdf/2409.10737


开源代码:https://github.com/SecureAIAutonomyLab/AutoSafeCoder

论文要点

论文简介:本文提出了 AutoSafeCoder,一个多智能体框架,旨在通过静态分析和模糊测试来增强(LLM)生成代码的安全性。现有的 LLM 代码生成技术虽然能够提高代码的功能正确性,但往往忽视了动态安全隐患。为了解决这一问题,AutoSafeCoder 引入了三个智能体:编码智能体、静态分析智能体和模糊测试智能体,在代码生成过程中持续协作,识别并修复安全漏洞。通过在代码生成的每个阶段集成静态和动态分析,AutoSafeCoder 在不牺牲功能性的前提下减少了 13%的代码漏洞。


研究目的:LLM 在软件开发中得到了广泛应用,尤其是在自动化代码生成领域。然而,现有的 LLM 代码生成方法侧重于功能正确性,而经常忽视运行时的动态安全问题,导致生成的代码中可能含有未被发现的漏洞。本文的研究目的是通过引入多智能体协同工作框架,集成静态和动态安全分析方法,改进 LLM 生成代码的安全性,从而在生成的代码中有效减少漏洞,确保代码在功能正确性的同时达到安全标准。


研究贡献:

1. 提出了一种新的多智能体系统,利用 LLM 实现自主的安全代码生成,结合静态分析与模糊测试来增强代码安全性。


2. 应用了少样本学习和上下文学习技术,构建了一个持续反馈循环的框架,使智能体能够有效识别和修复漏洞。


3. 通过定量和定性评估证明了所提框架在安全性和效率上的改进,实验证明,与传统 LLM 代码生成相比,AutoSafeCoder 可以减少 13%的漏洞。

引言

当前软件开发中,代码漏洞带来安全风险问题,而 LLM 在代码生成领域的广泛应用使这一问题更加严重。现有代码生成技术多关注功能正确性,忽视运行时安全问题,如难以发现潜在安全漏洞,像 GitHub Copilot 等 LLM 代码助手生成的代码约 40% 存在安全漏洞。为应对此挑战,本文提出 AutoSafeCoder 框架,集成静态和动态分析工具,在代码生成各步骤进行安全性检查与修复。因 Python 语言在开发者中广泛使用,本文实验与评估围绕其展开。

相关工作

回顾近年来多智能体系统和代码生成领域的进展,多个研究显示,LLM 驱动的多智能体系统能通过多轮迭代协作生成代码,但往往仅关注代码功能而忽略安全性。此外,本文还回顾了静态分析与动态分析工具在漏洞检测中的应用,静态分析可在代码层面捕获一些问题,却无法检测运行时的动态问题,动态分析则通过模糊测试等方法在运行时发现漏洞。本文提出的框架结合了这两种分析方法,弥补了现有技术的不足。


研究方法

AutoSafeCoder 的工作流程由三个智能体组成:编码智能体、静态分析智能体和模糊测试智能体。编码智能体基于 GPT-4 模型生成代码,并通过与其他智能体的反馈循环持续修正代码中的漏洞。静态分析智能体利用 MITRE CWE 数据库,检测代码中的静态安全漏洞,并反馈给编码智能体进行修正。模糊测试智能体则通过输入突变的方式生成多种输入,用以检测代码在运行时的崩溃或错误。一旦检测到错误,模糊测试智能体会将具体的错误信息返回给编码智能体,继续修正代码,直到不再检测到漏洞或达到预设的迭代次数。

研究实验

数据集:实验使用了 SecurityEval 数据集,包含 121 个 Python 样本,每个样本对应一种特定的漏洞类型。为了评估功能正确性,实验还使用了 HumanEval 数据集,该数据集包括竞赛级编程题的提示和相应的单元测试,方便评估代码的功能性。


实验设置:研究使用 GPT-4o 模型作为编码智能体,实验设置了最多四轮静态分析与 150 轮模糊测试的迭代。所有实验在一个具有 Red Hat Enterprise Linux 8.10 系统和 Tesla V100S GPU 的环境中运行。



实验结果:实验结果表明,与基线 LLM 相比,AutoSafeCoder 减少了 13%的代码漏洞。此外,虽然 AutoSafeCoder 的功能正确性稍有下降(Pass@1 从 90.85%降至 87.80%),但安全性明显增强。静态分析智能体在 53%的样本中成功修正了漏洞,模糊测试智能体也通过突变输入发现并修复了 5 个崩溃问题。


论文结论

本文提出的 AutoSafeCoder 多智能体框架,在 LLM 生成代码过程中通过集成静态与动态分析方法,有效减少了代码漏洞。实验结果表明,该框架在不显著降低代码功能性的前提下,提升了代码的安全性。未来的工作将集中在进一步优化模糊测试策略,并探索更多编程语言的支持。


原作者:论文解读智能体

校对:小椰风


用户头像

云起无垠

关注

定义开发安全新范式 2022-10-14 加入

云起无垠致力于为企业提供自动化安全检测能力,让企业更安全,让安全更智能。

评论

发布
暂无评论
【论文速读】| AutoSafeCoder:通过静态分析和模糊测试保障LLM代码生成安全的多智能体框架_云起无垠_InfoQ写作社区