FixVibe
Covered by FixVibehigh

Firebase Suojaussäännöt: luvattoman tietojen altistumisen estäminen

Firebase Suojaussäännöt ovat ensisijainen suojaus palvelimettomille sovelluksille, jotka käyttävät Firestorea ja Cloud Storagea. Kun nämä säännöt ovat liian sallivia, kuten sallivat maailmanlaajuisen luku- tai kirjoitusoikeuden tuotannossa, hyökkääjät voivat ohittaa suunnitellun sovelluslogiikan varastaakseen tai poistaakseen arkaluontoisia tietoja. Tämä tutkimus tutkii yleisiä virheellisiä määrityksiä, "testitilan" oletusarvojen riskejä ja identiteettipohjaisen kulunvalvonnan toteuttamista.

CWE-284CWE-863

Firebase-suojaussäännöt tarjoavat yksityiskohtaisen, palvelimen pakottavan mekanismin Firestoren, Realtime Databasen ja Cloud Storagen [S1] tietojen suojaamiseksi. Koska Firebase-sovellukset ovat usein vuorovaikutuksessa näiden pilvipalvelujen kanssa suoraan asiakaspuolelta, nämä säännöt ovat ainoa este, joka estää luvattoman pääsyn taustatietoihin [S1].

Sallivien sääntöjen vaikutus

Väärin määritetyt säännöt voivat johtaa merkittävään tietojen altistumiseen [S2]. Jos säännöt on asetettu liian salliviksi – esimerkiksi käyttämällä oletusarvoisia "testitilan" asetuksia, jotka mahdollistavat maailmanlaajuisen käytön - kuka tahansa projektitunnuksen tunteva käyttäjä voi lukea, muokata tai poistaa koko tietokannan sisällön [S2]. Tämä ohittaa kaikki asiakaspuolen turvatoimenpiteet ja voi johtaa arkaluonteisten käyttäjätietojen menettämiseen tai palvelun täydelliseen keskeytykseen [S2].

Perussyy: Riittämätön valtuutuslogiikka

Näiden haavoittuvuuksien perimmäinen syy on tyypillisesti epäonnistuminen tiettyjen pääsyä rajoittavien ehtojen toteuttamisessa käyttäjän identiteetin tai resurssimääritteiden [S3] perusteella. Kehittäjät jättävät usein oletuskokoonpanot aktiivisiksi tuotantoympäristöissä, jotka eivät vahvista request.auth-objektia [S3]. Ilman request.auth:n arviointia järjestelmä ei voi erottaa laillista todennettua käyttäjää ja anonyymiä pyynnön esittäjää [S3].

Tekninen korjaus

Firebase-ympäristön suojaaminen edellyttää siirtymistä avoimesta pääsystä vähiten etuoikeusmalliin.

  • Pakota todennus: Varmista, että kaikki arkaluontoiset polut vaativat kelvollisen käyttäjäistunnon tarkistamalla, ettei request.auth-objekti ole tyhjä [S3].
  • Ota käyttöön identiteettiin perustuva pääsy: Määritä säännöt, jotka vertaavat käyttäjän UID:tä (request.auth.uid) asiakirjan sisällä olevaan kenttään tai itse asiakirjan tunnukseen varmistaaksesi, että käyttäjät voivat käyttää vain omia tietojaan [S3].
  • Rakeiden lupien kattavuus: Vältä kokoelmien yleisiä jokerimerkkejä. Määritä sen sijaan erityiset säännöt kullekin kokoelmalle ja alakokoelmalle mahdollisen hyökkäyspinnan minimoimiseksi [S2].
  • Validointi Emulator Suiten kautta: Käytä Firebase Emulator Suitea turvasääntöjen paikallista testaamiseen. Tämä mahdollistaa kulunvalvontalogiikan todentamisen eri käyttäjäpersoonien suhteen ennen käyttöönottoa live-ympäristössä [S2].

Kuinka FixVibe testaa sitä

FixVibe sisältää nyt tämän vain luku -muotoisena BaaS-skannauksena. baas.firebase-rules poimii Firebase-määritykset samaa alkuperää olevista JavaScript-nipuista, mukaan lukien nykyaikaiset initializeApp(...)-nippumuodot, ja tarkistaa sitten reaaliaikaisen tietokannan, Firestoren ja ZXCVFIXZXCVETOKEN12-lukemispyynnöllä. Firestoressa se yrittää ensin juurikokoelmaluetteloa; kun listaus on estetty, se tutkii myös yleisiä arkaluonteisia kokoelmanimiä, kuten users, accounts, customers, orders, ZXCVFIXVIBETOKEN, ZXCVFIXVIBETOKEN, messages, admin ja settings. Se raportoi vain onnistuneista anonyymeistä lukemista tai luetteloista, eikä se kirjoita, poista tai tallenna asiakasasiakirjan sisältöä.