900 个站点,1.25 亿账户,1 个漏洞
Firebase 的安全模型及其陷阱
- 许多人认为 Firebase 的安全规则在概念上是合理的,但在实践中很难正确使用,尤其是 Realtime Database。
- 规则属于“设置后就忘记”:当业务逻辑变化时,新字段/集合往往会继承过于宽松的规则。
- 安全问题来自:
- 与传统后端相比,采用了新颖的基于规则的模型。
- 当许多应用使用同一平台时,很容易进行大规模扫描。
- 不安全的默认值 / “默认允许”模式,以及开发者只是为了让功能正常而直接使用
read/write true。
- 关于用户体验的批评:Firebase 大部分内容都有精致的 UI,但规则只是一个纯文本配置文件,很多较新的开发者都避而不正确地修改它。
Google 支持与组织问题
- 多条评论描述 Firebase/Google 的支持响应迟缓,而且大量外包。
- 有一种观点认为,Google 对面向开发者的产品,在以人为本、需要高技能的支持方面投入不足。
- 有些人认为这种“先机器人、后人工”的文化可能会让 Google 长期受损;另一些人则认为,监管或简单的组织惯性作用更大。
架构:前端直接访问数据库
- 许多人对前端直接写数据库感到不安,即使有规则也一样:
- 更难确保验证、内容检查以及不断变化的隐私要求。
- 与更集中式的后端相比,需要担心、容易遗忘的“表面面积”更大。
- 支持者表示,这种方式适用于简单的“仅用户数据”应用(例如笔记/同步),而成熟项目通常会把写操作迁移到 Cloud Functions 或传统服务器,同时将读取保留在客户端。
缓解措施与最佳实践
- 建议包括:
- 基于模板的“简单安全模式”和强制性的规则测试。
- 将每个集合视为具有明确的安全配置文件(公开、按用户、仅管理员),且绝不混合不同敏感级别。
- 默认拒绝的转译器,强制为新字段显式定义规则。
- 更好的审计日志,以及对隐式模式变化的通知。
- 类似 RLS 的机制(如 Postgres/Supabase 中的做法),用熟悉的语言来表达认证授权。
影响、伦理与用户安全
- 尽管多次尝试披露,许多存在漏洞的网站仍未修复;邮件经常被忽略,控制面板也很少有人查看。
- 关于是否公开受影响站点名单存在争论:这可能帮助用户,但也可能帮助攻击者。
- 更广泛的担忧是,低门槛的云工具让缺乏安全能力的组织也能收集大量 PII。
- 建议用户使用密码管理器,以及唯一或别名邮箱,以减少不可避免的数据泄露带来的损害。