Vibe Coding安全吗?真实任务中智能体生成代码漏洞基准测试
作者:Songwen Zhao, Danqing Wang, Kexun Zhang, Jiaxuan Luo, Zhuo Li
发表时间:2025-12-02
摘要
Vibe coding 是一种新兴的编程范式,人类工程师指导大语言模型(LLM)智能体在很少监督的情况下完成复杂的编码任务。尽管 vibe coding 正被越来越多地采用,但其输出结果真的能安全部署到生产环境吗?为回答这一问题,我们提出了 SUS VIBES 基准测试,该基准包含 200 个来自真实开源项目的功能请求软件工程任务,这些任务在交给人类程序员实现时,导致了存在漏洞的实现。我们在此基准上评估了多个使用前沿模型的广泛使用的编码智能体。令人不安的是,所有智能体在软件安全方面表现都很差。尽管 SWE-Agent 配合 Claude 4 Sonnet 的解决方案中有 61% 功能正确,但只有 10.5% 是安全的。进一步实验表明,初步的安全策略(例如在功能请求中增加漏洞提示)无法缓解这些安全问题。我们的发现对 vibe coding 的广泛采用,特别是在安全敏感的应用中,提出了严重关切。
全文
Vibe Coding安全吗?真实任务中智能体生成代码漏洞基准测试
Songwen Zhao¹,², Danqing Wang¹, Kexun Zhang¹, Jiaxuan Luo¹,³, Zhuo Li⁴, Lei Li¹
¹卡内基梅隆大学,语言技术研究所
²哥伦比亚大学
³约翰霍普金斯大学
⁴HydroX AI
{danqingw, kexunz, leili}@cs.cmu.edu
sz3296@columbia.edu
LeiLiLab/susvibes
Leaderboard
摘要
Vibe coding 是一种新兴的编程范式,人类工程师指导大语言模型(LLM)智能体在很少监督的情况下完成复杂的编码任务。尽管 vibe coding 正被越来越多地采用,但其输出结果真的能安全部署到生产环境吗?为回答这一问题,我们提出了 SUSVIBES,一个由 200 个来自真实开源项目的功能请求软件工程任务组成的基准测试,这些任务在交给人类程序员实现时,导致了存在漏洞的实现。我们在此基准上评估了多个使用前沿模型的广泛使用的编码智能体。令人不安的是,所有智能体在软件安全方面表现都很差。尽管 SWE-Agent 配合 Claude 4 Sonnet 的解决方案中有 61% 功能正确,但只有 10.5% 是安全的。进一步实验表明,初步的安全策略(例如在功能请求中增加漏洞提示)无法缓解这些安全问题。我们的发现对 vibe coding 的广泛采用,特别是在安全敏感的应用中,提出了严重关切。

图 1 | SUSVIBES:一个功能请求任务包括任务描述、代码库和执行环境。要求软件工程智能体向给定的代码库添加新功能。智能体可以与环境交互以获取反馈并改进其解决方案补丁。解决方案补丁将使用人类编写的功能测试和安全单元测试进行测试。如示例所示,如果不进行 check_unsafe_options,解决方案补丁无法通过安全测试。
arXiv:2512.03262v2 [cs.SE] 2026年2月16日
标题:Is Vibe Coding Safe? Benchmarking Vulnerability of Agent-Generated Code in Real-World Tasks
1. 引言
Vibe coding(氛围编码)是一种新的编程范式,软件工程师通过自然语言提出软件任务需求,大语言模型(LLM)智能体根据这些需求完成复杂的编程任务。这一实践已被越来越多地采用,流行的人工智能集成开发环境(如 Cursor)和命令行界面(如 Claude Code)的普及便是明证。最近一项调查显示,75% 的受访者正在使用 vibe coding,其中 90% 表示满意 [23]。另一项调查表明,经验不足一年的初级程序员更可能是 vibe coding 的乐观主义者 [31]。前沿 AI 公司(如 Anthropic)也公开承认“在生产环境中使用 vibe coding”[3]。虽然 vibe coding 可能提高了工程师的生产力,但智能体生成代码的安全性仍然存疑,尤其是当 vibe coding 用户可能缺乏仔细检查代码的能力或意愿时。多方报告显示安全事件频发,例如 API 密钥以明文形式暴露以及认证漏洞,其中一些已被恶意攻击者利用 [6]。
目前已存在多个评估 AI 生成代码安全性的基准,包括 Baxbench [27]、CWEval [22]、SALLM [24]、SecCodePLT [35] 和 Asleep [21]。然而,这些基准不足以评估 vibe coding 场景下的安全性,原因如下:
- 它们的上下文局限于单个文件或函数,而实际 vibe coding 通常涉及具有复杂文件结构的大型项目。
- 它们评估的是单次生成代码的模型,而 vibe coding 是由智能体在多次交互中完成的。
- 它们的输入仅包含文本,而编码智能体允许与执行环境交互并获取反馈。
为解决这些局限,我们提出了 SUSVIBES,一个用于检查 AI 智能体在 vibe coding 中安全风险的基准。SUSVIBES 包含 200 个基于大型代码仓库(而非单个文件)的真实编码任务,并涵盖了来自 CWE(通用弱点枚举)[17] 的 77 种弱点。其任务更为复杂,平均需要编辑跨多个文件的 170 行代码。表1 比较了 SUSVIBES 与现有的安全代码生成基准,图1 展示了一个示例任务,该任务以请求为现有代码仓库添加功能(满足需求的一个功能单元)[5] 的形式呈现。被评估的智能体需要生成一个补丁,将该功能添加到仓库中。随后,使用两套人工编写的单元测试对补丁进行测试,一套用于功能正确性,另一套用于安全性。
我们提出了一条自动流水线,用于从包含已修复安全问题的真实 GitHub 仓库中构建 SUSVIBES 任务。该流水线包括三个步骤:(i) 挖掘存在人工修复漏洞的开源仓库;(ii) 利用人工编写的功能测试和安全测试;(iii) 自适应生成功能实现掩码、任务描述和执行环境。我们还进一步提出了详细的验证阶段,以验证生成的功能请求和执行环境对于功能实现是否充分且必要。
我们在 SUSVIBES 上评估了基于 3 个 LLM 的 3 种智能体框架,共得到 9 种组合。我们发现,即使性能最佳的组合(Claude 4 Sonnet 搭配 SWE-Agent)能解决 61.0% 的任务并通过功能测试,其功能正确的解决方案中仍有超过 80% 存在漏洞,使其面临被恶意利用的风险。按 2.
(注:原文末尾出现大量连续的“2.”,可能是分页或格式残留,按原样保留。)
标题:Vibe Coding 安全吗?基准测试中智能体生成代码在真实任务中的漏洞
原文:
Vibe Coding 安全吗?基准测试中智能体生成代码在真实任务中的漏洞表1 | 现有安全代码生成基准测试的概览。SUSVIBES 覆盖了最大的上下文和最多的常见弱点(CWE)。其中的每个任务都需要跨仓库编辑文件才能解决。
| 基准测试 | # 任务数 | 上下文 | 多文件编辑 | # 编辑行数 | # CWE 数量 |
|---|---|---|---|---|---|
| Baxbench [27] | 392 (27) | 无 | ✓ | N/A | 13 |
| CWEval [22] | 119 | 文件 | × | 103 | 1 |
| SALLM [24] | 100 | 文件 | × | 12.9 | 45 |
| SecCodePLT [35] | 1337 | 函数 | × | 8.1 | 27 |
| Asleep [21] | 89 | 文件 | × | 19.6 | 18 |
| ASE [13] | 120 | 仓库 | × | 35.7 | 4 |
| SecureAgentBench [7] | 105 | 仓库 | ✓ | 42.5 | 11 |
| SUSVIBES | 200 | 仓库 | ✓ | 172.1 | 77 |
漏洞类型(CWE)显示,不同的前沿 LLM 或框架偏好不同的类别,从而形成互补的优势和盲点。
此外,我们检验了几种通过提示策略降低安全风险的初步尝试,包括添加通用安全指导(generic)、使用提示识别 CWE 风险(self-selection),以及提供该任务目标对应的 oracle CWE 作为参考(oracle)。然而,尽管这些策略提高了代码安全性,它们却显著降低了功能正确性,大约下降了 7 个百分点。我们假设这种下降是因为智能体优先进行安全检查,从而对实现所需功能的关注减少。结果,这种初步缓解措施减少了既功能正确又安全的任务数量,突显了在基于智能体的环境中需要更先进的漏洞缓解策略。
总结来说,我们的贡献如下:
• 我们开发了一个自动化的整理流程,用于构建大规模仓库级别的安全导向编码任务,并配备运行时评估环境。
• 我们提出了 SUSVIBES,一个包含 200 项任务、覆盖 77 种 CWE 的基准测试,用于评估编码智能体在仓库级 Vibe Coding 场景中的功能和安全性能力。
• 我们进行了一系列全面的实验,结果表明,前沿 LLM 和流行的软件工程智能体尽管在解决超过 50% 的任务并通过功能性测试方面表现出色,但在安全性方面表现极差,超过 80% 的安全性测试失败。
• 我们检验了几种初步的降低安全风险的尝试,发现这些尝试导致功能性能显著下降,因此需要更精细的安全策略。
- 相关工作
编码智能体 受 SWE-Bench [12] 性能快速提升的推动,LLM 编码智能体在软件工程领域取得了巨大成功。编码智能体——基于 LLM 的系统,能够采取行动并与编码项目交互——可以执行各种任务,包括错误修复、功能实现、测试生成 [18]、环境设置 [9],甚至从零开始生成整个库 [38]。
编码智能体的改进分为两类:智能体设计和模型训练。
此前的研究主要关注如何改进 LLM(大语言模型)周围的智能体框架:智能体可以采取哪些行动 [34]、智能体应遵循何种工作流程 [32]、以及智能体如何通过增加推理时计算量来换取更优性能 [4, 10, 37]。后者则研究如何训练更好的 LLM 以支持智能体。SWE-Gym [20] 和 SWESynInfer [14] 通过监督微调为智能体训练单一模型。SWE-Fixer [33]、CoPatcheR [25]、SWE-Reasoner [15] 则为智能体的不同方面训练专用模型,从而降低实现良好性能所需的模型规模。SEAlign [36]、SoRFT [16] 和 SWE-RL [30] 使用强化学习,通过直接偏好优化或测试结果作为奖励来训练模型。
尽管在提升编码智能体能力方面投入了大量精力,但很少有人专注于对它们的安全性进行基准测试和改进。SUSVIBES 为社区提供了一个朝这一方向努力的平台。
代码安全基准测试
已有多种基准测试用于评估 LLM 生成代码的安全性和正确性。早期的基准测试侧重于评估较小范围内(如单个文件或单个函数)的单轮模型生成。SALLM [24] 提供了一个框架,用于评估 LLM 在以安全为中心的提示下生成安全代码的能力。CWEval [22] 引入了一个结果驱动的评估框架,能够在同一问题集上跨多种编程语言同时评估 LLM 生成代码的功能性和安全性。SecCodePLT [35] 提供了一个统一平台,用于评估不安全的代码生成和网络攻击的协助性,将专家验证数据与真实攻击场景中的动态评估指标相结合。Asleep [21] 通过调查 GitHub Copilot 生成漏洞代码的倾向性,从弱点、提示和领域三个维度评估 AI 生成代码的安全性,发现大约 40% 的生成程序存在漏洞。
最近的基准测试已将范围扩展到仓库级别的任务,涉及潜在的多文件编辑。BaxBench [27] 专注于后端应用程序安全性,将编码场景与多种编程语言的流行后端框架相结合,包含功能性和安全性测试用例以及专家设计的安全利用方法。ASE [13] 和 SecureAgentBench [7] 挖掘仓库级别的漏洞修复提交,并将其重新用作任务。与这些基准测试相比,SUSVIBES 专注于评估编码智能体(而非仅仅模型),覆盖了更多的 CWE(通用弱点枚举),且需要编辑更多行代码。表 1 展示了这些安全代码生成基准测试之间的详细比较。
3. SUSVIBES:构建面向安全的软件工程基准测试
Vibe coding 的一种常见用法是“需求说明到功能生成”:用户根据初始仓库给出特定软件功能的自然语言描述(即一个特性),然后智能体使用各种外部工具(如编译器)自主生成代码。当经验不足的程序员过度依赖 vibe coding 来实现新功能时,就会带来安全风险,尤其是在实现表现出看似合理的行为时。我们的方法将自动构建软件工程任务,揭示由智能体实现的功能代码中的漏洞。这些任务来源于 10 个安全领域的 108 个现有开源软件项目。