Saugos taisyklėse Firebase pateikiamas smulkus, serverio vykdomas mechanizmas, skirtas apsaugoti duomenis „Firestore“, „Realtime Database“ ir „Cloud Storage“ [S1]. Kadangi Firebase programos dažnai sąveikauja su šiomis debesies paslaugomis tiesiogiai iš kliento pusės, šios taisyklės yra vienintelė kliūtis, neleidžianti neteisėtai pasiekti užpakalinių duomenų [S1].
Leidžiamųjų taisyklių poveikis
Neteisingai sukonfigūruotos taisyklės gali sukelti didelį duomenų atskleidimą [S2]. Jei taisyklės nustatytos kaip pernelyg leistinos, pavyzdžiui, naudojant numatytuosius „bandymo režimo“ nustatymus, leidžiančius visuotinę prieigą, bet kuris vartotojas, žinantis projekto ID, gali skaityti, keisti arba ištrinti visą duomenų bazės turinį [S2]. Taip apeinamos visos kliento pusės saugumo priemonės ir gali būti prarasta neskelbtina vartotojo informacija arba gali būti visiškai sutrikdyta paslauga [S2].
Pagrindinė priežastis: nepakankama autorizacijos logika
Pagrindinė šių spragų priežastis paprastai yra nesugebėjimas įgyvendinti konkrečių sąlygų, kurios riboja prieigą pagal vartotojo tapatybę arba išteklių atributus [S3]. Kūrėjai dažnai palieka aktyvias numatytąsias konfigūracijas gamybinėse aplinkose, kurios nepatvirtina objekto request.auth [S3]. Neįvertinusi request.auth, sistema negali atskirti teisėto autentifikuoto vartotojo ir anoniminio prašytojo [S3].
Techninis ištaisymas
Norint apsaugoti Firebase aplinką, reikia pereiti nuo atviros prieigos prie mažiausių privilegijų modelio.
- Įgyvendinti autentifikavimą: įsitikinkite, kad visiems jautriems keliams reikalinga tinkama vartotojo sesija, patikrindami, ar objektas
request.authnėra niekinis [S3]. - Įdiekite tapatybe pagrįstą prieigą: sukonfigūruokite taisykles, lyginančias vartotojo UID (
request.auth.uid) su laukeliu dokumente arba pačiu dokumento ID, kad vartotojai galėtų pasiekti tik savo duomenis [S3]. - Granuliarus leidimų aprėptis: kolekcijose venkite visuotinių pakaitos simbolių. Vietoj to nustatykite konkrečias kiekvieno rinkinio ir subkolekcijos taisykles, kad sumažintumėte galimą atakos paviršių [S2].
- Patvirtinimas naudojant emuliatorių: naudokite Firebase emuliatoriaus komplektą, kad patikrintumėte saugos taisykles vietoje. Tai leidžia patikrinti prieigos valdymo logiką pagal įvairius vartotojo asmenis prieš diegiant į gyvą aplinką [S2].
Kaip FixVibe tai tikrina
FixVibe dabar apima tik skaitymo BaaS nuskaitymą. baas.firebase-rules ištraukia Firebase konfigūraciją iš tos pačios kilmės „JavaScript“ paketų, įskaitant modernias initializeApp(...) paketų formas, tada patikrina duomenų bazę realiuoju laiku, „Firestore“ ir ZXCVFIXZVIBETOKEN12, nuskaitytą užklausą. „Firestore“ pirmiausia išbando šakninių kolekcijų sąrašą; kai įrašas blokuojamas, jis taip pat tiria įprastus jautrių rinkinių pavadinimus, pvz., users, accounts, customers, orders, users, messages, admin ir settings. Ji praneša tik apie sėkmingus anoniminius skaitymus arba sąrašus ir nerašo, neištrina ir nesaugo kliento dokumento turinio.
