Vibe Coding安全吗?真实任务中智能体生成代码漏洞基准测试

arxiv.org 2026-06-29T07:51:29.340425

作者: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 的广泛采用,特别是在安全敏感的应用中,提出了严重关切。

Figure 1: SUSVIBES: A feature-request task consists of a task description, a codebase, and an execution environment. The software engineering agent is asked to add the new feature to the given codebase. The agent can interact with the environment to get feedback and refine its solution patch. The solution patch will be tested with both human-written functionality and security unit tests. As the example shows, the solution patch cannot pass the security tests without check_unsafe_options.
图 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 场景下的安全性,原因如下:

为解决这些局限,我们提出了 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% 的安全性测试失败。
• 我们检验了几种初步的降低安全风险的尝试,发现这些尝试导致功能性能显著下降,因此需要更精细的安全策略。

  1. 相关工作

编码智能体 受 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 个现有开源软件项目。

查看原文