FixVibe
Covered by FixVibehigh

Firebase turvareeglid: volitamata andmetega kokkupuute vältimine

Firebase turvareeglid on Firestore'i ja pilvesalvestust kasutavate serverita rakenduste peamine kaitse. Kui need reeglid on liiga lubavad, näiteks lubavad tootmises globaalset lugemis- või kirjutamisjuurdepääsu, võivad ründajad tundlike andmete varastamiseks või kustutamiseks kavandatud rakendusloogikast mööda minna. See uuring uurib levinumaid väärkonfiguratsioone, „testrežiimi” vaikeseadete riske ja identiteedipõhist juurdepääsukontrolli rakendamist.

CWE-284CWE-863

Turvareeglid Firebase pakuvad üksikasjalikku serveri poolt jõustatavat mehhanismi andmete kaitsmiseks Firestore'is, reaalajas andmebaasis ja pilvmälustus [S1]. Kuna rakendused Firebase suhtlevad sageli nende pilveteenustega otse kliendi poolelt, on need reeglid ainus takistus, mis takistab volitamata juurdepääsu taustaandmetele [S1].

Lubavate reeglite mõju

Valesti konfigureeritud reeglid võivad põhjustada märkimisväärset andmete kokkupuudet [S2]. Kui reeglid on seatud liiga lubavateks – näiteks kasutades globaalset juurdepääsu lubavaid testrežiimi vaikesätteid –, saavad kõik projekti ID-d tundvad kasutajad lugeda, muuta või kustutada kogu andmebaasi sisu [S2]. See jätab kõrvale kõik kliendipoolsed turvameetmed ja võib põhjustada tundliku kasutajateabe kadumise või teenuse täieliku katkemise [S2].

Algpõhjus: ebapiisav autoriseerimisloogika

Nende haavatavuste algpõhjus on tavaliselt suutmatus rakendada konkreetseid tingimusi, mis piiravad juurdepääsu kasutaja identiteedi või ressursiatribuutide [S3] alusel. Arendajad jätavad sageli aktiivseks vaikekonfiguratsioonid tootmiskeskkondades, mis ei kinnita objekti request.auth [S3]. Ilma request.auth hindamata ei suuda süsteem eristada seaduslikku autentitud kasutajat ja anonüümset taotlejat [S3].

Tehniline heastamine

Firebase keskkonna turvamine eeldab üleminekut avatud juurdepääsult vähima privileegiga mudelile.

  • Autentimise jõustamine: veenduge, et kõik tundlikud teed nõuavad kehtivat kasutajaseanssi, kontrollides, kas objekt request.auth pole null [S3].
  • Rakendage identiteedipõhine juurdepääs: seadistage reeglid, mis võrdlevad kasutaja UID-d (request.auth.uid) dokumendis oleva väljaga või dokumendi ID-ga, et tagada kasutajatele juurdepääs ainult oma andmetele [S3].
  • Granulaarne loa ulatus: vältige kogude puhul globaalseid metamärke. Selle asemel määrake iga kogu ja alamkogu jaoks konkreetsed reeglid, et minimeerida võimalikku ründepinda [S2].
  • Valideerimine emulaatorikomplekti kaudu: kasutage turbereeglite kohapealseks testimiseks Firebase emulaatorikomplekti. See võimaldab enne reaalajas keskkonda juurutamist [S2] juurdepääsukontrolli loogikat kontrollida erinevate kasutajaisikute suhtes.

Kuidas FixVibe seda testib

FixVibe sisaldab seda nüüd kirjutuskaitstud BaaS skannimisena. baas.firebase-rules eraldab Firebase konfiguratsiooni sama päritoluga JavaScripti kimpudest, sealhulgas moodsatest initializeApp(...) kimpude kujudest, seejärel kontrollib reaalajas andmebaasi, Firestore'i ja ZXCVFIXZXCVETOKEN12-loetud salvestustaotlusega. Firestore'i puhul proovib see esmalt juurkogude loendit; kui loend on blokeeritud, uurib see ka levinud tundlike kogude nimesid, nagu users, accounts, customers, orders, users, messages, admin ja settings. See teatab ainult edukatest anonüümsetest lugemistest või loenditest ning ei kirjuta, kustuta ega salvesta kliendi dokumentide sisu.