Cómo corregir la vulnerabilidad de la inyección de fragmento

Esta información está destinada a los desarrolladores de aplicaciones que utilicen una implementación no segura de las clases PreferenceActivity. Esto les hace vulnerables a la inyección de fragmento. Esta implementación puede permitir que una aplicación maliciosa externa cargue fragmentos que deben permanecer ocultos.

¿Qué va a cambiar?

El 1 de marzo del 2017, Google Play empezó a bloquear la publicación de aplicaciones y actualizaciones en las que las clases PreferenceActivity podían contener la vulnerabilidad de inyección de fragmento. 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 y corrige la vulnerabilidad.
  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

Siempre que sea posible, asigna el valor exported=false a la clase PreferenceActivity en el archivo de manifiesto. De esta forma, se impedirá que las aplicaciones externas envíen intents a esta clase.

Si la clase vulnerable PreferenceActivity se debe exportar a aplicaciones externas, determina la razón de vulnerabilidad de la clase y toma las medidas correspondientes. Hay dos posibilidades:

  1. Implementación de isValidFragment incorrecta:

Comprueba si la clase vulnerable contiene o hereda una implementación de isValidFragment que devuelve el valor true en todas las rutas de código. Si es así, actualiza la clase para consultar la lista de clases de fragmentos admitidas. Por ejemplo, si la clase PreferenceActivity debe permitir solo las clases MyFragment (y ningún otro fragmento), implemente una comprobación como la siguiente:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. targetSdkVersion es inferior a 19 y no implementa isValidFragment:

Si la aplicación asigna su targetSdkVersion en el archivo de manifiesto a un valor inferior a 19 y la clase vulnerable no contiene ninguna implementación de isValidFragment, significa que hereda la vulnerabilidad de PreferenceActivity.

Para solucionar el problema, los desarrolladores deben actualizar targetSdkVersion a 19 o a un valor más alto. De forma alternativa, si targetSdkVersion no se puede actualizar, los desarrolladores deben implementar isValidFragment tal como se describe en el apartado para consultar las clases de fragmentos admitidas (paso anterior).

Asimismo, las aplicaciones deben cumplir el Acuerdo de Distribución para Desarrolladores y la política de contenido

Queremos 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 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
17668598293486657127
true
Buscar en el Centro de ayuda
true
true
true
true
true
5016068
false
false