Index
Depuración remota de Webview habilitada
Descripción
Webview expone la depuración remota utilizando la API setWebContentsDebuggingEnabled. La API se introdujo en la API 19.
La depuración de Webview utiliza el Chrome Debug Protocol y se expone mediante un socket unix abstracto. El nombre del socket es webview_devtools_remote o webview_devtools_remote_<pid>.
Para confirmar que el socket está expuesto en su dispositivo, puede utilizar el comando netstat -untapexW y buscar su aplicación de destino o el signo @, que se utiliza para denotar sockets abstractos.
Los sockets abstractos no utilizan los permisos del sistema de archivos para aplicar el acceso y, por lo tanto, son accesibles a todas las aplicaciones en el dispositivo.
Para demostrar el acceso al socket, puede utilizar el binario socat para exponer el socket abstracto:
./socat TCP-LISTEN:9999,fork ABSTRACT:webview_devtools_remote_3483
Se puede acceder al puerto 9999 localmente o, para fines de prueba, ser reenviado mediante adb:
adb forward tcp:9999 tcp:9999
Para acceder al protocolo remoto, utilice el cliente Chrome Debug Protocol, como pychrome:
import pychrome
# Conectar al webview en el puerto expuesto.
browser = pychrome.Browser(url="http://127.0.0.1:9999")
t = browser.list_tab()[0]
t.start()
t.DOM.enable()
# Acceder al documento.
t.DOM.getDocument()
Recomendación
Establezca setWebContentsDebuggingEnabled en false o establézcalo en true solo si la aplicación está en modo de depuración.
Ejemplo:
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
WebView.setWebContentsDebuggingEnabled(true);
}
Enlaces
Estándares
- 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