Corregir la vulnerabilidad cross-app scripting

Esta información va dirigida a los desarrolladores que tengan aplicaciones que contengan la vulnerabilidad cross-app scripting.

¿Qué está pasando?

Una o varias de tus aplicaciones contienen la vulnerabilidad cross-app scripting de WebView, que permite que aplicaciones maliciosas roben cookies de usuario y otros datos. Consulta el aviso en Play ConsoleUna vez que finalice el plazo indicado en Play Console, es posible que las aplicaciones que contengan vulnerabilidades de seguridad sin corregir se retiren de Google Play.

¿Qué tienes que hacer?​

  1. Inicia sesión en Play Console y ve a la sección Alertas para consultar qué aplicaciones están afectadas y las fechas límite para resolver estos problemas.
  2. Actualiza las aplicaciones afectadas y corrige la vulnerabilidad.
  3. Envía las versiones actualizadas de las aplicaciones afectadas.

Durante este tiempo, la aplicación o actualización estarán pendientes de publicación hasta que se revise la solicitud. Si la aplicación no se ha actualizado correctamente, se mostrará la advertencia.

Detalles adicionales

Las aplicaciones maliciosas pueden manipular los elementos WebView que habilitan JavaScript y cargan datos de intents que no son de confianza para que ejecuten código JavaScript en un contexto no seguro. Te recomendamos que evites esta vulnerabilidad de una de estas formas:

Opción 1: Verifica que las actividades afectadas no se exporten

Busca todas las actividades con elementos WebView afectados. Si estas actividades no necesitan intents de otras aplicaciones, puedes utilizar android:exported=false en las actividades de tu archivo de manifiesto. De esta forma, las aplicaciones maliciosas no podrán enviar contenido dañino a ningún elemento WebView de estas actividades.

Opción 2: Protege los elementos WebView de las actividades exportadas

Si quieres establecer como exportada una acción con un elemento WebView afectado, te recomendamos que hagas los siguientes cambios:

  1. Protege las llamadas a evaluateJavascript y loadUrl

    Asegúrate de que los parámetros de evaluateJavascript sean siempre de confianza. Si haces una llamada a evaluateJavascript usando una entrada no depurada de intents que no sean de confianza, un atacante podría ejecutar secuencias de comandos dañinas en el WebView afectado. De forma similar, si se hace una llamada a loadUrl usando una entrada no depurada que contenga javascript: URLs de esquema, un atacante podría ejecutar secuencias de comandos dañinas.

  2. Evita que los archivos se carguen de forma no segura.

    Asegúrate de que los WebView afectados no puedan cargar la base de datos de cookies. Los WebView que cargan URL no depuradas del tipo file:// procedentes de intents que no son de confianza pueden sufrir ataques de aplicaciones maliciosas en dos pasos. Primer paso: una página web maliciosa puede incluir etiquetas <script> en la base de datos de cookies. Segundo paso: este archivo modificado de base de datos de cookies se puede cargar si una aplicación maliciosa envía un intent con una URL del tipo file:// que apunte a tu base de datos de cookies de WebView, o si la propia página web maliciosa redirige tu WebView a la URL del archivo. La etiqueta <script> maliciosa almacenada en la base de datos de cookies se cargará y se ejecutará, lo que permitirá robar información de la sesión.

    Para que los WebView no puedan cargar la base de datos de cookies de WebView, tienes tres opciones:

    1. Inhabilitar el acceso a todos los archivos.
    2. Asegurarte de que el WebView solo cargue URLs del tipo file:// y verificar que cualquier URL de este tipo cargada apunte a archivos seguros. Ten en cuenta que un atacante puede usar un enlace simbólico para manipular las comprobaciones de la ruta de la URL. Para evitar ataques de este tipo, comprueba la ruta canónica de todas las URL del tipo file:// que no sean de confianza antes de que se carguen (en lugar de comprobar únicamente la ruta de la URL).
    3. Si quieres permitir las URL del tipo http:// y file://, implementa la verificación de las URL del tipo file:// mediante shouldOverrideUrlLoading y shouldInterceptRequest en WebViewClient. Así, se verificarán todas las URL cargadas en un elemento WebView, no solo las URL añadidas directamente a una llamada de función loadUrl().

Estamos aquí para ayudarte
Si tienes alguna pregunta técnica sobre esta vulnerabilidad, puedes publicarla en Stack Overflow con la etiqueta "android‑security". Ponte en contacto con nuestro equipo de Asistencia para desarrolladores si necesitas instrucciones para resolver este problema.

¿Te ha resultado útil esta información?

¿Cómo podemos mejorar esta página?
false
Menú principal
374769668732951013
true
Buscar en el Centro de ayuda
true
true
true
true
true
5016068
false
false