FixVibe

// docs / baas security / firebase rules scanner

Scanner di regule Firebase: trova regule aperte di Firestore, Realtime Database, è Storage

L'app Firebase fallenu a sicurezza in un modu cunsistente: <code>allow read, write: if true;</code> regule lasciate da u quickstart di test-mode, mai rimpiazzate prima di a produzzione. L'attrezzi di codifica IA generanu sti regule littaralmente da l'esempii di documentazione è raramente sollecitanu u sviluppatore à indurelle. St'articulu mostra cumu un scanner di regule Firebase rileva regule aperte trà Firestore, Realtime Database, è Cloud Storage da fora di u prughjettu — è cumu curreghje ciò ch'ellu trova.

Cumu u scanner trova regule Firebase aperte

I servizii Firebase espongenu forme d'URL ben cunnisciute è prevedibili. Un scanner senza credenziali pò sundà ognuna è osservà s'è e letture anonime riescenu. U check baas.firebase-rules di FixVibe gira in trè sondaghji indipendenti — unu per serviziu Firebase:

  • <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. U scanner sonda https://[project-id]-default-rtdb.firebaseio.com/.json. S'è a radica hè leghjibile anonimamente, a risposta hè l'arburu sanu di a basa di dati cum'è JSON. Una pruva più cunservativa interrogheghja .json?shallow=true, chì torna solu e chjavi di livellu sopra — un risultatu in ogni casu.
  • Cloud Storage. U scanner interrogheghja https://firebasestorage.googleapis.com/v0/b/[project-id].appspot.com/o. S'è a risposta lista nomi di schedariu senza autenticazione, u bucket hè listabile anonimu. Storage listabile hè un risultatu ancu quandu i scaricamenti individuali di schedariu sò ricusati — l'attaccanti enumeranu u bucket per truvà nomi di schedariu indovinevuli.

Cumu apparisce veramente u footgun di test-mode

A documentazione di quickstart di Firebase include unu di i più cupiati blocchi di regule in internet:

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

Firebase aghjunghjia automaticamente una scadenza di 30 ghjorni nantu à sti regule. Quessa hè cambiata: oghje e regule perseveranu per sempre salvu chì u sviluppatore i rimpiazza. L'attrezzi di codifica IA — addestrati nantu à anni di documentazione chì include u bloccu di test-mode — spessu emettenu lu littaralmente è dicenu à u sviluppatore "questa hè a to regula di sicurezza." Ùn hè micca.

Altre varianti chì appariscenu in produzzione ma sò ugualmente permissive:

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;
  • Una variante di timestamp futuru: una regula chì permette tuttu finu à una data luntana in u futuru. Mai effettivamente scade (vedi u bloccu evidenziatu sopra).
  • allow read: if true; allow write: if request.auth != null; — letture publiche, qualunque utente autenticatu pò scrive.
  • allow read, write: if request.auth != null; — qualunque utente firmatu pò leghje o scrive qualunque documentu, cumpresi i dati d'altri utenti.

Ciò chì fà quandu u scanner trova una regula aperta

Regule Firebase aperte sò una emergenza in runtime. A currezzione hè di listessa forma trà tutti i trè servizii: limita ogni regula à request.auth.uid contru à un campu di patrone esplicitu. Ogni serviziu hà a so propria sintassi di regula:

Firestore

match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; }. U ligame di segmentu di percorsu {userId} diventa l'unicu documentu chì l'utente pò toccà.

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; } } }. Cunvenzione: tene i schedarii sottu à users/[uid]/[filename] è lascia chì u percorsu imponga a pruprietà.

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

Spiega e regule via u CLI di Firebase: firebase deploy --only firestore:rules, firebase deploy --only database, firebase deploy --only storage. Verifica chì e nove regule sò in produzzione rilampendu a scansione FixVibe — u risultatu baas.firebase-rules deve sparisce.

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

Cumu si paragona à l'attrezzi integrati di Firebase

A Cunsola Firebase ti mostra e regule currenti ma ùn auditeghja contru à u cumpurtamentu runtime. U simulatore di regule Firebase ti lascia pruvà a logica di regula contru à richieste sintetiche — utile ma lucale. Nisun di i dui attrezzi ti dice ciò chì e to regule di produzzione veramente tornanu à un attaccante anonimu in l'internet publicu. Un scanner esternu cum'è FixVibe (o Burp Suite cù cunfigurazione manuale) hè l'unica cosa chì sonda da listessu angulu chì un attaccante u faria. U propiu App Check di Google mitigheghja l'abusu ma ùn sustituisce regule currettamente limitate.

Dumande frequenti

U scanner leghje o modifica i mio dati Firestore?

E scansioni passive emettenu al massimu una lettura anonima per serviziu per cunfirmà s'è e regule a permettenu. U scanner registra a forma di a risposta è a presenza di dati — ùn pagina, ùn enumera documenti, è ùn scrive. I sondaghji di scrittura sò gattati daretu à verifica di pruprietà di duminiu è ùn parteranu mai contru à miri micca verificati.

Ciò chì succede s'è u mio prughjettu Firebase usa App Check?

App Check ricusa e richieste micca autenticate cù un 403. Un scanner senza un token App Check vede 403 in ogni sondaghju — chì hè u risultatu currettu. App Check ùn hè micca un sustitutu per a currittezza di e regule (un token App Check rubatu più una regula aperta perdenu sempre dati), ma blocca e scansioni esterne uppurtunistiche.

U scanner pò rileve sbagli di regule parziali (lettura aperta, scrittura chjusa)?

Iè — ogni regula (allow read, allow write) hè sundata separatamente. Un sondaghju di solu lettura chì riesce cù un 200 OK riporta un risultatu di lettura aperta ancu s'è e scritture sò ricusate. I dui risultati sò distinti: l'esfiltrazione di dati è a manipulazione di dati sò risichi separati.

Funziuneghja per l'app Firebase spiegate sottu à un duminiu persunalizatu?

Iè. U scanner estrae l'ID di u prughjettu Firebase da u bundle spiegatu, micca da u duminiu. Duminii persunalizati, subdomini app.web.app, è app Firebase self-hosted funziuneghjanu listessu modu finu chì u bundle JavaScript hè ghjuntu.

Prussimi passi

Lampa una scansione FixVibe gratisa contru à u to URL di produzzione — u check baas.firebase-rules hè in ogni pianu è sgnala regule aperte trà Firestore, Realtime Database, è Cloud Storage. Per una spiegazione più prufonda di u pattern allow read, write: if true in particulare, vedi Firebase allow read, write: if true spiegatu. Per a vista d'imbrelli trà Supabase, Firebase, Clerk, è Auth0, leghji Scanner di sbagli di cunfigurazione BaaS.

// scansiona a to superficia baas

Trova a tabella aperta prima chì qualcunu altru a faci.

Inserisci un URL di produzzione. FixVibe enumera i fornitori BaaS cù chì parla a to app, identifica i so endpoint pubblichi è riporta ciò chì un cliente micca autenticatu pò leghje o scrive. Gratisi, senza installazione, senza carta.

  • Pianu gratisi — 3 scansioni / mese, senza carta d'iscrizzione.
  • Fingerprinting BaaS passivu — nessuna verifica di duminiu richiesta.
  • Supabase, Firebase, Clerk, Auth0, Appwrite, è altri.
  • Suggerimenti di currezzione IA nantu à ogni risultatu — incollali in Cursor / Claude Code.
Lampa una scansione BaaS gratisa

nisuna iscrizzione richiesta

Scanner di regule Firebase: trova regule aperte di Firestore, Realtime Database, è Storage — Docs · FixVibe