Corrige una vulnerabilidad de ejecución de secuencias de comandos entre apps

Esta información está dirigida a los desarrolladores cuyas apps contengan una vulnerabilidad de ejecución de secuencias de comandos entre apps.

Novedades

Una o más de tus apps presentan un problema de ejecución de secuencias de comandos entre apps en WebView, lo que puede permitir que las apps maliciosas roben las cookies y otros datos de los usuarios. 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 las apps que contengan vulnerabilidades de seguridad no resueltas.

Acción necesaria​

  1. Accede a tu cuenta de Play Console y ve a la sección "Alertas" para observar qué apps están afectadas y las fechas límite para resolver los problemas.
  2. Actualiza las apps afectadas y corrige la vulnerabilidad.
  3. Envía las versiones actualizadas de las apps afectadas.

Durante ese tiempo, la app nueva o actualizada se encontrará en un estado de publicación pendiente hasta que se revise tu solicitud. Si no se actualiza correctamente la app, seguirás viendo la advertencia.

Detalles adicionales

Algunas apps maliciosas pueden engañar a los WebViews que tengan habilitado JavaScript y carguen datos obtenidos de Intents no confiables para que ejecuten un código JavaScript en un contexto inseguro. Te recomendamos que evites esta vulnerabilidad de alguna de las siguientes maneras:

Opción 1: Asegúrate de que no se exporten las actividades afectadas

Busca instancias de Activity con WebViews afectadas. Si estas instancias de Activity no necesitan tomar Intents de otras apps, puedes establecer android:exported=false para las instancias de Activity en tu manifiesto. Esto garantiza que las apps maliciosas no puedan enviar entradas dañinas a WebViews en estas instancias de Activity.

Opción 2: Protege WebViews en actividades exportadas

Si quieres definir como exportada una Activity con una WebView afectada, se recomienda que implementes los siguientes tres cambios:

  1. Protege las llamadas a evaluateJavascript y loadUrl

    Asegúrate de que los parámetros de evaluateJavascript siempre sean confiables. Si se llama a evaluateJavascript con información de entrada no segura de Intents no confiables, los atacantes pueden ejecutar secuencias de comandos dañinas en la WebView afectada. Del mismo modo, si se llama a loadUrl con información de entrada no segura que tenga URL de esquema javascript:, los atacantes pueden ejecutar secuencias de comandos dañinas.

  2. Evita la carga de archivos no seguros

    Asegúrate de que las WebViews afectadas no puedan cargar la base de datos de cookies. Las WebViews que carguen URL file:// no seguras de Intents no confiables podrían recibir ataques de apps maliciosas en dos pasos. Como primer paso, una página web maliciosa puede escribir etiquetas <script> en la base de datos de cookies. Como segundo paso, se puede cargar este archivo de base de datos de cookies modificado si una app maliciosa envía un Intent con una URL file:// que dirige a la base de datos de cookies de WebView, o si la página web maliciosa en sí redirecciona la WebView a la URL del archivo. Se cargará y ejecutará el archivo <script> malicioso almacenado en la base de datos de cookies, que podría robar información de la sesión.

    Para asegurarte de que las WebViews afectadas no puedan cargar la base de datos de cookies de WebView, puedes probar tres métodos diferentes:

    1. Inhabilita el acceso a los archivos.
    2. Asegúrate de que la WebView solo cargue las URL file:// y verifica que las URL file:// cargadas dirijan a archivos seguros. Ten en cuenta que los atacantes pueden usar un vínculo simbólico para engañar los controles de las rutas de URL. Para evitar este tipo de ataque, asegúrate de controlar la ruta de acceso canónica de cualquier URL file:// no confiable antes de cargarla, en lugar de revisar únicamente la ruta de URL.
    3. Si quieres permitir las URL http:// y file://, implementa la verificación de URL file:// con shouldOverrideUrlLoading y shouldInterceptRequest en WebViewClient. Esto garantiza que se verifiquen todas las URL cargadas en WebView, sin limitarse a las URL proporcionadas directamente a una llamada a la función loadUrl().

Estamos aquí para ayudarte
Si tienes preguntas técnicas sobre la vulnerabilidad, publícalas en Stack Overflow con la etiqueta "android-security". Si necesitas aclaración sobre los pasos que debes seguir para resolver el problema, puedes comunicarte con nuestro equipo de asistencia para desarrolladores.

false
Menú principal
7729977674532792584
true
Buscar en el Centro de asistencia
true
true
true
true
true
5016068
false
false