deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Saldırganlar Zayıf Güvenlik Kurallarını Atlamak için Firebase Uygulama İsteklerini Yeniden Oynatıyor

Bir dev.to analizine göre gömülü Firebase yapılandırması ve oturum açmış kullanıcı yetkilendirme anlamına gelmez; analiz, gevşek Security Rules'ın production verilerini betik isteklerine açık bıraktığını gösteriyor.

Saldırganlar Zayıf Güvenlik Kurallarını Atlamak için Firebase Uygulama İsteklerini Yeniden Oynatıyor

Bir mobil uygulamaya derlenen Firebase yapılandırması çoğu zaman bir sır gibi ele alınır. Vaibhav Shakya'nın dev.to'daki yazısı bunun tersini savunuyor: bu yapılandırma herkese açık olacak şekilde tasarlanmıştır ve asıl sorun, production sistemlerinin bu yapılandırmayı, oturum açmış bir kullanıcıyı veya uygulamanın kendi arayüzünü yetki kanıtı olarak görmesidir.

İstemci sınır değildir

Yazıya göre, bir Android veya iOS derlemesinden Firebase yapılandırmasını çıkaran bir saldırgan, meşru API çağrılarını herhangi bir betik ya da araçla yeniden oluşturabilir. Gizli butonlar, gezinme korumaları ve istemci tarafı doğrulama bu bağlamda hiçbir zaman çalışmaz; bu yüzden Firestore Security Rules veya Storage izinleri gevşekse, altta yatan kayıtlara uygulamanın arayüzü neyi kısıtlıyor gibi görünürse görünsün erişilebilir.

Yazının tarif ettiği temel hata modu budur: arayüz, arka ucun gerçekte hiç uygulamadığı sınırlar ima eder.

Oturum açmış olmak yetkilendirilmiş olmak değildir

Yazarın öne çıkardığı kural deseni, yalnızca request.auth değerinin null olup olmadığının kontrol edilmesi — özünde "birisi oturum açmış mı?" sorusunun sorulması. Bu bir kimliğin var olduğunu doğrular ama o kimliğin aşağıdakileri yapıp yapamayacağı hakkında hiçbir şey söylemez:

  • istenen kaydın sahibi olması
  • doğru tenant veya hesaba ait olması
  • hassas alanlara dokunmaya yetkili olması
  • denenen iş geçişini gerçekleştirmeye izinli olması

Yazıya göre gerçek yetkilendirme, kimliği doğrulanmış kimliği belirli kaynağa ve belirli işlem bağlamalıdır.

App Check bir sinyaldir, karar değil

Firebase'in App Check'i bir isteğin muhtemelen uygulamanın meşru bir derlemesinden geldiğini doğrular. dev.to yazısı bunu katmanlardan biri olarak konumlandırıyor: çağrı ortamına duyulan güveni artırır ama sahipliği doğrulamaz, roller tanımlamaz veya istemcinin gönderdiği payload'ları güvenilir kılmaz. Yazarın önerdiği katmanlı model işi böler — kimlik doğrulama "kim" sorusunu yanıtlar, Security Rules hangi veri olduğuna karar verir, App Check uygulama hakkında bağlam ekler ve güvenilir bir arka uç iş kurallarını uygular.

Yüksek etkili işlemler sunucuya aittir

Yazı, hiçbir zaman yalnızca istemcinin veritabanına yaptığı yazmalarla yürütülmemesi gereken işlemleri sayıyor: ödemelerin tamamlanması, iadeler, KYC onayları, yönetimsel rol atamaları ve ödül dağıtımı. Bunlar için sunucu tarafı bir bileşen aktörü, kaydın mevcut durumunu, istenen geçişe izin verilip verilmediğini, girdinin kendisini ve bir idempotency anahtarını doğrulamalıdır. Ayrıca eşzamanlı istekler, yeniden denemeler, replay girişimleri ve kısmi başarısızlıklarla, aynı iş eylemini iki kez gerçekleştirmeden başa çıkabilmelidir — klasik çift iade senaryosu.

Security Rules production ciddiyeti hak eder

Yazıya göre kurallar, storage izinleri, arka uç kimlikleri ve fonksiyon yapılandırması, uygulama koduyla aynı mühendislik disiplinini hak eder. Uygulamada bu şunları demektir:

  • incelenmiş dağıtımlarla birlikte sürüm kontrolünde tutulmaları
  • kullanıcılar arası erişimi ve kimliği doğrulanmamış erişimi kapsayan test senaryoları
  • kuralların içinde alan düzeyinde doğrulama
  • arka uç servis kimlikleri için en az ayrıcalıklı izinler
  • tek bir işlemin ne kadar yapabileceğine dair hız kontrolleri ve sınırlar
  • bir olay müdahalesi prosedürüyle birlikte runtime izleme

İzleme ve bütçe uyarıları görünürlük için faydalı olarak tanımlanıyor ama doğru yetkilendirmenin veya uygulama düzeyinde sınırların yerine geçmez.

Neden önemli

Firebase'in geliştirici deneyimi, istemcinin doğrudan veritabanıyla konuştuğu, gerçek erişim kontrolünün ise prototip aşamasında bir kez yazılan kurallar dosyasından ibaret olduğu bir uygulamayı yayınlamayı son derece kolaylaştırıyor. Uygulamanın içindeki yapılandırma tasarım gereği okunabilir olduğundan, arayüzün ima ettiğiyle kuralların uyguladığı arasındaki her boşluk, betik yazmaya istekli herkes için fiilen herkese açık bir API'dir. Yazının kapanıştaki duruşu Firebase'i de aşıyor: istemcinin incelenebileceğini, değiştirilebileceğini ve otomatikleştirilebileceğini varsayın ve gerçek korumayı, bu varsayımların artık önem taşımadığı veri ve iş sınırlarına yerleştirin.

  • #firebase
  • #cloud-security
  • #security-rules
  • #authorization
  • #mobile-security