Solución para la vulnerabilidad en la inyección de la interfaz de JavaScript

Esta información está dirigida a desarrolladores cuyas apps contengan una vulnerabilidad en la inyección de la interfaz de JavaScript.

Novedades

Consulta la notificación en tu cuenta de Play ConsoleDespués de los plazos que aparecen en Play Console, es posible que se eliminen de Google Play todas las apps que contengan vulnerabilidades de seguridad no resueltas.

Acción necesaria​

  1. Accede a tu cuenta de Play Console y desplázate a la sección "Alertas" para ver qué apps están afectadas, así como los plazos para resolver los problemas.
  2. Actualiza las apps afectadas y corrige la vulnerabilidad.
  3. Envía las versiones actualizadas de las apps afectadas.

Una vez que las hayas reenviado, revisaremos tu app nuevamente. Este proceso puede demorar varias horas. Si la app pasa la revisión y se publica sin problemas, no se requiere ninguna otra acción. Si la app no pasa la revisión, no se publicará la nueva versión, y recibirás una notificación por correo electrónico.

Detalles adicionales

Un componente WebView que exponga objetos en el nivel de la app al código JavaScript mediante addJavascriptInterface y cargue contenido web que no sea de confianza será vulnerable a la inyección de la interfaz de JavaScript. El contenido no confiable puede ejecutar cualquiera de los métodos de objetos expuestos que incluyan @JavascriptInterface, lo que puede causar la filtración o corrupción de datos, o incluso la ejecución arbitraria de código.

Te recomendamos que evites esta vulnerabilidad de alguna de las siguientes maneras:

Opción 1: Asegúrate de que WebView no agregue objetos a la interfaz de JavaScript

Asegúrate de que no se agreguen objetos a la interfaz de JavaScript de ningún WebView que cargue contenido web que no sea de confianza. Puedes hacerlo de dos maneras:

 

Procura que no se agregue ningún objeto a la interfaz de JavaScript mediante llamadas a addJavascriptInterface.

  1. Quita los objetos de la interfaz de JavaScript en shouldInterceptRequest mediante removeJavascriptInterface antes de que WebView cargue contenido que no sea de confianza.

Opción 2: Asegúrate de que WebView no cargue contenido web que no sea de confianza

Si tu app necesita exponer objetos a la interfaz de JavaScript de un sistema WebView, procura que este no cargue contenido web mediante una conexión sin encriptar. Para ello, configura android:usesCleartextTraffic como "false" en el Manifest o establece una configuración de seguridad de la red que no permita el tráfico HTTP. También puedes asegurarte de que los sistemas WebView afectados no carguen ninguna URL con esquemas HTTP mediante loadUrl.


Además, debes procurar que los sistemas WebView con interfaces de JavaScript no carguen URL sin verificar de fuentes que no sean de confianza (p. ej., direcciones obtenidas de Intents no confiables).

Estamos para ayudarte

Si tienes alguna consulta técnica sobre la vulnerabilidad, publica un comentario en Stack Overflow usando la etiqueta "android-security". Si tienes dudas sobre los pasos que debes realizar para resolver este problema, comunícate con nuestro equipo de asistencia para desarrolladores.