Solucionar una vulnerabilidad de PendingIntent implícito

Esta información va dirigida a desarrolladores de aplicaciones que tengan una vulnerabilidad de PendingIntent implícito.

¿Qué ocurre?

Una o varias de tus aplicaciones tienen un problema de PendingIntent implícito, lo que puede dar lugar a amenazas de seguridad como denegación de servicio, robo de datos privados y apropiación de privilegios. Sigue los pasos que se muestran a continuación para solucionar el problema en tus aplicaciones. Puedes consultar las ubicaciones de los usos de PendingIntent implícitos en tu aplicación en la notificación de Play Console de la aplicación. Si una ubicación termina con "(en código cargado de forma dinámica)", la ubicación se encuentra en el código cargado de forma dinámica por la aplicación o por las bibliotecas que utiliza la aplicación. Las aplicaciones suelen usar código cargado de forma dinámica mediante la entrega de funciones a la carta, aunque existen otras técnicas no recomendadas (también hay técnicas no recomendadas que infringen la política de Google Play y no deben usarse). Además, los empaquetadores pueden transformar el código de aplicación en código cargado de forma dinámica.

Aunque se recomienda solucionar este problema, no es obligatorio hacerlo. El estado de publicación de tu aplicación no se verá afectado por la presencia de este problema.

Detalles adicionales

Las aplicaciones Android envían mensajes entre componentes mediante intents. Los intents pueden especificar el componente de destino (intent explícito) o mostrar una acción general y permitir que el sistema operativo envíe el intent a cualquier componente del dispositivo que registre un filtro de intents coincidente con esa acción (intent implícito).

Los PendingIntents son intents que se delegan a otra aplicación para enviarlos más adelante. Al crear un intent implícito e incluirlo en un PendingIntent, se genera una vulnerabilidad de seguridad que podría posibilitar ataques de denegación de servicio, robo de datos privados y apropiación de privilegios

Siguientes pasos

1. Actualiza la aplicación y corrige las alertas de "PendingIntent implícito" siguiendo los pasos que se indican a continuación.

En tu aplicación, busca la ubicación donde se crea un PendingIntent. Por ejemplo, el siguiente código crea un PendingIntent que incluye un intent implícito: 

// Crea un intent implícito base e inclúyelo en un PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

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

Google recomienda a los desarrolladores que solucionen la vulnerabilidad adoptando cualquiera de las siguientes medidas (si se aplican todas, mejor):

  • Comprueba que se hayan establecido los campos de acción, paquete y componente de la intent base. 
  • Comprueba que la PendingIntent se envíe únicamente a componentes de confianza. 
  • Usa FLAG_IMMUTABLE (añadido en el SDK 23) para crear PendingIntents. De este modo, evitarás que las aplicaciones que reciban el PendingIntent rellenen propiedades vacías. Si la aplicación también se ejecuta en dispositivos con el SDK 22 o una versión anterior, recomendamos que los desarrolladores apliquen las opciones anteriores y refuercen la creación del PendingIntent con el siguiente patrón:

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

  // Crea un PendingIntent usando FLAG_IMMUTABLE

} else {

  // El código que crea un PendingIntent

}

2. Envía tu APK actualizado

Para enviar un app bundle o APK actualizado, sigue estos pasos:

  1. Accede a Play Console.
  2. Selecciona la aplicación.
  3. Accede al explorador de app bundles.
  4. En el menú desplegable de la parte superior derecha, selecciona la versión del APK o app bundle que no cumple los requisitos y, después, anota las versiones a las que corresponde o corresponden.
  5. Ve al canal que tiene el problema con las políticas. Será una de estas cuatro páginas: pruebas internas/cerradas/abiertas o producción.
  6. Cerca de la parte superior derecha de la página, haz clic en Crear nueva versión. Puede que primero tengas que hacer clic en Gestionar canal.
    • Si la versión del APK que no cumple las políticas es un borrador, descártala.
  7. Añade la versión (de los app bundles o APKs) que cumple las políticas.
    • Asegúrate de que la versión (de los app bundles o APKs) que no cumple los requisitos aparezca en la sección No incluido de esta versión. Para obtener más información, consulta la sección "No incluido" (app bundles y APKs) de este artículo de ayuda de Play Console.
  8. Para guardar los cambios que realices en tu versión, selecciona Guardar.
  9. Cuando hayas terminado de preparar la versión, selecciona Revisar versión.

Si el APK que no cumple las políticas se publica en varios canales, repite los pasos 5 a 9 en cada canal.

Durante este tiempo y hasta que se procese la solicitud, la aplicación nueva o la actualización de la aplicación estará en revisión. Si la aplicación no se ha actualizado correctamente, se seguirá mostrando la advertencia.

Estamos aquí para ayudarte

Si tienes alguna duda técnica sobre esta vulnerabilidad, puedes publicar tu pregunta en Stack Overflow con la etiqueta "android-security". Ponte en contacto con nuestro equipo de Asistencia si necesitas ayuda con los pasos que debes seguir para resolver este problema.

¿Te ha resultado útil esta información?

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