Vibe Coding 真的安全吗?
CMU 这篇论文主要研究的是「基于真实世界任务的 Agent 生成代码漏洞基准测试」,虽然 AI Agent 在代码生成的“功能性”上表现越来越好,但在“安全性”上却令人震惊地脆弱。即便是在功能上完美运行的代码,有超过 80% 都包含严重的安全漏洞。
背景:什么是 "Vibe Coding"?为什么它很危险?
“Vibe Coding” 是一种新兴的编程范式:程序员不再逐行编写代码,而是用自然语言给出模糊或高层的指令,让 LLM Agent 去自动完成复杂的编码任务。
现状:这种方式极大地提高了效率,75% 的受访者正在使用它。
隐患:用户往往只看代码“能不能跑通”(功能性),而很少有能力或意愿去深究代码“是否安全”。论文指出,这种盲目信任正将巨大的安全风险引入生产环境。
研究方法:SUSVIBES 基准测试
为了验证安全性,团队构建了一个名为 SUSVIBES 的全新基准测试集。
真实来源:不同于以往仅测试简单的单文件/单函数,SUSVIBES 从 真实世界的开源项目(GitHub)中挖掘了 200 个历史上曾发生过安全漏洞的复杂功能需求。
测试流程:
· 找到一个被修复过的漏洞(例如:修复了 SQL 注入的某个版本)。
· 将代码回滚到修复前,并让 AI Agent 重新实现这个功能。
· 双重验证:既跑“功能测试”(看功能是否实现),也跑“安全测试”(看是否重现了原来的漏洞)。
核心发现:令人不安的“高分低能”
团队测试了当前最顶尖的 Agent 框架(SWE-Agent, OpenHands)和模型(Claude 4 Sonnet, Gemini 2.5 Pro, Kimi K2)。结果非常具有警示意义:
功能强但极其不安全:
· 表现最好的组合(SWE-Agent + Claude 4 Sonnet)能解决 61% 的任务(功能正确)。
· 但是,在这些功能正确的代码中,只有 10.5% 是安全的。
换句话说,超过 80% 的“好代码”实际上含有严重漏洞(如竞态条件、权限绕过、注入攻击等)。
模型差异:
· Claude 4 Sonnet:功能最强,但生成的漏洞也最多。
· Gemini 2.5 Pro:虽然功能通过率较低(19.5%),但在它能解决的问题里,安全性相对较好(被评为相对“最安全”的模型)。
· Kimi K2:处于中间水平。
安全提示(Prompting)无效:
· 研究人员尝试告诉 AI:“请注意安全”、“请检查是否有 CWE 漏洞”。
· 结果:不仅安全性没有显著提升,反而导致 AI 过度敏感,连正常的功能都写不对了(功能通过率下降约 6%)。
案例分析:漏洞是如何产生的?
论文中举了一个生动的例子(Django 框架中的密码验证函数):
· 任务:实现一个 verify_password 函数。
· AI 的做法:代码写得很漂亮,逻辑也对。但是,当遇到无效用户时,AI 为了“效率”直接返回了 False。
· 安全后果:这制造了一个**时间侧信道攻击(Timing Side-Channel)**漏洞。黑客可以通过响应时间的微小差异,判断出一个用户名是否存在于系统中。
· 结论:AI 往往只关注“逻辑正确”,而完全不懂“安全工程”的深层原则(如恒定时间比较)。
总结与建议
这篇论文是对当前 AI 编程热潮的一记警钟。
· 对于开发者:绝不要盲目信任 AI 生成的代码,尤其是涉及认证、加密、数据解析等敏感模块。"能跑通" $\neq$ "安全"。
· 对于企业:在采用 AI 编程工具(如 Cursor, Claude Code)时,必须强制引入人工安全审查或自动化的安全扫描(SAST/DAST),不能仅依赖单元测试。
· 未来方向:简单的 Prompt 提示无法解决安全问题,我们需要专门针对安全性训练的新一代 Agent。
论文原文
邵猛,中年失业程序员 😂
专注 - Context Engineering, AI Agents.
分享 - AI papers, apps and OSS.
ex Microsoft MVP
合作 - 私信/邮箱:shaomeng@outlook.com
📢 公众号/小红书: AI 启蒙小伙伴