技术

对38万款用AI生成的应用做了一次扫描,结果发现成千上万款根本没有任何身份验证

Susan Hill

自2023年以来,”vibe-coding”(氛围式编程)一直在卖同一个故事:人人都能做应用。RedAccess的新一轮扫描,给这个故事开出了第一张真正算数的发票。在用AI编程工具构建、并通过Netlify等服务上线的约38万款Web应用中,约有5,000款根本没有任何身份验证机制;而在这些毫无防护的应用里,约40%承载着敏感数据——用户信息、对话日志、支付数据、内部凭证。这一组数字本周同时落到WIRED、Axios和Security Boulevard的稿子里,描述的正是这个行业过去两年悄悄堆积起来的一类失败。

那些被点名的生成工具,正是任何一位非开发者都已经叫得上名字的平台。Lovable、Replit、Base44,以及更广义的”用一段提示词搭出来”工具生态,从一开始就在卖同一个隐藏的承诺:AI不只接管”敲代码”这件事,也接管那位本该盯着流程的工程师。挑一段提示词,看着应用从无到有冒出来,通过Netlify或Vercel推上线,再把链接转发出去。RedAccess这次扫描所记录的,正是这条流水线里没有任何一个人停下来问一句”这个应用是不是需要装把锁”,便已经悄悄上线的成果。

漏洞其实并不复杂。这些没有防护的应用并不需要一个高明的攻击者,只需要一个浏览器。许多应用上线时直接把Supabase或Firebase的密钥嵌在客户端bundle里,这意味着任何稍感兴趣的人都能读取整个数据库。部分应用还允许对同一个数据库进行写入操作,于是一个素不相识的人就能改动用户记录。一些应用甚至直接把管理后台的接口公开。这种缺陷既不是零日漏洞,也不是某个边缘场景配置失当。它是整个安全层的整体缺席。

怀疑要保留几分,因为把责任完全推给工具的诱惑很大,但也只对了一半。一名没有人监督、从零写同样应用的初级开发者,多半也会上线类似的东西。真正的差别在于体量。vibe-coding工具把门槛压得够低,于是那些无法独立思考身份验证问题的人在生产环境部署的应用总数被一举推高。工具在技术上完全能给出身份验证脚手架,但默认流程不强制;而最受这些工具好处的人,恰恰是最缺乏装备去意识到”少了点什么”的那群人。Lovable表示正在着手把身份验证脚手架做成默认开启。Replit指向自家原本就有的安全默认设置,同时承认用户可以将其关闭。Base44没有公开回应。平台都在反应——问题在于这个反应能不能跑赢部署速度。

往结构层去读,就更难下咽。两年来,整个行业一直把”把专业评审从部署管线里抽掉”当作功能而非代价来卖。RedAccess的这组数据,就是这种”抽掉”被放大到行业规模时的样子。应用对自己搭它的人能用,对每一个偶然找到URL的人也一样能用。接下来这两年,很可能就是这类事件慢慢堆积的两年——直到要么平台在框架层把身份验证设为默认强制,要么监管者出手强制平台这样做。两件事不冲突。欧盟的产品责任制度已经被重新解读,以纳入AI生成的软件;美国各州的总检察长,也已经开始绕着这个议题转。

这些平台的用户今天能做的事,其实很窄。RedAccess针对四款被点名的工具发布了指引——确认应用在访问数据前是否要求登录、审查随客户端bundle一起发布的密钥、以及把”任何一次分享出去的URL都已经被某人扫过一遍”当作默认假设。平台承诺会改善。这次产生整个故事的扫描只花了几天。下一轮已经在筹备。

讨论

有 0 条评论。