FixVibe
Covered by FixVibehigh

Firebase Güvenlik Kuralları: Yetkisiz Verilerin Açığa Çıkmasını Önleme

Firebase Güvenlik Kuralları, Firestore ve Cloud Storage kullanan sunucusuz uygulamalar için birincil savunmadır. Bu kurallar, üretimde küresel okuma veya yazma erişimine izin vermek gibi çok geniş kapsamlı olduğunda, saldırganlar, hassas verileri çalmak veya silmek için amaçlanan uygulama mantığını atlayabilir. Bu araştırma, yaygın yanlış yapılandırmaları, 'test modu' varsayılanlarının risklerini ve kimlik tabanlı erişim kontrolünün nasıl uygulanacağını araştırıyor.

CWE-284CWE-863

Firebase Güvenlik Kuralları, Firestore, Gerçek Zamanlı Veritabanı ve Bulut Depolama [S1]'deki verileri korumak için ayrıntılı, sunucu tarafından zorlanan bir mekanizma sağlar. Firebase uygulamaları genellikle bu bulut hizmetleriyle doğrudan istemci tarafından etkileşime girdiğinden, bu kurallar, [S1] arka uç verilerine yetkisiz erişimi önleyen tek engeli temsil eder.

İzin Veren Kuralların Etkisi

Yanlış yapılandırılmış kurallar, önemli miktarda verinin açığa çıkmasına neden olabilir [S2]. Kurallar aşırı izin verecek şekilde ayarlanmışsa (örneğin, genel erişime izin veren varsayılan 'test modu' ayarları kullanılarak), proje kimliği bilgisine sahip herhangi bir kullanıcı [S2] veritabanı içeriğinin tamamını okuyabilir, değiştirebilir veya silebilir. Bu, tüm istemci tarafı güvenlik önlemlerini atlar ve hassas kullanıcı bilgilerinin kaybına veya hizmetin tamamen kesintiye uğramasına neden olabilir. [S2].

Temel Neden: Yetersiz Yetkilendirme Mantığı

Bu güvenlik açıklarının temel nedeni genellikle kullanıcı kimliğine veya [S3] kaynak özniteliklerine dayalı olarak erişimi kısıtlayan belirli koşulların uygulanmamasıdır. Geliştiriciler, request.auth nesnesi [S3]'yi doğrulamayan üretim ortamlarında sıklıkla varsayılan yapılandırmaları etkin bırakır. request.auth değerlendirilmeden sistem, meşru kimliği doğrulanmış kullanıcı ile anonim istek sahibi [S3] arasında ayrım yapamaz.

Teknik İyileştirme

Firebase ortamının güvenliğini sağlamak, açık erişimden en az ayrıcalık ilkesi modeline geçmeyi gerektirir.

  • Kimlik Doğrulamayı Zorunlu Tutun: request.auth nesnesinin boş [S3] olup olmadığını kontrol ederek tüm hassas yolların geçerli bir kullanıcı oturumu gerektirdiğinden emin olun.
  • Kimlik Tabanlı Erişimi Uygulayın: Kullanıcıların yalnızca kendi verilerine [S3] erişebilmelerini sağlamak için kullanıcının UID'sini (request.auth.uid) belge içindeki bir alanla veya belge kimliğinin kendisiyle karşılaştıran kuralları yapılandırın.
  • Ayrıntılı İzin Kapsamı: Koleksiyonlar için genel joker karakterlerden kaçının. Bunun yerine, potansiyel saldırı yüzeyini [S2] en aza indirmek için her koleksiyon ve alt koleksiyon için belirli kurallar tanımlayın.
  • Emulator Suite aracılığıyla Doğrulama: Güvenlik kurallarını yerel olarak test etmek için Firebase Emulator Suite'i kullanın. Bu, [S2] canlı ortamına dağıtılmadan önce erişim kontrolü mantığının çeşitli kullanıcı kişilerine göre doğrulanmasına olanak tanır.

FixVibe bunu nasıl test ediyor?

FixVibe artık bunu salt okunur bir BaaS taraması olarak içeriyor. baas.firebase-rules, modern initializeApp(...) paket şekilleri de dahil olmak üzere aynı kaynaklı JavaScript paketlerinden Firebase yapılandırmasını çıkarır, ardından kimliği doğrulanmamış salt okunur isteklerle Gerçek Zamanlı Veritabanını, Firestore'u ve Firebase Depolamayı kontrol eder. Firestore için öncelikle kök koleksiyon listesini dener; listeleme engellendiğinde ayrıca users, accounts, customers, orders, payments, messages gibi yaygın hassas koleksiyon adlarını da araştırır. admin ve settings. Yalnızca başarılı anonim okumaları veya listelemeleri rapor eder ve müşteri belgesi içeriklerini yazmaz, silmez veya saklamaz.