FixVibe
Covered by FixVibehigh

Firebase Sigurnosna pravila: Sprječavanje neovlaštenog izlaganja podataka

Firebase Sigurnosna pravila primarna su obrana za aplikacije bez poslužitelja koje koriste Firestore i Cloud Storage. Kada su ta pravila previše popustljiva, poput dopuštanja globalnog pristupa za čitanje ili pisanje u produkciji, napadači mogu zaobići predviđenu logiku aplikacije kako bi ukrali ili izbrisali osjetljive podatke. Ovo istraživanje istražuje uobičajene pogrešne konfiguracije, rizike zadanih postavki 'testnog načina rada' i kako implementirati kontrolu pristupa temeljenu na identitetu.

CWE-284CWE-863

Sigurnosna pravila Firebase pružaju granularni mehanizam koji provodi poslužitelj za zaštitu podataka u Firestoreu, bazi podataka u stvarnom vremenu i pohrani u oblaku [S1]. Budući da aplikacije Firebase često komuniciraju s ovim uslugama u oblaku izravno sa strane klijenta, ova pravila predstavljaju jedinu prepreku koja sprječava neovlašteni pristup pozadinskim podacima [S1].

Utjecaj dopuštenih pravila

Pogrešno konfigurirana pravila mogu dovesti do značajnog izlaganja podataka [S2]. Ako su pravila postavljena kao pretjerano dopuštena—na primjer, koristeći zadane postavke 'testnog načina rada' koje dopuštaju globalni pristup—svaki korisnik sa znanjem ID-a projekta može čitati, mijenjati ili brisati cijeli sadržaj baze podataka [S2]. Time se zaobilaze sve sigurnosne mjere na strani klijenta i može rezultirati gubitkom osjetljivih korisničkih podataka ili potpunim prekidom usluge [S2].

Glavni uzrok: Nedovoljna logika autorizacije

Glavni uzrok ovih ranjivosti obično je neuspjeh u implementaciji specifičnih uvjeta koji ograničavaju pristup na temelju korisničkog identiteta ili atributa resursa [S3]. Programeri često ostavljaju aktivne zadane konfiguracije u proizvodnim okruženjima koja ne potvrđuju request.auth objekt [S3]. Bez evaluacije request.auth, sustav ne može razlikovati legitimnog autentificiranog korisnika i anonimnog podnositelja zahtjeva [S3].

Tehnička sanacija

Osiguranje Firebase okruženja zahtijeva prelazak s otvorenog pristupa na model principal-of-least-privilege.

  • Nametni autentifikaciju: Osigurajte da svi osjetljivi putovi zahtijevaju važeću korisničku sesiju provjerom nije li objekt request.auth null [S3].
  • Implementirajte pristup temeljen na identitetu: Konfigurirajte pravila koja uspoređuju korisnički UID (request.auth.uid) s poljem unutar dokumenta ili sam ID dokumenta kako biste osigurali da korisnici mogu pristupiti samo svojim podacima [S3].
  • Granularni opseg dopuštenja: Izbjegavajte globalne zamjenske znakove za zbirke. Umjesto toga, definirajte posebna pravila za svaku zbirku i pod-kolekciju kako biste smanjili potencijalnu površinu napada [S2].
  • Validacija putem Emulator Suite-a: Koristite Firebase Emulator Suite za lokalno testiranje sigurnosnih pravila. To omogućuje provjeru logike kontrole pristupa u odnosu na različite korisničke osobe prije postavljanja u živo okruženje [S2].

Kako FixVibe to testira

FixVibe sada uključuje ovo kao BaaS skeniranje samo za čitanje. baas.firebase-rules izdvaja konfiguraciju Firebase iz JavaScript paketa istog porijekla, uključujući moderne oblike paketa initializeApp(...), zatim provjerava bazu podataka u stvarnom vremenu, Firestore i Firebase pohranu s neautentificiranim zahtjevima samo za čitanje. Za Firestore, prvo pokušava ispisati root zbirku; kada je popis blokiran, također ispituje uobičajena osjetljiva imena kolekcija kao što su users, accounts, customers, orders, payments, messages, admin i settings. Izvještava samo o uspješnim anonimnim čitanjima ili popisima i ne piše, briše niti pohranjuje sadržaje korisničkih dokumenata.