Возможность открытия произвольного URL в WebView
|  | Критичность: СРЕДНИЙ | 
| Способ обнаружения: IAST | 
Описание
Уязвимость позволяет открывать произвольные URL в WebView приложения. В зависимости от настроек WebView эта уязвимость может использоваться в различных векторах атак.
Уязвимость присутствует в приложениях, которые используют данные из недоверенного источника  для формирования URL, используемого впоследствии при вызове метода WebView.loadUrl.
Например, уязвимое приложение может использовать такой код:
WebView webView = findViewById(R.id.webview);
setupWebView(webView);
webView.loadUrl(getIntent().getStringExtra("url"));
Или такой:
String url = uri.getQueryParameter("url");
if(url != null) {
webView.loadUrl(url);
}
Рекомендации
- 
Не использовать динамически формируемые URL для WebView. webView.loadUrl("https://url.to.your.contents/");
- 
Проводить валидацию URL: - 
Разрешать доступ только к ресурсам компании, т. е. поддерживать white-list URL-адресов и сверять с ним URL, передаваемый в метод loadUrl.
- 
Разрешать доступ только к определённым origin, т. е. проверять схему и домен URL. List<String> whiteHosts = Arrays.asList("stackoverflow.com", "stackexchange.com", "google.com"); public boolean isValid(String url) { String host = Uri.parse(url).getHost(); if(whiteHosts.contains(host) { return true; } return false; }
 
- 
- 
Отключить потенциально опасные настройки доступа к ресурсам приложения из WebView: 
WebSettings.setAllowContentAccess(false)
WebSettings.setAllowFileAccess(false)
WebSettings.setAllowFileAccessFromFileURLs(false)
WebSettings.setAllowUniversalAccessFromFileURLs(false)
WebSettings.setGeolocationEnabled(false)