FixVibe
Covered by FixVibehigh

Aturan Keamanan Firebase: Mencegah Paparan Data Tidak Sah

Aturan Keamanan Firebase adalah pertahanan utama untuk aplikasi tanpa server yang menggunakan Firestore dan Cloud Storage. Jika aturan ini terlalu permisif, seperti mengizinkan akses baca atau tulis global dalam produksi, penyerang dapat melewati logika aplikasi yang dimaksudkan untuk mencuri atau menghapus data sensitif. Penelitian ini mengeksplorasi kesalahan konfigurasi yang umum, risiko default 'mode pengujian', dan cara menerapkan kontrol akses berbasis identitas.

CWE-284CWE-863

Aturan Keamanan Firebase menyediakan mekanisme granular yang diterapkan server untuk melindungi data di Firestore, Realtime Database, dan Cloud Storage [S1]. Karena aplikasi Firebase sering berinteraksi dengan layanan cloud ini langsung dari sisi klien, aturan ini mewakili satu-satunya penghalang yang mencegah akses tidak sah ke data backend [S1].

Dampak Aturan Permisif

Aturan yang salah dikonfigurasi dapat menyebabkan paparan data yang signifikan [S2]. Jika aturan ditetapkan terlalu permisif—misalnya, menggunakan setelan 'mode pengujian' default yang mengizinkan akses global—setiap pengguna yang mengetahui ID proyek dapat membaca, mengubah, atau menghapus seluruh konten database [S2]. Hal ini mengabaikan semua tindakan keamanan sisi klien dan dapat mengakibatkan hilangnya informasi sensitif pengguna atau gangguan total layanan [S2].

Akar Penyebab: Logika Otorisasi Tidak Memadai

Penyebab utama kerentanan ini biasanya adalah kegagalan menerapkan kondisi tertentu yang membatasi akses berdasarkan identitas pengguna atau atribut sumber daya [S3]. Pengembang sering membiarkan konfigurasi default aktif di lingkungan produksi yang tidak memvalidasi objek request.auth [S3]. Tanpa mengevaluasi request.auth, sistem tidak dapat membedakan antara pengguna sah yang diautentikasi dan peminta anonim [S3].

Remediasi Teknis

Mengamankan lingkungan Firebase memerlukan peralihan dari akses terbuka ke model dengan hak istimewa paling rendah.

  • Menerapkan Otentikasi: Pastikan semua jalur sensitif memerlukan sesi pengguna yang valid dengan memeriksa apakah objek request.auth bukan null [S3].
  • Menerapkan Akses Berbasis Identitas: Konfigurasikan aturan yang membandingkan UID pengguna (request.auth.uid) dengan bidang dalam dokumen atau ID dokumen itu sendiri untuk memastikan pengguna hanya dapat mengakses data mereka sendiri [S3].
  • Pelingkupan Izin Granular: Hindari wildcard global untuk koleksi. Sebaliknya, tentukan aturan spesifik untuk setiap koleksi dan subkoleksi untuk meminimalkan potensi serangan permukaan [S2].
  • Validasi melalui Emulator Suite: Gunakan Firebase Emulator Suite untuk menguji aturan keamanan secara lokal. Hal ini memungkinkan verifikasi logika kontrol akses terhadap berbagai persona pengguna sebelum diterapkan ke lingkungan langsung [S2].

Bagaimana FixVibe mengujinya

FixVibe sekarang menyertakan ini sebagai pemindaian BaaS hanya-baca. baas.firebase-rules mengekstrak konfigurasi Firebase dari bundel JavaScript asal yang sama, termasuk bentuk bundel initializeApp(...) modern, lalu memeriksa Realtime Database, Firestore, dan Penyimpanan Firebase dengan permintaan hanya baca yang tidak diautentikasi. Untuk Firestore, pertama-tama ia mencoba daftar koleksi root; ketika daftar diblokir, itu juga menyelidiki nama koleksi sensitif yang umum seperti users, accounts, customers, orders, payments, messages, admin, dan settings. Ini hanya melaporkan pembacaan atau daftar anonim yang berhasil dan tidak menulis, menghapus, atau menyimpan konten dokumen pelanggan.