Soluciones para la vulnerabilidad de secuestro de esquema de intents

Esta información va dirigida a los desarrolladores que tengan aplicaciones con la vulnerabilidad de secuestro de esquema de intents.

¿Qué está pasando?

Una o varias de tus aplicaciones contienen la vulnerabilidad de secuestro de esquema de intents, que puede permitir el acceso de redes y sitios web maliciosos a componentes privados de la aplicación. Consulta el aviso en Play Console. Una 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.

Acción necesaria

  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 siguiendo los pasos destacados más abajo.

  3. Envía las versiones actualizadas de las aplicaciones afectadas.

Cuando vuelvas a enviar tus aplicaciones, se revisarán de nuevo. Este proceso puede tardar varias horas en completarse. Si una aplicación supera el proceso de revisión y se publica, no tendrás que hacer nada más. De lo contrario, la nueva versión de la aplicación no se publicará y recibirás una notificación por correo electrónico.

Información adicional

Los elementos WebView que visitan contenido web que no es de confianza, analizan enlaces intent:// usando Intent.parseUri y envían esos intents utilizando startActivity son vulnerables a los secuestros de esquema de intents. El contenido malicioso puede manipular los elementos WebView para que envíen intents arbitrarios a componentes privados de la aplicación. Esto puede conllevar riesgos como el robo de datos privados de la aplicación que manipulan dichos componentes. Ten en cuenta que entre los contenidos web que no son de confianza se incluye también contenido que proviene de dominios de confianza y que se carga a través de HTTP.

Te recomendamos que evites esta vulnerabilidad de una de estas formas:

Opción 1: Comprueba que los elementos WebView no envían intents arbitrarios

Las aplicaciones pueden restringir los intents creados con Intent.parseUri para que solo se envíen como Implicit Intents a los componentes con filtros del intent BROWSABLE usando el siguiente código:

     // convert Intent scheme URL to Intent object
  Intent intent = Intent.parseUri(url);
  // forbid launching activities without BROWSABLE category
  intent.addCategory("android.intent.category.BROWSABLE");
  // forbid explicit call
  intent.setComponent(null);
  // forbid Intent with selector Intent
  intent.setSelector(null);
  // start the activity by the Intent
  view.getContext().startActivity(intent, -1);

Opción 2: Comprueba que los elementos WebView afectados no cargan contenido web que no es de confianza

Si un elemento WebView necesita analizar URL arbitrarias con esquemas intent://, asegúrate de que no cargue contenido web que no sea de confianza. El contenido web que no es de confianza puede incluir también contenido web que se carga a través de una conexión no cifrada. Los desarrolladores pueden asignar el valor "False" a android:usesCleartextTraffic en su archivo de manifiesto o establecer una configuración de seguridad de red que no permita el tráfico de HTTP. Además, pueden verificar que ningún elemento WebView afectado cargue URLs con esquemas HTTP a través de loadUrl.

Igualmente, los desarrolladores deben comprobar que los elementos WebView afectados no carguen URL no restringidas obtenidas de fuentes que no sean de confianza (p. ej., URL obtenidas de intents que no son de confianza). 

Queremos ayudarte
Si tienes alguna pregunta técnica sobre esta vulnerabilidad, puedes publicarla en Stack Overflow usando la etiqueta "android-security". Ponte en contacto con nuestro equipo de asistencia para desarrolladores si necesitas más información para resolver este problema.

¿Te ha resultado útil esta información?

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