FixVibe
Covered by FixVibehigh

Firebase drošības noteikumi: nesankcionētas datu iedarbības novēršana

Firebase drošības noteikumi ir primārā aizsardzība bezserveru lietojumprogrammām, kas izmanto Firestore un Cloud Storage. Ja šie noteikumi ir pārāk pieļaujami, piemēram, atļaujot globālu lasīšanas vai rakstīšanas piekļuvi ražošanā, uzbrucēji var apiet paredzēto lietojumprogrammu loģiku, lai nozagtu vai dzēstu sensitīvus datus. Šis pētījums pēta izplatītas nepareizas konfigurācijas, “testa režīma” noklusējuma riskus un to, kā ieviest uz identitāti balstītu piekļuves kontroli.

CWE-284CWE-863

Firebase drošības noteikumi nodrošina detalizētu, servera īstenotu mehānismu, lai aizsargātu datus pakalpojumā Firestore, Realtime Database un Cloud Storage [S1]. Tā kā Firebase lietojumprogrammas bieži mijiedarbojas ar šiem mākoņpakalpojumiem tieši no klienta puses, šie noteikumi ir vienīgais šķērslis, kas novērš nesankcionētu piekļuvi aizmugures datiem [S1].

Atļaujošo noteikumu ietekme

Nepareizi konfigurēti noteikumi var izraisīt ievērojamu datu ekspozīciju [S2]. Ja kārtulas ir iestatītas kā pārāk pieļaujamas, piemēram, izmantojot noklusējuma testa režīma iestatījumus, kas nodrošina globālu piekļuvi, jebkurš lietotājs, kuram ir zināšanas par projekta ID, var lasīt, modificēt vai dzēst visu datu bāzes saturu [S2]. Tas apiet visus klienta puses drošības pasākumus un var izraisīt sensitīvas lietotāja informācijas zudumu vai pilnīgu pakalpojuma pārtraukumu [S2].

Galvenais iemesls: Nepietiekama autorizācijas loģika

Šo ievainojamību galvenais iemesls parasti ir nespēja ieviest īpašus nosacījumus, kas ierobežo piekļuvi, pamatojoties uz lietotāja identitāti vai resursu atribūtiem [S3]. Izstrādātāji bieži atstāj aktīvas noklusējuma konfigurācijas ražošanas vidēs, kas neapstiprina request.auth objektu [S3]. Neizvērtējot request.auth, sistēma nevar atšķirt likumīgu autentificētu lietotāju un anonīmu pieprasītāju [S3].

Tehniskā sanācija

Lai nodrošinātu Firebase vidi, ir jāpāriet no atvērtas piekļuves uz modeli ar vismazākajām privilēģijām.

  • Ieviest autentifikāciju: nodrošiniet, lai visiem sensitīviem ceļiem būtu nepieciešama derīga lietotāja sesija, pārbaudot, vai objekts request.auth nav nulles [S3].
  • Ieviesiet uz identitāti balstītu piekļuvi: konfigurējiet kārtulas, kas salīdzina lietotāja UID (request.auth.uid) ar lauku dokumentā vai pašu dokumenta ID, lai nodrošinātu, ka lietotāji var piekļūt tikai saviem datiem [S3].
  • Granulārās atļaujas tvērums: izvairieties no globālām aizstājējzīmēm kolekcijās. Tā vietā definējiet īpašus noteikumus katrai kolekcijai un apakškolekcijai, lai samazinātu iespējamo uzbrukuma virsmu [S2].
  • Validācija, izmantojot emulatora komplektu: izmantojiet Firebase emulatora komplektu, lai pārbaudītu drošības noteikumus lokāli. Tas ļauj pārbaudīt piekļuves kontroles loģiku pret dažādām lietotāju personām pirms izvietošanas dzīvajā vidē [S2].

Kā FixVibe to pārbauda

FixVibe tagad tas ietver tikai lasāmu BaaS skenēšanu. baas.firebase-rules izvelk Firebase konfigurāciju no vienas izcelsmes JavaScript komplektiem, tostarp modernām initializeApp(...) komplektu formām, pēc tam pārbauda reāllaika datu bāzi, Firestore un ZXCVFIXZVIBETOKEN12 ar nelasītiem unXCOKEN12 pieprasījumiem. Firestore vispirms izmēģina saknes kolekcijas sarakstu; kad saraksts ir bloķēts, tas arī pārbauda tādus izplatītus sensitīvus kolekciju nosaukumus kā users, accounts, customers, orders, ZXCVFIXZVIBETOK, messages, admin un settings. Tas ziņo tikai par veiksmīgiem anonīmiem lasījumiem vai sarakstiem un neraksta, nedzēš un neuzglabā klienta dokumentu saturu.