FixVibe
Covered by FixVibehigh

Firebase Zasady bezpieczeństwa: zapobieganie nieautoryzowanemu ujawnieniu danych

Reguły bezpieczeństwa Firebase stanowią podstawową ochronę aplikacji bezserwerowych korzystających z Firestore i Cloud Storage. Gdy te reguły są zbyt liberalne, na przykład zezwalają na globalny dostęp do odczytu i zapisu w środowisku produkcyjnym, osoby atakujące mogą ominąć zamierzoną logikę aplikacji w celu kradzieży lub usunięcia wrażliwych danych. W tym badaniu zbadano typowe błędne konfiguracje, ryzyko związane z domyślnymi ustawieniami „trybu testowego” oraz sposoby wdrażania kontroli dostępu opartej na tożsamości.

CWE-284CWE-863

Reguły bezpieczeństwa Firebase zapewniają szczegółowy, wymuszany przez serwer mechanizm ochrony danych w Firestore, bazie danych czasu rzeczywistego i magazynie w chmurze [S1]. Ponieważ aplikacje Firebase często wchodzą w interakcję z tymi usługami w chmurze bezpośrednio ze strony klienta, reguły te stanowią jedyną barierę uniemożliwiającą nieautoryzowany dostęp do danych backendu [S1].

Wpływ reguł zezwalających

Błędnie skonfigurowane reguły mogą prowadzić do znacznego ujawnienia danych [S2]. Jeśli reguły są zbyt restrykcyjne — na przykład przy użyciu domyślnych ustawień „trybu testowego”, które umożliwiają dostęp globalny — każdy użytkownik znający identyfikator projektu może czytać, modyfikować lub usuwać całą zawartość bazy danych [S2]. Pomija to wszystkie środki bezpieczeństwa po stronie klienta i może skutkować utratą wrażliwych informacji użytkownika lub całkowitym zakłóceniem usług. [S2].

Główna przyczyna: niewystarczająca logika autoryzacji

Główną przyczyną tych luk jest zazwyczaj brak wdrożenia określonych warunków ograniczających dostęp na podstawie tożsamości użytkownika lub atrybutów zasobów [S3]. Programiści często pozostawiają aktywne konfiguracje domyślne w środowiskach produkcyjnych, które nie sprawdzają poprawności obiektu request.auth [S3]. Bez oceny request.auth system nie będzie w stanie rozróżnić uprawnionego uwierzytelnionego użytkownika od anonimowego requestera [S3].

Naprawa techniczna

Zabezpieczenie środowiska Firebase wymaga przejścia od otwartego dostępu do modelu zasady o najniższych uprawnieniach.

  • Wymuszaj uwierzytelnianie: Upewnij się, że wszystkie wrażliwe ścieżki wymagają prawidłowej sesji użytkownika, sprawdzając, czy obiekt request.auth nie ma wartości null [S3].
  • Wdrożenie dostępu opartego na tożsamości: Skonfiguruj reguły, które porównują UID użytkownika (request.auth.uid) z polem w dokumencie lub samym identyfikatorem dokumentu, aby mieć pewność, że użytkownicy będą mieli dostęp tylko do swoich własnych danych [S3].
  • Szczegółowy zakres uprawnień: Unikaj globalnych symboli wieloznacznych w kolekcjach. Zamiast tego zdefiniuj szczegółowe reguły dla każdej kolekcji i podkolekcji, aby zminimalizować potencjalną powierzchnię ataku [S2].
  • Weryfikacja poprzez pakiet emulatorów: Użyj pakietu emulatorów Firebase do lokalnego testowania reguł bezpieczeństwa. Pozwala to na weryfikację logiki kontroli dostępu pod kątem różnych osób użytkowników przed wdrożeniem w środowisku na żywo [S2].

Jak FixVibe to testuje

FixVibe uwzględnia to teraz jako skan BaaS tylko do odczytu. baas.firebase-rules wyodrębnia konfigurację Firebase z pakietów JavaScript tego samego pochodzenia, w tym nowoczesnych kształtów pakietów initializeApp(...), następnie sprawdza bazę danych Realtime, Firestore i Firebase Storage z nieuwierzytelnionymi żądaniami tylko do odczytu. W przypadku Firestore najpierw próbuje wyświetlić listę kolekcji głównych; gdy listowanie jest zablokowane, sprawdza również popularne wrażliwe nazwy kolekcji, takie jak users, accounts, customers, orders, payments, messages, admin i settings. Raportuje tylko udane anonimowe odczyty lub listy i nie zapisuje, nie usuwa ani nie przechowuje zawartości dokumentów klienta.