导读:使用 vibe 编码生成的应用程序(开发者给予代理完全的控制权)很可能不安全,像 Claude Code 这样的流行代理甚至包含基本的逻辑错误。
根据初创网络安全公司 Tenzai 的研究员 Ori David 称,他使用相同的详细提示,分别用 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]);
这段电商网站中用到的代码会检查用户是否已登录,如果已登录,则检查其是否拥有删除商品的权限。但是,如果用户未登录,则不会进行任何检查,直接执行删除操作。对于不熟悉代码的开发者来说,这种错误可能难以察觉,因为应用程序在被滥用之前可能运行正常。
这让人想起早期 Vibe 编码时代的一位用户,他在 X 上吹嘘自己创建了一个软件服务,尽管他“不懂技术”,后来却抱怨“有人绕过了订阅”,最终关闭了该应用程序。
研究表明,这些代理在应对某些常见漏洞类型(例如 SQL 注入和跨站脚本攻击)方面表现良好,但在授权逻与业务逻辑方面表现不佳。例如,大多数代理允许用户在电商应用中订购负数的商品,并且卖家在创建商品时可以设置负价格。
其他常见缺陷包括容易受到服务器端请求伪造(SSRF) 攻击,以及未能包含最佳实践安全控制措施(例如安全标头)。
编码代理并不能保证生成的代码安全,而Vibe编码的应用程序存在安全漏洞既不令人意外,也不是代理本身的缺陷。问题在于,Vibe编码能让一些缺乏经验的开发者,或者那些只擅长人工智能提示而非编程的开发者也能开发应用程序。
如果这些简单的应用程序都存在重大缺陷,那么更复杂的项目很可能就更加不安全。
Tenzai是一家处于封闭测试阶段的初创公司,该公司将其人工智能安全代理作为解决方案进行推广。
“虽然人工智能代理可能会引入漏洞,但它们也擅长识别这些漏洞,”David说道。
但是,人工智能自身造成的问题能在多大程度上被人工智能所弥补,目前仍是一个悬而未决的问题。
程序员也会犯错,但显而易见的是,由完全理解代码的开发人员进行细致的人工代码审查,可以发现许多类型的错误。话虽如此,紧迫的上线日期和交付新功能的压力可能会导致安全编码最佳实践被忽视,而将“氛围编码”融入其中是一个冒险组合。
作者:场长
参考:
https://blog.tenzai.com/bad-vibes-comparing-the-secure-coding-capabilities-of-popular-coding-agents/
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。