Solución para la vulnerabilidad de PendingIntent implícito

Esta información está dirigida a desarrolladores cuyas apps contengan la vulnerabilidad de PendingIntent implícito.

Novedades

Una o más de tus apps tienen un problema de PendingIntent implícito que puede provocar amenazas de seguridad en forma de denegación del servicio, robo de datos privados y elevación de privilegios. Revisa los pasos detallados que aparecen a continuación para solucionar el problema.  Puedes encontrar las ubicaciones de los usos de PendingIntent implícito en tu app en la notificación de Play Console de la app. Si una ubicación termina con "(en código cargado de forma dinámica)", quiere decir que está en código cargado dinámicamente por la app o por las bibliotecas que esta usa. Por lo general, las apps usan código cargado de forma dinámica mediante la entrega de funciones on demand, aunque existen otras técnicas no recomendadas (algunas de las cuales también incumplen la política de Google Play y no deben utilizarse). Además, los empaquetadores pueden transformar el código de la aplicación en código cargado de forma dinámica.

Se recomienda solucionar este problema, pero no es obligatorio. El estado de publicación de tu app no se verá afectado por la presencia de este inconveniente.

Detalles adicionales

Las apps para Android envían mensajes entre componentes mediante intents, los cuales pueden especificar el componente de destino (intent explícito) o indicar una acción general y dejar que el sistema operativo entregue el intent a cualquier componente del dispositivo que registre un filtro de intents que coincida con esa acción (intent implícito).

Los PendingIntents son intents que se delegan a otra app para que los entregue más adelante. La creación de un intent implícito unido en un PendingIntent es una vulnerabilidad de seguridad que podría provocar denegación del servicio, robo de datos privados y elevación de privilegios. 

Próximos pasos

1. Actualiza la app y corrige las alertas de "PendingIntent implícito" mediante los pasos que se destacan a continuación.

Revisa tu app para detectar la ubicación donde se creó un PendingIntent. Por ejemplo, el siguiente código crea un PendingIntent que une un intent implícito: 

// Crea un intent implícito de base y se une en un PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

Google recomienda que los desarrolladores solucionen la vulnerabilidad mediante la aplicación de cualquiera de las siguientes opciones (o todas):

  • Asegurarse de que estén configurados los campos de acción, paquete y componente del intent de base 
  • Garantizar que el PendingIntent se entregue únicamente a componentes de confianza 
  • Usar FLAG_IMMUTABLE (disponible en el SDK 23) para crear PendingIntents (lo cual previene que las apps que reciben el PendingIntent completen propiedades que no se propagaron); si la app también se ejecuta en dispositivos con SDK 22 o versiones anteriores, recomendamos a los desarrolladores aplicar las opciones anteriores y fortalecer la creación de PendingIntent con el siguiente patrón:

if (android.os.Build.VERSION.SDK_INT >= 23) {

  // Crea un PendingIntent con FLAG_IMMUTABLE

} else {

  // Código existente que crea un PendingIntent

}

2. Envía el APK actualizado

Para enviar un paquete de aplicación o APK actualizado, haz lo siguiente:

  1. Accede a Play Console.
  2. Selecciona la app.
  3. Ve al explorador de paquete de aplicación.
  4. Selecciona la compilación de la app correspondiente al paquete de aplicación o APK que no cumple con las políticas en el menú desplegable de la parte superior derecha y toma nota de las versiones en las que se encuentra.
  5. Ve al segmento que tiene el problema de incumplimiento de políticas. Este corresponderá a una de estas 4 páginas: Prueba interna, Prueba cerrada, Prueba abierta o Producción.
  6. Cerca de la parte superior derecha de la página, haz clic en Crear una versión nueva. (Es posible que primero debas hacer clic en Administrar segmento).
    • Si la versión que tiene el APK con el incumplimiento se encuentra en estado de borrador, descártala.
  7. Agrega la compilación de los paquetes de aplicaciones o APK que cumpla con las políticas.
    • Asegúrate de que la compilación de los paquetes de aplicaciones o APK que no cumple con las políticas esté en la sección No incluidos de esta versión. Para obtener más orientación, consulta la sección "No incluidos (paquetes de aplicaciones y APKs)" de este artículo de ayuda de Play Console.
  8. Para guardar los cambios que realices en la versión, selecciona Guardar.
  9. Cuando hayas terminado de prepararla, selecciona Revisar la versión.

Si el APK que no cumple con las políticas se lanzó en múltiples segmentos, repite los pasos 5 a 9 en cada uno de ellos.

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

Estamos aquí para ayudarte

Si tienes preguntas técnicas sobre la vulnerabilidad, puedes publicarlas 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 al cliente.

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