FixVibe

// docs / baas security / firebase rules scanner

Firebase arauen eskanerra: aurkitu ireki dauden Firestore, Realtime Database eta Storage arauak

Firebase aplikazioek segurtasunaren huts egitea modu koherentean egiten dute: <code>allow read, write: if true;</code> test-mode quickstart-eko hondar-arauak, inoiz ez ekoizpenerako ordeztuak. IA kodetze-tresnek arau hauek dokumentazio-adibideetatik literalki sortzen dituzte eta nekez gonbidatzen dute garatzailea horiek gogortzera. Artikulu honek erakusten du Firebase arauen eskaner batek nola detektatzen dituen arau irekiak Firestore, Realtime Database eta Cloud Storage-en proiektutik kanpo — eta aurkitzen duena nola konpondu.

Nola aurkitzen dituen eskanerrak Firebase arau irekiak

Firebase zerbitzuek ezagunak eta aurreikus daitezkeen URL formak agerian uzten dituzte. Kredentzialik gabeko eskaner batek bakoitza miatu dezake eta irakurketa anonimoak ondo egiten diren ikusi. FixVibe baas.firebase-rules egiaztapena hiru froga independentetan exekutatzen da — Firebase zerbitzu bakoitzeko bat:

  • <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. Eskanerrak https://[project-id]-default-rtdb.firebaseio.com/.json miatzen du. Erroa anonimoki irakurgarria bada, erantzuna datu-base-zuhaitz osoa da JSON gisa. Froga kontserbadoreago batek .json?shallow=true kontsultatzen du, eta horrek goi-mailako gakoak baino ez ditu itzultzen — aurkikuntza bat edozein moduz.
  • Cloud Storage. Eskanerrak https://firebasestorage.googleapis.com/v0/b/[project-id].appspot.com/o kontsultatzen du. Erantzunak fitxategi-izenak autentikaziorik gabe zerrendatzen baditu, ontzia anon-zerrendagarria da. Zerrendagarria den biltegiratzea aurkikuntza bat da, fitxategi indibidualen deskargak ukatuta egonik ere — erasotzaileek ontzia zenbatzen dute asmagarriak diren fitxategi-izenak aurkitzeko.

Test-mode hutsegitea zer itxura duen benetan

Firebase quickstart dokumentazioak interneteko kopiatuena diren arau-blokeetako bat barne hartzen du:

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

Firebase-k arau hauei 30 eguneko iraungitze automatikoa gehitzen zien. Hori aldatu zen: gaur arauak betikoz irauten dute garatzaileak ordezten ez dituen bitartean. IA kodetze-tresnek — urteetako dokumentazio horretan test-mode blokea barne hartzen duten testu-zalduetan trebatuta — maiz hori literalki igortzen dute eta garatzaileari esaten diote "hori da zure segurtasun-araua". Ez da.

Ekoizpenean agertzen diren beste aldaerak baina berdin permisiboak direnak:

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;
  • Etorkizuneko data-zigiluaren aldaera: etorkizun urruneko data batera arte dena baimentzen duen araua. Eraginkortasunez inoiz ez du iraungitzen (ikus goian nabarmendutako blokea).
  • allow read: if true; allow write: if request.auth != null; — irakurketa publikoak, edozein autentikatutako erabiltzailek idatzi dezake.
  • allow read, write: if request.auth != null; — saio hasi duen edozein erabiltzailek edozein dokumentu irakur edo idatz dezake, beste erabiltzaileen datuak barne.

Eskanerrak arau ireki bat aurkitzen duenean zer egin

Firebase arau irekiak exekuzio-larrialdia dira. Konponketa hiru zerbitzuetan zehar berdina da: arau bakoitza request.auth.uid-ra mugatu jabe-eremu esplizitu baten aurka. Zerbitzu bakoitzak bere arau-sintaxia du:

Firestore

match /users/{userId} { allow read, write: if request.auth != null && request.auth.uid == userId; }. Bide-segmentuaren lotura {userId} erabiltzaileak uki dezakeen dokumentu bakarra bihurtzen da.

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; } } }. Konbentzioa: fitxategiak users/[uid]/[filename] azpian gorde eta utzi bideari jabetza betearaztea.

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

Zabaldu arauak Firebase CLI bidez: firebase deploy --only firestore:rules, firebase deploy --only database, firebase deploy --only storage. Egiaztatu arau berriak ekoizpenean daudela FixVibe eskaneatzea berriz exekutatuz — baas.firebase-rules aurkikuntzak garbitu beharko luke.

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

Hau Firebase-ko barne-tresnekin nola alderatzen den

Firebase Console-k uneko arauak erakusten dizkizu baina ez ditu auditatzen exekuzio-jokabidearen aurka. Firebase Rules simulagailuak arau-logikoa proba dezakezu eskaera sintetikoen aurka — erabilgarria baina lokala. Tresna horietako bat ere ez dizu esaten zure ekoizpen-arauek zer benetan itzultzen dieten interneteko publiko anonimo eraso egileari. FixVibe bezalako kanpoko eskaner bat (edo eskuzko konfigurazioarekin Burp Suite) erasotzaile batek hartuko lukeen angelu beretik miatzen duen gauza bakarra da. Google-ren App Check abusua arintzen du baina ez du ordezten ondo mugatutako arauak.

Maiz egiten diren galderak

Eskanerrak nire Firestore datuak irakurri edo aldatzen ditu?

Eskaneatze pasiboek zerbitzu bakoitzeko gehienez ere irakurketa anonimo bat egiten dute arauek hori baimentzen duten ala ez baieztatzeko. Eskanerrak erantzunaren forma eta datuen presentzia gordetzen ditu — ez du orrikatzen, ez ditu dokumentuak zenbatzen eta ez du idazten. Idazketa frogak egiaztatutako domeinu-jabetzaren atzean daude eta ez dira inoiz egiaztatu gabeko helburuen aurka exekutatzen.

Zer gertatzen da nire Firebase proiektuak App Check erabiltzen badu?

App Check-ek autentikatu gabeko eskaerak 403-arekin baztertzen ditu. App Check tokenik gabeko eskaner batek 403 ikusiko du froga bakoitzean — emaitza zuzena dena. App Check ez da arauen zuzentasunaren ordezkoa (lapurtutako App Check tokenak gehi arau ireki batek datuak iragazten ditu oraindik), baina aldi berean kanpoko eskaneatze oportunistikoak blokeatzen ditu.

Eskanerrak partzialki gaizki konfiguratutako arauak (irakurri irekita, idatzi itxita) detektatu ditzake?

Bai — arau bakoitza (allow read, allow write) bereiz miatzen da. 200 OK-arekin arrakasta duen irakurketa-soileko froga batek irakurketa-irekia aurkikuntza bat jakinarazten du, idazketak ukatuta egonik ere. Bi aurkikuntzak desberdinak dira: datu-exfiltrazioa eta datu-manipulazioa arrisku bereiziak dira.

Funtzionatzen al du Firebase aplikazioek domeinu pertsonalizatuen azpian zabaldutakoekin?

Bai. Eskanerrak Firebase proiektuaren IDa ateratzen du zabaldutako bundle-tik, ez domeinutik. Domeinu pertsonalizatuek, app.web.app azpidomeinuek eta auto-ostatatutako Firebase aplikazioek modu berean funtzionatzen dute JavaScript bundle-a iristerraza den artean.

Hurrengo urratsak

Egin FixVibe eskaneatze doako bat zure ekoizpen-URLaren aurka — baas.firebase-rules egiaztapena plan guztietan bidaltzen da eta arau irekiak markatzen ditu Firestore, Realtime Database eta Cloud Storage-en zehar. allow read, write: if true ereduari buruzko azalpen sakonagoa zehazki ikusteko, ikus Firebase allow read, write: if true azaldua. Supabase, Firebase, Clerk eta Auth0-ren ikuspegi orokorra ikusteko, irakurri BaaS konfigurazio okerren eskanerra.

// eskaneatu zure baas azalera

Aurkitu taula irekia beste norbaitek aurkitu baino lehen.

Sartu ekoizpen-URL bat. FixVibek zure aplikazioak hitz egiten dituen BaaS hornitzaileak zerrendatzen ditu, beren amaiera-puntu publikoen hatz-marka egiten du eta autentikatu gabeko bezero batek zer irakurri edo idatzi dezakeen jakinarazten du. Doan, instalaziorik gabe, txartelik gabe.

  • Doako maila — 3 eskaneatze hilean, izen-eman txartelik gabe.
  • BaaS hatz-marka pasiboa — ez da behar domeinu-egiaztapenik.
  • Supabase, Firebase, Clerk, Auth0, Appwrite eta gehiago.
  • IA konponketa-gonbitak aurkikuntza bakoitzean — itsatsi berriz Cursor / Claude Code-en.
Egin doako BaaS eskaneatze bat

ez da izen-ematerik behar

Firebase arauen eskanerra: aurkitu ireki dauden Firestore, Realtime Database eta Storage arauak — Docs · FixVibe