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

Una o más de tus apps contienen una vulnerabilidad en la inyección de la interfaz de JavaScript que puede provocar la filtración o corrupción de datos, o bien la ejecución arbitraria de código. Sigue los pasos que se indican a continuación para solucionar el problema.

Consulta la fecha límite para corregir este error en el aviso de Play Console o en tu correo electrónico. Después de esa fecha, se bloquearán las actualizaciones de las apps afectadas si no se solucionó la vulnerabilidad, aunque no se verá afecta la versión publicada del APK.

Detalles adicionales

Un sistema WebView que expone objetos en el nivel de la app al código JavaScript mediante addJavascriptInterface y carga contenido web que no es de confianza es 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.

Para evitar esta vulnerabilidad, haz lo siguiente:

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:

  1. Procura que no se agregue ningún objeto a la interfaz de JavaScript mediante llamadas a addJavascriptInterface.
  2. 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 falso en el manifiesto 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 (por ejemplo, direcciones obtenidas de Intents no confiables). 

Acción necesaria

  1. Actualiza la app siguiendo los pasos destacados anteriormente.
  2. Accede a Play Console y envía la versión actualizada de tu app.
  3. Regresa después de cinco horas. Si no se actualizó correctamente la app, aparecerá un mensaje de advertencia.

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.