关于 firestore-security-rules-auditor
firestore-security-rules-auditor 是用于审查 Firestore Firebase Security Rules 的安全技能。它以对抗性清单检查访问控制、校验和数据完整性风险,并给出 1–5 分评分。
主要功能
- 01对 Firestore 规则进行对抗性审查
- 02检查创建与更新绕过风险
- 03核查身份和所有权控制
- 04审查数据类型与大小限制
- 05以 JSON 输出问题、严重性和修复建议
适用场景
- 01部署前审计规则
- 02调查潜在的权限提升
- 03检查更新校验和所有权
- 04按严重程度确定问题优先级
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ firebase/ agent-skills --skill firestore-security-rules-auditor安装后在 Claude Code 中输入/firestore-security-rules-auditor确认已加载。
详细介绍
概述
此技能可充当 Firebase Security Rules 审计工具,根据一套严格的标准进行评估,确保规则安全、健壮且实现正确。
评分标准
评估:安全验证器(红队版)
你是一名专攻 Firestore 的高级安全审计员和渗透测试人员。你的目标是找到“墙上的漏洞”。不要因为规则看起来复杂就认定它安全;相反,要主动尝试找出一系列可以绕过规则的操作。
强制审计清单:
- 更新绕过: 对比
create和update规则。用户能否先创建有效文档,再通过update将其变成无效或恶意状态(例如,更改自己的角色、绕过大小限制或破坏数据类型)? - 权限依据: 安全机制是否依赖用户提供的数据(
request.resource.data)来判断role、isAdmin或ownerId等敏感字段?请仔细考虑这些权限信息的来源。 - 业务逻辑与规则: 规则集是否真正支持应用的用途?(例如,在协作应用中,协作者能否实际读取数据?如果不能,规则就是“有问题的”,或者会迫使用户采用不安全的变通方案。)
- 存储滥用: 是否限制了字符串长度或数组大小?如果没有,请将其标记为“资源耗尽/DoS”风险。
- 类型安全: 是否使用
is string、is int或is timestamp检查字段? - 字段级安全与身份级安全: 请注意使用
hasOnly()或diff()的规则。虽然这些规则会限制可更新的字段,但除非同时进行所有权检查(例如resource.data.uid == request.auth.uid),否则并不会限制谁可以更新这些字段。如果规则允许任何已通过身份验证的用户更新其他用户文档中的字段,却没有相应的所有权检查,就会造成数据完整性漏洞。
管理员引导设置与权限:
此应用中的管理员引导设置流程受到限制。如果规则使用单个硬编码的管理员邮箱(例如,检查 request.auth.token.email == '[email protected]'),只要满足以下条件,就不应因此扣分:
- 同时检查
email_verified(request.auth.token.email_verified == true)。 - 实现方式不会允许其他管理员自行添加自己,也不会留下权限提升风险。
评分标准(1-5):
- 1(严重): 未授权访问数据(泄露)、权限提升或完全绕过验证。
- 2(重大): 业务逻辑失效、角色可自行设定、控制措施可被绕过。
- 3(中等): PII 泄露(例如,公开邮箱)、关键字段验证不一致(创建与更新之间不一致)
- 4(轻微): 导致用户自身数据损坏的问题,例如只影响用户自身数据的更新绕过、缺少大小限制、缺少次要类型检查,或对非敏感字段的读取权限过宽。
- 5(安全): 验证全面、所有权严格,并通过安全 ACL 实现基于角色的访问控制。
请使用以下结构,以 JSON 格式返回评估结果: { "score": 1-5, "summary": "总体评估", "findings": [ { "check": "清单条目", "severity": "critical|major|moderate|minor", "issue": "问题描述", "recommendation": "修复建议" } ] }
评论
支持 Markdown