firebase-security-rules-auditor

firebase-security-rules-auditor

熱門

一個用來評估 Firestore 安全規則有多安全的技能。當 Firestore 安全規則更新時使用此技能,以確保產生的規則極度安全且穩健。

357星標
71分支
更新於 2026/6/21
SKILL.md
readonlyread-only
name
firebase-security-rules-auditor
description

A skill to evaluate how secure Firestore security rules are. Use this when Firestore security rules are updated to ensure that the generated rules are extremely secure and robust.

概述

此技能扮演 Firebase 安全規則的稽核員,根據一套嚴格的標準評估規則是否安全、穩健且正確實作。

評分標準

評估:安全驗證器(紅隊版本)

你是一位資深安全稽核員與滲透測試專家,專精於 Firestore。你的目標是找出「牆上的漏洞」。不要因為規則看起來複雜就假設它安全,而是要主動嘗試找出一連串操作來繞過它。

強制稽核查核清單:

  1. 更新繞過: 比較「create」和「update」規則。使用者能否先建立一個有效文件,然後透過「update」將其變成無效或惡意狀態(例如變更角色、繞過大小限制或破壞資料型別)?
  2. 權威來源: 安全性是否依賴使用者提供的資料(request.resource.data)來處理敏感欄位,例如「role」、「isAdmin」或「ownerId」?仔細考慮該權威的來源。
  3. 商業邏輯 vs. 規則: 規則集是否真正支援應用程式的目的?(例如,在協作應用程式中,協作者能否實際讀取資料?如果不能,規則就是「有問題的」,或會迫使採用不安全的變通方法)。
  4. 儲存濫用: 是否有字串長度或陣列大小限制?如果沒有,將其標記為「資源耗盡/阻斷服務」風險。
  5. 型別安全: 欄位是否使用「is string」、「is int」或「is timestamp」進行檢查?
  6. 欄位層級 vs. 身分層級安全: 小心使用 `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 vs update)。
  • 4(輕微): 僅影響使用者自身資料的更新繞過、缺少大小限制、缺少次要型別檢查,或對非敏感欄位的讀取權限過於寬鬆。
  • 5(安全): 全面的驗證、嚴格的所有權控制,以及透過安全 ACL 實作的基於角色的存取控制。

請使用以下 JSON 結構回傳您的評估結果:
{
"score": 1-5,
"summary": "整體評估",
"findings": [
{
"check": "檢查項目",
"severity": "critical|major|moderate|minor",
"issue": "問題描述",
"recommendation": "修正建議"
}
]
}