Saltar a contenido

addJavaScriptInterface Remote Code Execution.

Ejecución Remota de Código a través de addJavaScriptInterface

Descripción

El método addJavascriptInterface() en el nivel de API JELLY_BEAN o inferior puede ser abusado a través de reflection para ejecutar comandos de forma remota en el contexto de la aplicación en ejecución.

El método addJavascriptInterface expone un objeto Java suministrado desde un WebView a JavaScript. Para las aplicaciones compiladas o enlazadas contra un nivel de API inferior a 17, se puede acceder a todos los métodos públicos (incluidos los heredados). Mediante el uso de reflection también es posible invocar cualquier otra clase Java no registrada.

Recomendación

Este problema se ha resuelto en las aplicaciones desarrolladas para Android 4.2 (nivel de API 17) y superior. A partir de Android 4.2 (nivel de API 17) y superior, solo los métodos marcados explícitamente con la anotación @JavascriptInterface están disponibles para el código JavaScript dentro del WebView. La anotación @JavascriptInterface debe añadirse a cualquier método que se pretenda exponer a través del puente nativo (el método también debe ser público). A continuación se presenta un ejemplo:

    @JavascriptInterfacepublic void method() {dostuff();}

Para resolver el problema, necesita compilar su aplicación para la API 17 o superior y redistribuirla. Los usuarios tendrían que actualizar sus aplicaciones para utilizar la nueva aplicación no vulnerable.

Enlaces

Estándares

  • OWASP_MASVS_L1:
    • MSTG_PLATFORM_7
  • OWASP_MASVS_L2:
    • MSTG_PLATFORM_2
  • GDPR:
    • ART_5
    • ART_32
  • PCI_STANDARDS:
    • REQ_2_2
    • REQ_6_2
    • REQ_6_3
    • REQ_11_3
  • OWASP_MASVS_v2_1:
    • MASVS_PLATFORM_2
    • MASVS_CODE_4
  • SOC2_CONTROLS:
    • CC_2_1
    • CC_4_1
    • CC_7_1
    • CC_7_2
    • CC_7_4
    • CC_7_5
  • HIPAA_CONTROLS:
    • SECURITY212
    • SECURITY213
    • SECURITY255
    • SECURITY258