Uygulamalar arası komut dosyası çalıştırma

OWASP kategorisi: MASVS-CODE: Kod Kalitesi

Genel Bakış

WebView, Android uygulamalarında web içeriğinin uygulama içinde gösterilmesini kolaylaştıran yerleşik bir tarayıcı bileşenidir. Uygulamanın kullanıcı arayüzünde HTML, CSS ve JavaScript'i oluşturur.

Uygulamalar Arası Komut Dosyası Çalıştırma, kötü amaçlı kodun yürütülmesiyle genel olarak ilişkilidir bir uygulamadır. Bu dokümanlar kapsamında, konu özellikle güvenlik açığı olan bir WebView'e kötü amaçlı JavaScript kodu eklemeyle sınırlı olacaktır.

Bir uygulama, yeterli olmaksızın WebView'a kötü amaçlı JavaScript'i kabul ettiğinde temizleme veya temizleme gibi işlemler yapması durumunda uygulama, uygulamalar arası güvenlik açığına karşı savunmasızdır. Komut dosyası çalıştırma.

Etki

Saldırgan tarafından kontrol edilen JavaScript içeriği, doğrulanmadan veya temizlenmeden savunmasız uygulamanın Web Görünümü'ne aktarıldığında uygulamalar arası komut dosyası güvenlik açıklarından yararlanılabilir. Bu nedenle, saldırgan, kurban uygulamasının WebView bağlamında yürütülür. İlgili içeriği oluşturmak için kullanılan Kötü amaçlı JavaScript kodu, kurbanın uygulama ile aynı izinleri kullanabilir. hassas kullanıcı verilerinin çalınmasına ve hesabın ele geçirilmesine yol açabilir.

Çözümler

JavaScript'i devre dışı bırak

Uygulamanız JavaScript gerektirmiyorsa, devre dışı bırakmak JavaScript aşağıdaki durumlarda tehdit oluşturabilirsiniz:

Kotlin

// Get the WebView Object
val webView = findViewById<WebView>(R.id.webView)
val webSettings = webView.settings

// Disable JavaScript
webSettings.javaScriptEnabled = false

Java

// Get the WebView Object
WebView webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();

// Disable JavaScript for the WebView
webSettings.setJavaScriptEnabled(false);

Uygulamanız JavaScript gerektiriyorsa, herhangi bir sitenin sahibi veya yöneticisi olduğunuzdan emin olun. JavaScript, WebView'a geçirildi. WebView'in keyfi JavaScript çalıştırmasına izin vermeyin. Sonraki bölümdeki talimatları inceleyin.

Web Görünümü'ne yalnızca beklenen içeriğin yüklendiğinden emin olun

shouldOverrideUrlLoading(), loadUrl() veya evaluateJavascript(), gibi yöntemler kullanırken, kendilerine iletilen URL'lerin kontrol edildiğinden emin olun. Daha önce de belirtildiği gibi, Web Görünümü'ne iletilen tüm JavaScript'ler yalnızca beklenen alanlardan gelmelidir. Bu nedenle, nelerin yüklendiğini doğrulamak önemlidir.

İyi tavsiyeler ve örnekler için OWASP'ın giriş doğrulama dokümanlarını ve WebView'ler için bu Android güvenlik kontrol listesini inceleyin.

WebView için güvenli dosya erişimi ayarlarını belirleme

Dosyalara erişilemediğinden emin olmak, WebView'larda rastgele JavaScript'in çalıştırılmasını önleyebilir. Dosya erişiminin güvenliğini sağlarken aşağıdaki WebSettings dikkate alınmalıdır:

  • Dosya erişimini devre dışı bırakın. Varsayılan olarak setAllowFileAccess şurada True olarak ayarlanmıştır: Yerel dosyalara erişim izni veren API düzeyi 29 ve daha düşük sürümler. API düzeyi 30'da ve daha yüksek değer varsayılan değer False olur. Dosya erişimine izin verilmediğinden emin olmak için setAllowFileAccess değerini False olarak açıkça ayarlayın
  • İçerik erişimini devre dışı bırakın. setAllowContentAccess için varsayılan ayar True'dır. İçerik URL'si erişimi, WebView'in sisteme yüklenmiş bir içerik sağlayıcıdan içerik yüklemesine olanak tanır. Uygulamanız içerik erişimi gerektirmiyorsa uygulamalar arası komut dosyası saldırısı durumunda olası kötüye kullanımları önlemek için setAllowContentAccess değerini False olarak ayarlayın.

  • Kotlin kotlin webView.settings.javaScriptEnabled = false webView.settings.domStorageEnabled = true webView.settings.allowFileAccess = false webView.settings.allowContentAccess = false.

  • Java java webView.getSettings().setJavaScriptEnabled(false); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setAllowFileAccess(false); webView.getSettings().setAllowContentAccess(false);.

Güvenli Tarama'yı etkinleştirme

İletilen URL'leri taramak için AndroidManifest.xml'te Güvenli Tarama'yı etkinleştirin Kimlik avı veya kötü amaçlı alanlar için WebView:

<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
   android:value="true" />

Kaynaklar