Aller au contenu

Index

Débogage à distance de Webview activé

Description

Webview expose le débogage à distance à l'aide de l'API setWebContentsDebuggingEnabled. L'API a été introduite dans l'API 19.

Le débogage de Webview utilise le protocole Chrome Debug Protocol et est exposé à l'aide d'un socket abstrait unix nommé. Le socket est nommé webview_devtools_remote ou webview_devtools_remote_<pid>.

Pour confirmer que le socket est exposé sur votre appareil, vous pouvez utiliser la commande netstat -untapexW et rechercher votre application cible ou le signe @, utilisé pour désigner les sockets abstraits.

Les sockets abstraits n'utilisent pas les permissions du système de fichiers pour appliquer les accès et sont donc accessibles à toutes les applications de l'appareil.

Pour démontrer l'accès au socket, vous pouvez utiliser le binaire socat pour exposer le socket abstrait :

./socat TCP-LISTEN:9999,fork ABSTRACT:webview_devtools_remote_3483

Le port 9999 peut être accédé localement ou, à des fins de test, être transféré à l'aide d'adb :

adb forward tcp:9999 tcp:9999

Pour accéder au protocole distant, utilisez le client Chrome Debug Protocol, tel que pychrome :

import pychrome

# se connecter à la webview sur le port exposé.
browser = pychrome.Browser(url="http://127.0.0.1:9999")
t = browser.list_tab()[0]
t.start()
t.DOM.enable()

# Accéder au document.
t.DOM.getDocument()

Recommandation

Définissez setWebContentsDebuggingEnabled sur false ou définissez-le sur true uniquement si l'application est en mode débogage.

Exemple :

    if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
    WebView.setWebContentsDebuggingEnabled(true);
  }

Liens

Normes

  • OWASP_MASVS_L1:
    • MSTG_CODE_2
    • MSTG_CODE_4
  • OWASP_MASVS_L2:
    • MSTG_CODE_2
    • MSTG_CODE_4
  • PCI_STANDARDS:
    • REQ_1_2
    • REQ_2_2
    • REQ_6_2
    • REQ_6_3
    • REQ_11_3
  • OWASP_MASVS_v2_1:
    • MASVS_PLATFORM_2
    • MASVS_RESILIENCE_3
  • HIPAA_CONTROLS:
    • SECURITY212
    • SECURITY213
    • SECURITY255