Aller au contenu

Call to dangerous WebView settings API

Appel à l'API des paramètres WebView dangereux

Description

Liste de toutes les méthodes WebView utilisées dans l'application.

Recommandation

Pour atténuer l'utilisation dangereuse des API WebView :

Défense principale – Désactiver le contenu mixte :

Android natif (Java) :

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
}

Flutter (ex. flutter_inappwebview) :

InAppWebViewSettings(mixedContentMode: MixedContentMode.MIXED_CONTENT_NEVER_ALLOW)
  • Empêche les pages HTTPS de charger des ressources HTTP non sécurisées
  • Bloque les attaques de l'homme du milieu (man-in-the-middle) via des scripts injectés

Restreindre l'accès aux fichiers :

Android natif (Java) :

webView.getSettings().setAllowFileAccess(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    webView.getSettings().setAllowFileAccessFromFileURLs(false);
    webView.getSettings().setAllowUniversalAccessFromFileURLs(false);
}

Flutter (ex. flutter_inappwebview) :

InAppWebViewSettings(
  allowFileAccess: false,
  allowFileAccessFromFileURLs: false,
  allowUniversalAccessFromFileURLs: false,
)
  • Bloque l'exploitation du schéma file://
  • Empêche la fuite de fichiers locaux et de bases de données

Durcir l'interface JavaScript :

Android natif (Java) :

webView.removeJavascriptInterface("interfaceName"); // Remove if not needed
// If required, only expose minimal @JavascriptInterface methods

Flutter : Supprimez les gestionnaires JS inutilisés. Si nécessaire, restreignez de façon sécurisée la logique au sein de addJavaScriptHandler (flutter_inappwebview) ou JavascriptChannel (webview_flutter).

  • Évite l'exécution de code à distance via addJavascriptInterface()
  • Utilisez WebMessagePort ou des listes d'autorisation d'origines de confiance si le pont JS est requis

Protections supplémentaires :

  • Désactiver le débogage WebView en production :

Android natif :

WebView.setWebContentsDebuggingEnabled(false);

Flutter (ex. flutter_inappwebview) :

InAppWebViewSettings(isInspectable: false, debuggingEnabled: false)
  • Activer la navigation sécurisée (API 26+) :

Android natif :

WebView.enableSafeBrowsing(context);

Flutter (ex. flutter_inappwebview) :

InAppWebViewSettings(safeBrowsingEnabled: true)

En désactivant le contenu mixte, en restreignant l'accès aux fichiers et en sécurisant les ponts JavaScript, vous éliminez les principaux vecteurs d'attaque associés aux API WebView dangereuses tout en gardant la fonctionnalité WebView de l'application sécurisée.

Liens

Normes

  • OWASP_MASVS_L1:
    • MSTG_PLATFORM_6
    • MSTG_PLATFORM_5
  • OWASP_MASVS_L2:
    • MSTG_PLATFORM_6
    • MSTG_PLATFORM_5
  • OWASP_MASVS_v2_1:
    • MASVS_PLATFORM_2
    • MASVS_PLATFORM_3
  • OWASP_MOBILE_TOP_10:
    • M8_2024