FixVibe
Covered by FixVibehigh

Firebase Sicherheitsregeln: Verhindern der unbefugten Offenlegung von Daten

Firebase Sicherheitsregeln sind der primäre Schutz für serverlose Anwendungen, die Firestore und Cloud Storage verwenden. Wenn diese Regeln zu freizügig sind, beispielsweise wenn in der Produktion globaler Lese- oder Schreibzugriff zugelassen wird, können Angreifer die vorgesehene Anwendungslogik umgehen, um vertrauliche Daten zu stehlen oder zu löschen. Diese Untersuchung untersucht häufige Fehlkonfigurationen, die Risiken von Standardeinstellungen im „Testmodus“ und die Implementierung einer identitätsbasierten Zugriffskontrolle.

CWE-284CWE-863

Firebase-Sicherheitsregeln bieten einen granularen, vom Server erzwungenen Mechanismus zum Schutz von Daten in Firestore, Realtime Database und Cloud Storage [S1]. Da Firebase-Anwendungen häufig direkt von der Clientseite aus mit diesen Cloud-Diensten interagieren, stellen diese Regeln die einzige Barriere dar, die den unbefugten Zugriff auf die Backend-Daten [S1] verhindert.

Auswirkungen zulässiger Regeln

Falsch konfigurierte Regeln können zu einer erheblichen Datengefährdung führen [S2]. Wenn die Regeln übermäßig freizügig sind – beispielsweise die Verwendung von Standardeinstellungen für den „Testmodus“, die globalen Zugriff ermöglichen –, kann jeder Benutzer mit Kenntnis der Projekt-ID den gesamten Datenbankinhalt [S2] lesen, ändern oder löschen. Dadurch werden alle clientseitigen Sicherheitsmaßnahmen umgangen und es kann zum Verlust vertraulicher Benutzerinformationen oder zur vollständigen Unterbrechung des Dienstes [S2] kommen.

Grundursache: Unzureichende Autorisierungslogik

Die Hauptursache dieser Schwachstellen ist in der Regel das Versäumnis, bestimmte Bedingungen zu implementieren, die den Zugriff basierend auf der Benutzeridentität oder den Ressourcenattributen [S3] einschränken. Entwickler lassen in Produktionsumgebungen, die das request.auth-Objekt [S3] nicht validieren, häufig Standardkonfigurationen aktiv. Ohne die Auswertung von request.auth kann das System nicht zwischen einem legitimen authentifizierten Benutzer und einem anonymen Anforderer [S3] unterscheiden.

Technische Behebung

Die Sicherung einer Firebase-Umgebung erfordert den Übergang vom offenen Zugriff zu einem Modell mit dem Grundsatz der geringsten Rechte.

  • Authentifizierung erzwingen: Stellen Sie sicher, dass alle vertraulichen Pfade eine gültige Benutzersitzung erfordern, indem Sie prüfen, ob das request.auth-Objekt nicht null [S3] ist.
  • Identitätsbasierten Zugriff implementieren: Konfigurieren Sie Regeln, die die UID des Benutzers (request.auth.uid) mit einem Feld innerhalb des Dokuments oder der Dokument-ID selbst vergleichen, um sicherzustellen, dass Benutzer nur auf ihre eigenen Daten [S3] zugreifen können.
  • Granulares Berechtigungs-Scoping: Vermeiden Sie globale Platzhalter für Sammlungen. Definieren Sie stattdessen spezifische Regeln für jede Sammlung und Untersammlung, um die potenzielle Angriffsfläche [S2] zu minimieren.
  • Validierung über die Emulator Suite: Verwenden Sie die Firebase Emulator Suite, um Sicherheitsregeln lokal zu testen. Dies ermöglicht die Überprüfung der Zugriffskontrolllogik anhand verschiedener Benutzerpersönlichkeiten vor der Bereitstellung in einer Live-Umgebung [S2].

Wie FixVibe darauf testet

FixVibe enthält dies jetzt als schreibgeschützten BaaS-Scan. baas.firebase-rules extrahiert die Firebase-Konfiguration aus JavaScript-Bundles gleicher Herkunft, einschließlich moderner initializeApp(...)-Bundle-Formen, und überprüft dann Echtzeitdatenbank, Firestore und Firebase-Speicher mit nicht authentifizierten schreibgeschützten Anforderungen. Bei Firestore wird zunächst versucht, die Root-Sammlung aufzulisten. Wenn die Auflistung blockiert ist, werden auch gängige sensible Sammlungsnamen wie users, accounts, customers, orders, payments, messages überprüft. admin und settings. Es meldet nur erfolgreiche anonyme Lesevorgänge oder Auflistungen und schreibt, löscht oder speichert keine Kundendokumentinhalte.