如果三个AI编码平台,都不做任何安全加固,直接把应用推到生产环境,结果会怎样?我们在Kolega做了一个实验,结果出来时,所有人都安静了几秒。不是因为我们发现了漏洞,而是因为漏洞的数量和严重程度,远远超过了任何一方的营销说辞。
这半年来,几乎所有搭建在AI之上的编程行为都被叫做“vibe coding”——输入你想要的东西,敲下回车,三十秒后一个能跑的应用就出现在屏幕上。Lovable、Replit、Manus、Bolt、V0,身边做产品的团队要么已经用上了,要么正在尝试。我们在Kolega也一样,一部分原因是它们真的有用,另一部分,是我们太想知道这些生成物里面到底装着什么。
于是我们正经地跑了一场实验。八个应用类别,三个平台,每次都用完全相同的需求描述去生成。密码管理器、客户关系管理、物业管理、学习管理系统、医疗诊所、贷款发放、法务案件管理、人力资源——总共二十四个代码库。我们把每一个都推到GitHub,然后让Kolega的扫描器去检测。和绝大多数讨论“AI安全”的文章不同的一个操作:我们什么都没改,所有平台的设置都保留默认,默认模板,默认后端。没有加一句“请让这个应用安全”,没有“添加输入验证”,没有“检查鉴权流程”。我们做的事情,就是一个普通开发者在某个周二下午坐下来想要交付一个产品时会做的事。这是唯一公平的测试,因为它完全对应每天都在发生的事实——生产环境里跑的就是这样的代码。
返回的结果是一份矩阵。每一个应用,每一项检测发现,全列在上面。所有平台默认配置,扫描之前不做任何人工加固。总共五百六十一个漏洞,其中三百个被标记为严重或高危。这二十四个应用在每家平台自己的官网上都被称为“生产就绪”。而所有这些漏洞,没有一条附带了修复方案。
总数字之外还有三件事真正值得注意,标题反而是其中最没意思的那个。标题是“AI会造出不安全的应用”,这点几乎所有人都已经猜到了。那些声音更小的发现,才真正改变你对这件事的思考方式。几乎没有什么结果是干净的。二十四次生成里,恰好只有一个扫描结果是零发现,那是Lovable构建的一个学习管理系统。其余二十三个应用,每一个都带着从六个到四十六个不等的发现。如果问题变成“我的vibe coding应用会有漏洞吗”,根据这次采样的答案就是“有,置信度百分之九十六”。生成器给出干净的输出是例外,不是规则,连“接近规则”都算不上。
只看漏洞总数还会掩盖真正的故事。Replit和Manus在总数上看起来很接近,平均每个应用二十六点一和二十九点九个漏洞。Lovable平均十四点一个,这让Lovable看起来像是明显的赢家。然而一旦聚焦到严重漏洞——那些真正会让你被攻破的缺陷,差距就拉开成另一种模样。Lovable平均每个应用两个严重漏洞,Replit平均三个,Manus平均五个。在八个生成批次里,这就分别意味着十六个、二十四个和四十个严重漏洞。两个“看起来总数差不多”的平台,从其中一个到另一个,会导致百分之五十更多的入侵级缺陷。如果你只盯着总数,永远都不会知道这一点。
没有任何一个平台在所有类别里都表现最佳。Lovable在八个类别中有六个直接胜出。Replit拿下了密码管理器——十二个发现,零严重漏洞;而Manus在同一个需求描述下检出四十三个漏洞,其中九个严重。单看这一个应用,Replit像是密码管理器的正确答案。但把视线拉回整体,Lovable又在其他大多数场景里更可靠。如果你正准备给一个医疗诊所生成系统,或者要出一套贷款审批流程,平台之间的差距就会立刻转化为上线后要面对的风险等级。
整个实验最让人在意的不是“AI不安全”这个旧结论,而是“生产就绪”这个标签背后的空洞。二十四套代码,二十三个带伤出生,没有一套在出厂时附带了修复指引。这意味着当一个非安全背景的开发者用这些平台完成第一次交付,他面对的是一张看不见的、由三百个严重和高危漏洞织成的网。平台没有告诉他,他也不会主动去看——因为应用跑起来了,界面渲染正常,数据库在读写,所有功能都通过了演示。
“默认情况”才是真正的产品。我们测试时没有提出任何安全要求,不是因为懒,而是因为这才是真实用法。绝大多数人会从默认开始,绝大多数人会停在默认。如果你要求每一个用AI编程的人都要先在提示词里写上一段安全加固指南,那这个问题就已经不在技术范畴,而在行为的空想里。平台的默认输出,就是大多数人最终会上线的版本。五百六十一个漏洞,三百个严重或高危,零个修复建议——这就是当前默认输出的底色。
热门跟贴