Cómo solucionar una vulnerabilidad de File-based XSS

Esta información está dirigida a desarrolladores cuyas apps sean vulnerables a File-based Cross-Site Scripting.

Qué sucede

Una o más de tus apps contienen una vulnerabilidad de ejecución de secuencias de comandos entre sitios basadas en archivos que debes corregir. 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

Las WebView con WebSettings que establezcan setAllowFileAccessFromFileURLs o setAllowUniversalAccessFromFileURLs como valores verdaderos no deben cargar contenido web que no sea de confianza. Se incluye el contenido de dominios que no sean de confianza que se cargue mediante HTTP. Las redes o el contenido web maliciosos pueden inyectar secuencias de comandos para redireccionar una WebView a un archivo local malicioso y lanzar un ataque de Cross-Site Scripting para acceder a archivos o cookies locales privados.

Haz lo siguiente para evitar esta vulnerabilidad:

  1. Asegúrate de que la configuración de WebView no sea insegura.
  2. Asegúrate de que la WebView no cargue archivos locales ni ejecutar JavaScript.
  3. Asegúrate de que la WebView con configuración insegura no cargue contenido web que no sea de confianza.

1. Cómo asegurarse de que la configuración de WebView no sea insegura

Actualiza android:targetSdkVersion en el Manifest para que tenga el nivel 16, como mínimo, a fin de usar la configuración de seguridad predeterminada de WebView. De lo contrario, invoca los parámetros setAllowFileAccessFromFileURLs(false) y setAllowUniversalAccessFromFileURLs(false) para garantizar que sus WebView sean seguras.

2. Cómo asegurarse de que una WebView no cargue archivos locales ni ejecute JavaScript

Invoca el parámetro setAllowFileAccess(false) para evitar que una WebView con configuración insegura cargue archivos locales o setJavaScriptEnabled(false) para evitar que una WebView con configuración insegura ejecute código JavaScript.

3. Cómo asegurarse de que una WebView con configuración insegura no cargue contenido web que no sea de confianza

Si una WebView necesita habilitar esta configuración insegura, debes asegurarte de que no cargue contenido web que no sea de confianza, lo que incluye contenido cargado mediante HTTP. Configura android:usesCleartextTraffic=false o una Configuración de seguridad de red que inhabilite el tráfico HTTP en el Manifest. También puedes asegurarte de que ninguna WebView con configuración insegura cargue URL con esquemas HTTP.

Además, debes asegurarte de que las WebView con configuración insegura no carguen URL obtenidas de fuentes que no sean de confianza.

Estamos aquí para ayudarte

Si tienes preguntas técnicas sobre la vulnerabilidad, publícalas en Stack Overflow con la etiqueta "android-security". Si tienes dudas sobre los pasos que debes seguir para resolver este problema, comunícate con nuestro equipo de asistencia para desarrolladores.