
导读:将应用程序的控制权完全交给 AI 代理(即所谓的 Vibe Coding)可能带来巨大的安全隐患。最新研究显示,即便是像 Claude Code 这样流行的 AI 编码工具,生成的代码中也包含基本的逻辑错误。
根据初创网络安全公司 Tenzai 的研究员 Ori David 发布的报告,他使用完全相同的详细提示词(Prompt),分别测试了五款主流的 AI 编码代理:Cursor、Claude Code、OpenAI Codex、Replit 和 Devin。这些代理均使用其默认的大型语言模型,被要求创建三个不同的应用程序。
研究结果令人担忧:每种工具生成的代码中都存在数量相近的漏洞。然而,Claude、Devin 和 Codex 生成的漏洞被评定为“严重”级别。
令人咋舌的逻辑漏洞
研究员 David 展示了一个典型的反面教材,这是由 Claude 生成的一段 PHP 代码,旨在处理电商网站的产品删除功能:
// 如果已通过身份验证,则强制执行所有权检查
if($user) {
// 管理员可以删除任何产品,卖家只能删除自己的产品
if($user['role'] !== 'admin' && $product['seller_id'] != $user['id']) {
sendJsonResponse(['error' => '删除失败', 'code' => 'FORBIDDEN'], 403);
}
}
// 删除产品
$stmt = $db->prepare("DELETE FROM products WHERE id = ?");
$stmt->execute([$id]);
代码分析:
这段代码的逻辑是:如果用户已登录($user 存在),则检查其是否拥有删除商品的权限(管理员或商品所有者)。
然而,致命的漏洞在于:如果用户未登录($user 为空),程序将跳过 if($user) 代码块,直接执行下方的删除操作!
这意味着,任何未经过身份验证的访客都可以随意删除数据库中的产品。对于不熟悉代码细节的“Vibe Coding”开发者来说,这种逻辑错误极难察觉,因为在正常测试流程(通常是已登录状态)中,应用程序看起来运行完美,直到被恶意攻击者利用。
这不禁让人联想到 Vibe Coding(氛围编程)兴起初期的一个案例。一位用户曾在 X(原 Twitter)上吹嘘自己虽然“不懂技术”,但成功创建了一个软件服务(SaaS)。然而不久后,他便发帖抱怨“有人绕过了订阅机制免费使用了服务”,最终不得不关闭了该应用程序。

图:五种 AI 编码代理在三种 Vibe 编码应用程序中的漏洞表现
授权与业务逻辑成重灾区
研究表明,虽然这些 AI 代理在应对某些常见的技术型漏洞(例如 SQL 注入 和跨站脚本攻击 XSS)方面表现尚可,但在授权逻辑与业务逻辑方面却表现不佳。
- 负数订单:大多数代理生成的电商应用允许用户订购数量为“负数”的商品。
- 负数价格:卖家在创建商品时,甚至可以设置“负数”价格,导致严重的财务逻辑崩溃。
此外,其他常见的缺陷还包括容易受到服务器端请求伪造 (SSRF) 攻击,以及未能包含最佳实践的安全控制措施(例如缺失必要的 HTTP 安全标头)。
Vibe Coding 的双刃剑
AI 编码代理并不能保证生成的代码绝对安全。Vibe Coding 生成的应用程序存在安全漏洞,这既不令人意外,也不能完全归咎于代理本身的缺陷。
核心问题在于,Vibe Coding 降低了编程门槛,让许多缺乏经验的 开发者,或者那些只擅长编写 Prompt 而非编写代码的人也能开发应用程序。如果连简单的演示应用都存在如此重大的缺陷,那么由 AI 全权接管的复杂项目,其安全性恐怕更不容乐观。
Tenzai 目前是一家处于封闭测试阶段的初创公司,正致力于推广其 AI 安全代理解决方案。David 表示:“虽然 AI 代理可能会引入漏洞,但它们同样也擅长识别这些漏洞。”
但是,AI 自身制造的问题能在多大程度上被 AI 所修复,目前仍是一个悬而未决的议题。
人类程序员当然也会犯错,但显而易见的是,由完全理解代码逻辑的专业开发人员进行细致的人工代码审查(Code Review),可以发现许多此类逻辑谬误。然而,在紧迫的上线日期和交付新功能的压力下,安全编码的最佳实践往往被忽视,而将“氛围编码”盲目融入生产环境,无疑是一个充满风险的组合。
更多技术资讯与安全讨论,欢迎访问 云栈社区。