Güvenli olmayan derin bağlantı kullanımı

OWASP kategorisi: MASVS-PLATFORM: Platform Etkileşimi

Genel Bakış

Derin bağlantılarla ilişkili güvenlik riskleri, mobil uygulamalarda sorunsuz gezinme ve etkileşim olanağı sunma temel özelliklerinden kaynaklanır. Derin bağlantı güvenlik açıkları, derin bağlantıların uygulanmasındaki veya işlenmesindeki zayıflıklardan kaynaklanır. Bu kusurlar, kötü amaçlı kişiler tarafından ayrıcalıklı işlevlere veya verilere erişim elde etmek için kullanılabilir. Bu da veri ihlallerine, gizlilik ihlallerine ve yetkisiz işlemlere neden olabilir. Saldırganlar, derin bağlantı kaçırma ve veri doğrulama saldırıları gibi çeşitli teknikler kullanarak bu güvenlik açıklarından yararlanabilir.

Etki

Uygun bir derin bağlantı doğrulama mekanizmasının olmaması veya derin bağlantıların güvenli olmayan bir şekilde kullanılması, kötü amaçlı kullanıcıların, güvenlik açığı olan uygulamanın izinleri bağlamında ana makine doğrulama atlama, uygulamalar arası komut dosyası çalıştırma ve uzaktan kod yürütme gibi saldırılar gerçekleştirmesine yardımcı olabilir. Bu durum, uygulamanın yapısına bağlı olarak hassas verilere veya işlevlere yetkisiz erişimle sonuçlanabilir.

Android, tasarım gereği birden fazla uygulamanın aynı derin bağlantı URI'si için intent filtresi kaydetmesine izin verir. Kötü amaçlı uygulamaların uygulamanız için tasarlanmış derin bağlantıları engellemesini önlemek amacıyla, uygulamanın AndroidManifest bölümünde intent-filter içinde android:autoVerify özelliğini uygulayın. Bu sayede kullanıcılar, derin bağlantıları işlemek için tercih ettikleri uygulamayı seçebilir. Böylece, istenen işlemin yapılması sağlanır ve kötü amaçlı uygulamaların bağlantıları otomatik olarak yorumlaması engellenir.

Android 12, güvenliği artırmak için web intent'lerinin daha sıkı şekilde ele alınmasını sunmuştur. Artık uygulamalar, Android App Links aracılığıyla veya sistem ayarlarındaki kullanıcı seçimiyle belirli alan adlarından gelen bağlantıları işleyebilecek şekilde doğrulanmalıdır. Bu sayede uygulamalar, ele almaları gerekmeyen bağlantıları ele geçiremez.

Uygulamanız için bağlantı işleme doğrulamasını etkinleştirmek üzere aşağıdaki biçimle eşleşen intent filtreleri ekleyin (Bu örnek, Android App Links'i doğrulama dokümanından alınmıştır):

  <!-- Make sure you explicitly set android:autoVerify to "true". -->
  <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
  
      <!-- If a user clicks on a shared link that uses the "http" scheme, your
           app should be able to delegate that traffic to "https". -->
      <data android:scheme="http" />
      <data android:scheme="https" />
  
      <!-- Include one or more domains that should be verified. -->
      <data android:host="..." />
  </intent-filter>

Derin bağlantılar, hedef intent'e sunulan ek parametreler içerebilir (ör. başka işlemler gerçekleştirmek için). Güvenli derin bağlantı işleme, katı veri doğrulamasına dayanır. Kötü amaçlı kod veya değerlerin meşru uygulamaya eklenmesini önlemek için derin bağlantılardan gelen tüm veriler geliştiriciler tarafından titizlikle doğrulanmalı ve temizlenmelidir. Bu, herhangi bir derin bağlantı parametresinin değerinin, beklenen değerlerin önceden tanımlanmış izin verilenler listesi ile karşılaştırılmasıyla uygulanabilir.

Uygulamalar, hassas bilgileri göstermeden önce kimlik doğrulama durumu veya yetkilendirme gibi diğer ilgili dahili durumları kontrol etmelidir. Örneğin, bir oyunun seviyesini tamamlama karşılığında verilen ödüller bu kapsamdadır. Bu durumda, seviyeyi tamamlamış olduğunuzun ön koşulunu doğrulamanız, eksikse de ana ekrana yönlendirme yapmanız önerilir.

Kaynaklar