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