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.authnie 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.
