您的位置首页 >人工智能 >

Lovable大量应用暴露敏感数据

我先核实这次 Lovable 数据暴露的范围、根因、发现方和官方回应,再按固定结构写成技术解析。

核心数据已确认:159,041 个项目、24,664 个 Supabase 实例零认证可读。接下来补充 Lovable 的最新回应与报告原文,避免把 “平台被黑” 和 “客户配置错误” 混在一起。

Lovable 大量应用暴露敏感数据:没有发生平台被攻破,问题在 Supabase RLS 没有开启

这次事件的原因是大量用 Lovable 生成的 App 把 Supabase 数据库直接暴露在公网,并没有发生在 Lovable 自己被攻破上。Crissy Field 与德国《Handelsblatt》用 Common Crawl 扫了 159,041 个 Lovable 项目(2025 年 12 月–2026 年 9 月),其中 34,545 个用了 Supabase,24,664 个在页面加载时就返回数据库记录;研究人员用页面本来就发给浏览器的同一个 key 做只读请求,在 7,403 个站点的 10,560 张表里读到邮箱,约占细查样本的 30%。泄露内容包含 1,000+ 条护照号 / 有效期 / 国籍、80,000 条用户资料、200,000 条聊天记录、订单 / 票务 / 支付信息、合同 / 发票 / 内部 WhatsApp。根因是 Supabase 的行级安全(RLS)缺失:浏览器里的 anon/publishable key 本来就是公开的,RLS 没开,等于把整张表交给任何访客。Lovable 安全负责人对《Handelsblatt》表示,这是行业已知问题,应用安全是共同责任;但 “无代码建站” 的营销和 “责任在客户” 的条款之间,确实有一道安全鸿沟。

一、事件全貌:对未设访问控制的数据库发起了正常读取

指标数字含义
扫描项目159,041 个通过 Common Crawl 找到的公开 Lovable 项目
使用 Supabase34,545 个约占 21.7%
零登录返回记录24,664 个页面加载时就把数据库记录发给访客
暴露邮箱的站点7,403 个占细查 24,664 个站点的 30%
涉及表10,560 张邮箱出现在多张表里
护照记录1,000+ 条含护照号、有效期、国籍

研究人员强调,他们只用了网站正常提供给浏览器的只读请求,没有利用漏洞,也没有绕过认证。换句话说,这不是 “黑客撬锁”,而是 “门本来就是开的”。

二、泄露了什么:从护照到内部聊天

数据类型具体例子风险
身份证件1,000+ 条护照号、有效期、国籍身份盗用、开户 / 出行欺诈
用户资料80,000 条姓名、邮箱、生日、性别精准钓鱼、骚扰
私密聊天200,000+ 条消息、内部 WhatsApp勒索、商业秘密泄露
订单 / 票务电话、地址、支付信息、有效票码门口诈骗、冒领
合同 / 发票数万份合同、发票、私人相册商业情报、客户隐私
内部邮件AI 生成的租户 / 业主 / 合作伙伴摘要物业、法务、谈判信息泄露

还有报道提到某服务商泄露 28 万条客户邮箱。这个数字来自 DEV Community 的整理,不是 Crissy Field 报告原文的统计口径,引用时要注明。

三、根因拆解:anon key 不是秘密,RLS 才是门锁

Supabase 的架构是:浏览器直接通过 REST API 访问 Postgres。页面里带的那把 anon(或新的 publishable)key 是设计上就要公开的,它只代表 “未登录访客” 这个角色;真正决定能读哪些行的,是 RLS 策略。

Key能否绕过 RLS该放哪泄露后果
anon / publishable不能浏览器、前端代码正常,关键看 RLS
service_role / secret能只在服务端灾难,等于数据库管理员

RLS 没开时,anon 角色没有任何过滤,GET /rest/v1/profiles?select= 就能把整张表拉走。登录框只是 UI 装饰,数据在 API 后面;攻击者不需要登录,只需要页面里那把公开 key。

四、为什么 AI 建站特别容易犯这个错

环节AI 做了什么漏了什么
建表生成 profiles、users、orders 等表不主动生成 RLS 策略
写查询让页面能读数据、能登录不验证 “未登录能不能读”
修报错用 using (true) 让查询通过把表变成 “所有人可读”
上线一键发布没有安全检查门禁
责任平台提供工具条款把配置责任归客户

AI 生成代码的默认目标是 “能跑”,不是 “安全”。非技术创始人不知道 RLS 是什么,看到登录框能挡住页面,就以为数据安全了;实际上,API 根本不看登录框。更麻烦的是,Supabase 集成模式高度重复,一种错误配置会在几千个独立站点上同时出现,攻击者不需要逐个找漏洞,只要批量试同一个模式。

五、责任边界:Lovable、创作者、监管

角色说法应该做什么
Lovable提供安全构建工具;应用如何配置,责任在创建者;这是行业已知问题,安全是共同责任默认开启 RLS、发布前扫描、对高危配置弹窗 / 阻断
创作者我用了 “无代码” 工具,以为平台会管安全上线前做 RLS / 密钥 / 存储三项检查
监管GDPR/CCPA 对个人数据泄露有通知与整改要求确认是否构成 “个人数据泄露”,评估通知义务

Crissy Field 报告自己留了三个重要限定:30% 不是确认泄漏率(邮箱可能是公开联系人或测试数据);Common Crawl 样本不代表全部 Lovable 应用;没有确认这些数据被滥用。所以,不能把 “7,403 个站点有邮箱” 直接等同于 “7,403 起数据泄露事件”。但 “1,000+ 本护照”“200,000 条聊天” 这种级别的内容,已经足够触发合规审查。

六、更大的背景:vibe coding 的安全债

研究样本发现
Crissy Field159,041 个 Lovable 项目24,664 个零登录返回记录,7,403 个暴露邮箱
RedAccess约 380,000 个 vibe-coded 应用约 5,000 个泄露敏感数据
Escape5,600 个生产应用2,000+ 漏洞、400+ 暴露密钥、175 起个人数据泄露
行业统计AI 生成代码40%–62% 含漏洞;91.5% 的 2026 Q1 vibe-coded 应用至少一个 AI 幻觉相关缺陷

这些数字口径不同,不能简单相加,但方向一致:AI 把 “建站” 的门槛降到零,却没有把 “安全默认值” 一起降下来。Lovable 不是唯一一家,Bolt、Replit、Base44 也有类似模式;差别只在 Lovable 这次被系统性扫了 16 万个项目。

七、30 分钟自查与修复清单

步骤动作验收
1. 盘点列出所有 Supabase 项目、表、Storage bucket知道哪些表存了 PII
2. 查 RLS跑下面的 SQL,看 rowsecurity 是否为 false所有 public 表都是 true
3. 开 RLSALTER TABLE ... ENABLE ROW LEVEL SECURITY;表不再对匿名全开
4. 写策略用 auth.uid() = user_id 限定行;敏感表不给匿名读登录用户只看到自己的数据
5. 查密钥前端只留 publishable/anon;service_role 移到服务端客户端 bundle 搜不到 service_role
6. 查存储护照 / 合同 / 照片 bucket 设为 private,用签名 URL匿名不能列举 / 下载
7. 测匿名退出登录,curl 请求 ?select=*返回 401 / 空,不返回数据
8. 轮换 / 通知若已泄露,轮换密钥、看日志、评估通知有记录、有整改

查 RLS 的 SQL:

select schemaname, tablename, rowsecurity

from pg_tables

where schemaname = 'public'

order by rowsecurity, tablename;

匿名测试:

curl "https://.supabase.co/rest/v1/profiles?select=" \

-H "apikey: " \

-H "Authorization: Bearer "

如果退出登录还能返回数据,这张表就是公开的。别用 using (true) 糊弄报错,那等于把门锁拆了让 App 跑起来。

八、给不同角色的建议

角色现在做什么别做什么
非技术创始人上线前做 RLS / 密钥 / 存储三项检查;找安全顾问复核以为 “有登录框” 就等于数据安全
开发者把 RLS 策略写进 migration;加匿名读测试到 CI把 service_role 塞进前端
平台默认开 RLS;发布前扫描;高危配置阻断只用条款把责任推给客户
企业采购把 vibe-coded 应用纳入安全评审让业务部门直接上线处理 PII 的应用

【常见问题】

问题 1:Lovable 大量应用暴露敏感数据,是 Lovable 被黑了吗?

回答 1:不是。Crissy Field 的调查指向 Lovable 生成的 App 在 Supabase 数据库上缺少 RLS 配置,而不是 Lovable 平台本身被入侵。研究人员只用了网站正常发给浏览器的公开 key 和只读请求,没有利用零日漏洞;问题在于应用把数据库 “默认开放” 了。

问题 2:为什么 Supabase 的 anon key 公开了,数据就会被看光?

回答 2:anon/publishable key 本来就是设计给浏览器用的,它只代表 “未登录访客”;能否读数据取决于 RLS 策略。RLS 没开时,anon 角色没有行过滤,任何人拿页面里的 key 请求 profiles?select= 就能拉走整张表。真正的秘密不是 key,而是你有没有写 RLS 策略。

问题 3:用 Lovable 做的应用,怎么快速检查有没有暴露敏感数据?

回答 3:先跑 pg_tables 查 rowsecurity,所有 public 表都应为 true;再退出登录,用页面里的 anon key curl 请求 ?select=,如果还能返回数据,就是暴露。重点查 profiles、users、orders、payments、tickets 和 Storage bucket;发现暴露就开 RLS、写按用户过滤的策略、把 service_role 移到服务端。

问题 4:Lovable 说配置责任在创建者,这个责任到底该由谁承担?

回答 4:法律上要分数据控制者 / 处理者,平台上很难一刀切;产品上双方都有责任。Lovable 应该默认开 RLS、发布前扫描、对高危配置阻断;创建者必须在上线前做安全配置。把 “无代码” 当成 “无责任”,才是这次 Lovable 数据暴露事件里最危险的误解。

【参考资料】

[2026-11-15](Lovable Leak Exposes Passports and 200K User Messages)Tech Bytes

[2026-11-14](Lovable AI platform lets thousands of apps expose passport data and private messages)Grafy News

[2026-11-14](Lovable Study: 30% of Checked Apps Left Email Records Open)FourWeekMBA

[2026-11-14](Lovable-Apps legen sensible Daten offen)Trending Topics

[2026-11-13](Lovable Data Leak 2026: 24,664 AI Apps Exposed 80,000+ User Records via Supabase)DEV Community

[2026-11-09](Your Lovable app shows everyone's data. Here's the 10-minute Supabase RLS fix)DEV Community

[2026-11-05](Vibe-coded app data exposure — Lovable, Bolt, Replit, Base44 pattern issues)Vibe Coding Security

[2026-11-04](Apps built on Lovable AI expose passport details and 200,000 chat messages)Cybernews

[2026-11-04](Built With a Sentence, Readable by Anyone: Crissy Field Finds Passports, Payments and 200000 Chats Open in Lovable Apps)al-ice.ai

[2026-05-11](38 万应用暴露、2000+ 应用泄密,AI 编程把 “内网” 变公网)36 氪

免责声明

本文基于 Crissy Field/Handelsblatt 报告及 Cybernews、Grafy、FourWeekMBA、DEV Community、36 氪等公开报道整理。报告明确说明:30% 不是确认泄漏率,Common Crawl 样本不代表全部 Lovable 应用,且未确认数据被滥用;文中已区分 “平台被攻破” 与 “客户配置错误”。RLS 修复建议为通用安全实践,不构成法律意见;如涉及欧盟 / 加州用户或个人数据泄露,请按 GDPR/CCPA 及当地法规评估通知、整改与罚则。

今日大家都在搜的词: