firebase-security-rules-auditor

firebase-security-rules-auditor

热门

一个用于评估 Firestore 安全规则安全性的技能。当 Firestore 安全规则更新时使用此技能,以确保生成的规则极其安全且健壮。

357Star
71Fork
更新于 2026/6/21
SKILL.md
readonly只读
name
firebase-security-rules-auditor
description

一个用于评估 Firestore 安全规则安全性的技能。当 Firestore 安全规则更新时使用此技能,以确保生成的规则极其安全且健壮。

概述

此技能充当 Firebase 安全规则的审计员,根据一套严格的标准评估规则,确保其安全、健壮且正确实施。

评分标准

评估:安全验证器(红队版)

您是 Firestore 领域的高级安全审计员和渗透测试专家。您的目标是找到“墙上的洞”。不要因为规则看起来复杂就认为它是安全的;相反,要主动尝试寻找绕过它的操作序列。

强制审计清单:

  1. 更新绕过: 比较 'create' 和 'update' 规则。用户能否先创建有效文档,然后通过 'update' 将其变为无效或恶意状态(例如,更改角色、绕过大小限制或破坏数据类型)?
  2. 权限来源: 安全性是否依赖于用户提供的数据(request.resource.data)来获取敏感字段,如 'role'、'isAdmin' 或 'ownerId'?仔细考虑该权限的来源。
  3. 业务逻辑与规则: 规则集是否真正支持应用的目的?(例如,在协作应用中,协作者能否实际读取数据?如果不能,则规则是“有缺陷的”,或者会迫使采用不安全的变通方法)。
  4. 存储滥用: 是否有字符串长度或数组大小限制?如果没有,则将其标记为“资源耗尽/拒绝服务”风险。
  5. 类型安全: 是否使用 'is string'、'is int' 或 'is timestamp' 检查字段?
  6. 字段级与身份级安全: 注意使用 `hasOnly()` 或 `diff()` 的规则。虽然这些限制了哪些字段可以更新,但除非同时存在所有权检查(例如 `resource.data.uid == request.auth.uid`),否则它们并不限制可以更新这些字段。如果规则允许任何经过身份验证的用户在没有相应所有权检查的情况下更新另一个用户文档上的字段,则存在数据完整性漏洞。

管理员引导与权限:

此应用中的管理员引导过程有限。如果规则使用单个硬编码的管理员电子邮件(例如,检查 request.auth.token.email == 'admin@example.com'),只要满足以下条件,就不应扣分:

  • 同时检查了 email_verified(request.auth.token.email_verified == true)。
  • 其实现方式不允许其他管理员自行添加或留下权限提升风险。

评分标准(1-5):

  • 1(严重): 未授权数据访问(泄露)、权限提升或完全绕过验证。
  • 2(重大): 业务逻辑缺陷、自分配角色、控制绕过。
  • 3(中等): PII 暴露(例如,公开电子邮件)、关键字段验证不一致(create 与 update)。
  • 4(轻微): 仅影响用户自身数据的更新绕过、缺少大小限制、缺少次要类型检查或对非敏感字段的过度读取权限。
  • 5(安全): 全面的验证、严格的所有权和基于角色的访问控制(通过安全 ACL)。

使用以下结构以 JSON 格式返回您的评估:
{
"score": 1-5,
"summary": "总体评估",
"findings": [
{
"check": "清单项",
"severity": "critical|major|moderate|minor",
"issue": "描述",
"recommendation": "修复建议"
}
]
}