FixVibe

// docs / baas security / firebase rules scanner

Skener Firebase pravidiel: nájdite otvorené pravidlá Firestore, Realtime Database a Storage

Firebase aplikácie zlyhávajú v bezpečnosti jedným konzistentným spôsobom: pravidlá <code>allow read, write: if true;</code> zostávajúce zo štartovacieho kódu testovacieho režimu, nikdy nenahradené pred produkciou. Nástroje na kódovanie s AI generujú tieto pravidlá doslova z dokumentačných príkladov a zriedka vývojára vyzývajú, aby ich spevnil. Tento článok ukazuje, ako skener Firebase pravidiel deteguje otvorené pravidlá naprieč Firestore, Realtime Database a Cloud Storage zvonku projektu — a ako opraviť to, čo nájde.

Ako skener nachádza otvorené Firebase pravidlá

Firebase služby vystavujú dobre známe, predvídateľné tvary URL. Skener bez prihlasovacích údajov môže sondovať každý z nich a pozorovať, či anonymné čítania uspejú. Kontrola baas.firebase-rules od FixVibe beží v troch nezávislých sondách — jedna na Firebase službu:

  • <strong>Firestore.</strong> The scanner extracts the project ID from the deployed app's bundle (it's in <code>firebase.initializeApp({ projectId: ... })</code>), then issues <code>GET https://firestore.googleapis.com/v1/projects/[project-id]/databases/(default)/documents/[collection]:listDocuments</code> against common collection names. A <code>200 OK</code> with documents in the response means <code>allow read</code> is permissive.
  • Realtime Database. Skener sonduje https://[project-id]-default-rtdb.firebaseio.com/.json. Ak je koreň anonymne čitateľný, odpoveďou je celý databázový strom ako JSON. Konzervatívnejší test pýta .json?shallow=true, ktorý vracia iba kľúče najvyššej úrovne — v oboch prípadoch ide o nález.
  • Cloud Storage. Skener pýta https://firebasestorage.googleapis.com/v0/b/[project-id].appspot.com/o. Ak odpoveď vypíše názvy súborov bez autentizácie, kôš je anonymne vypisateľný. Vypisateľné úložisko je nález aj vtedy, keď sú jednotlivé sťahovania súborov odmietnuté — útočníci vymenovávajú kôš, aby našli odhadnuteľné názvy súborov.

Ako vyzerá pasca testovacieho režimu v skutočnosti

Štartovacia dokumentácia Firebase obsahuje jeden z najviac kopírovaných pravidlových blokov na internete:

firebase
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

Firebase kedysi pridával automatické 30-dňové vypršanie na týchto pravidlách. To sa zmenilo: dnes pravidlá pretrvávajú navždy, pokiaľ ich vývojár nenahradí. AI nástroje na kódovanie — trénované na rokoch dokumentácie, ktorá obsahuje blok testovacieho režimu — ho často generujú doslova a hovoria vývojárovi „toto je vaše bezpečnostné pravidlo". Nie je.

Ďalšie varianty, ktoré sa objavujú v produkcii, ale sú rovnako voľné:

firebase
// future-date variant — equivalent to "if true"
allow read, write: if request.time < timestamp.date(2099, 1, 1);

// authenticated-user variant — any signed-in user reads and writes anything
allow read: if true;
allow write: if request.auth != null;

// any-auth variant — any signed-in user owns every document
allow read, write: if request.auth != null;
  • Variant s budúcou časovou pečiatkou: pravidlo, ktoré povoľuje všetko až do ďalekého budúceho dátumu. Nikdy efektívne neexpiruje (pozri zvýraznený blok vyššie).
  • allow read: if true; allow write: if request.auth != null; — verejné čítania, akýkoľvek overený používateľ môže zapisovať.
  • allow read, write: if request.auth != null; — akýkoľvek prihlásený používateľ môže čítať alebo zapisovať akýkoľvek dokument, vrátane dát iných používateľov.

Čo robiť, keď skener nájde otvorené pravidlo

Otvorené Firebase pravidlá sú behová núdza. Oprava má rovnaký tvar naprieč všetkými tromi službami: obmedzte každé pravidlo na request.auth.uid proti explicitnému poľu vlastníka. Každá služba má vlastnú syntax pravidiel:

Firestore

match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; }. Väzba segmentu cesty {userId} sa stáva jediným dokumentom, ktorého sa používateľ môže dotknúť.

firebase
match /users/{userId} {
  allow read, write: if request.auth != null
                     && request.auth.uid == userId;
}

Realtime Database

<code>{ "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }</code>. The <code>$uid</code> wildcard captures the path segment for comparison.

json
{
  "rules": {
    "users": {
      "$uid": {
        ".read":  "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

Cloud Storage

service firebase.storage { match /b/{bucket}/o { match /users/{userId}/{allPaths=**} { allow read, write: if request.auth.uid == userId; } } }. Konvencia: ukladajte súbory pod users/[uid]/[filename] a nechajte cestu vynucovať vlastníctvo.

firebase
service firebase.storage {
  match /b/{bucket}/o {
    match /users/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

Nasaďte pravidlá cez Firebase CLI: firebase deploy --only firestore:rules, firebase deploy --only database, firebase deploy --only storage. Overte, že nové pravidlá sú v produkcii, opätovným spustením skenu FixVibe — nález baas.firebase-rules by mal zmiznúť.

bash
firebase deploy --only firestore:rules
firebase deploy --only database
firebase deploy --only storage

Ako sa to porovnáva so vstavanými nástrojmi Firebase

Firebase Konzola vám ukazuje aktuálne pravidlá, ale neaudituje ich proti behovému správaniu. Simulátor Firebase Rules vám umožňuje testovať logiku pravidiel proti syntetickým požiadavkám — užitočné, ale lokálne. Žiadny z týchto nástrojov vám nepovie, čo vaše produkčné pravidlá v skutočnosti vracajú anonymnému útočníkovi na verejnom internete. Externý skener ako FixVibe (alebo Burp Suite s manuálnou konfiguráciou) je jediná vec, ktorá sonduje z toho istého uhla ako útočník. Vlastný App Check od Google zmierňuje zneužitie, ale nie je náhradou za správne obmedzené pravidlá.

Často kladené otázky

Číta alebo upravuje skener moje Firestore dáta?

Pasívne skeny vydávajú nanajvýš jedno anonymné čítanie na službu, aby potvrdili, či to pravidlá povoľujú. Skener zaznamenáva tvar odpovede a prítomnosť dát — nestránkuje, nevymenovuje dokumenty a nezapisuje. Sondy zápisu sú podmienené overeným vlastníctvom domény a nikdy nebežia proti neovereným cieľom.

Čo ak môj Firebase projekt používa App Check?

App Check odmieta neautentizované požiadavky s 403. Skener bez tokenu App Check uvidí 403 pri každej sonde — čo je správny výsledok. App Check nie je náhradou za správnosť pravidiel (ukradnutý token App Check plus otvorené pravidlo stále unikajú dáta), ale blokuje oportunistické externé skeny.

Dokáže skener detegovať čiastočné chybné konfigurácie pravidiel (čítanie otvorené, zápis zatvorený)?

Áno — každé pravidlo (allow read, allow write) sa sonduje samostatne. Sonda iba na čítanie, ktorá uspeje s 200 OK, nahlási nález otvoreného čítania aj keď sú zápisy odmietnuté. Tieto dva nálezy sú odlišné: exfiltrácia dát a manipulácia s dátami sú samostatné riziká.

Funguje to pre Firebase aplikácie nasadené pod vlastnou doménou?

Áno. Skener extrahuje Firebase project ID z nasadeného balíčka, nie z domény. Vlastné domény, app.web.app subdomény aj samohostované Firebase aplikácie fungujú rovnako, pokiaľ je JavaScript balíček dosiahnuteľný.

Ďalšie kroky

Spustite bezplatný sken FixVibe proti vašej produkčnej URL — kontrola baas.firebase-rules sa dodáva v každom pláne a označuje otvorené pravidlá naprieč Firestore, Realtime Database a Cloud Storage. Pre hlbší výklad konkrétne o vzore allow read, write: if true si pozrite Firebase allow read, write: if true vysvetlené. Pre zastrešujúci pohľad naprieč Supabase, Firebase, Clerk a Auth0 si prečítajte Skener chybnej konfigurácie BaaS.

// naskenujte svoj baas povrch

Nájdite otvorenú tabuľku skôr, ako to urobí niekto iný.

Zadajte produkčnú URL. FixVibe vymenuje poskytovateľov BaaS, s ktorými vaša aplikácia komunikuje, zosníma odtlačky ich verejných koncových bodov a nahlási, čo môže neoverený klient čítať alebo zapisovať. Zadarmo, bez inštalácie, bez karty.

  • Bezplatná úroveň — 3 skeny / mesiac, bez karty pri registrácii.
  • Pasívne snímanie odtlačkov BaaS — bez potreby overenia domény.
  • Supabase, Firebase, Clerk, Auth0, Appwrite a ďalšie.
  • AI návrhy opráv pri každom náleze — vložte späť do Cursor / Claude Code.
Spustiť bezplatný sken BaaS

registrácia nie je potrebná

Skener Firebase pravidiel: nájdite otvorené pravidlá Firestore, Realtime Database a Storage — Docs · FixVibe