Ces informations sont destinées aux développeurs dont les applications présentent une faille due à un PendingIntent implicite.
Que se passe-t-il ?
Une ou plusieurs de vos applications font appel à un PendingIntent implicite, ce qui peut entraîner des problèmes de sécurité comme un déni de service, un vol de données privées et une élévation des privilèges. Veuillez suivre les étapes détaillées ci-dessous pour résoudre le problème concernant votre application. L'emplacement des PendingIntents implicites utilisés dans votre application est indiqué dans la notification de la Play Console. Si un emplacement se termine par "(dans le code chargé dynamiquement)", il se trouve dans le code chargé de manière dynamique par l'application ou par les bibliothèques utilisées par l'application. Les applications utilisent généralement du code chargé de manière dynamique via la distribution de fonctionnalités à la demande, bien qu'il existe d'autres techniques non recommandées (certaines techniques non recommandées ne respectent pas le Règlement Google Play et ne doivent pas être utilisées). En outre, les empaqueteurs peuvent transformer le code d'application en code chargé de manière dynamique.
Nous vous recommandons de résoudre ce problème, mais ce n'est pas obligatoire. Sachez qu'il n'aura aucune conséquence sur l'état de publication de votre application.
Informations supplémentaires
Les applications Android utilisent les intents pour envoyer des messages entre différents composants. Les intents peuvent soit préciser le composant cible (intent explicite), soit indiquer une action générale. Dans ce cas, le système d'exploitation confie l'intent à n'importe quel composant de l'appareil dont le filtre d'intent correspond à cette action (intent implicite).
Un PendingIntent est un intent délégué à une autre application et qui sera traité ultérieurement. Créer un intent implicite encapsulé dans un PendingIntent représente une faille de sécurité qui peut provoquer un déni de service, un vol de données privées et une élévation des privilèges.
Étapes suivantes
1. Mettez à jour votre application et corrigez les alertes de type "PendingIntent implicite" en suivant les étapes indiquées ci-dessous.
Vérifiez si votre application contient un PendingIntent. Le code suivant crée par exemple un PendingIntent encapsulant un intent implicite :
// Créer un intent de base implicite et l'encapsuler dans un PendingIntent
Intent base = new Intent("ACTION_FOO");
base.setPackage("some_package");
PendingIntent pi = PendingIntent.getService(this, 0, base, 0);
Google recommande aux développeurs de corriger la faille en appliquant l'une des mesures suivantes (voire toutes, si possible) :
- Assurez-vous que les champs d'action, de package et de composant de l'intent de base sont définis.
- Assurez-vous que le PendingIntent n'est transféré qu'à des composants approuvés.
- Utilisez FLAG_IMMUTABLE (ajouté dans le SDK 23) pour créer des PendingIntents. Cela empêche les applications qui reçoivent le PendingIntent de compléter des propriétés non renseignées. Si l'application fonctionne également sur des appareils exécutant le SDK 22 ou une version antérieure, nous recommandons aux développeurs d'appliquer les options précédentes tout en renforçant la création de PendingIntents à l'aide du modèle suivant :
if (android.os.Build.VERSION.SDK_INT >= 23) {
// Créer un PendingIntent en utilisant FLAG_IMMUTABLE
} else {
// Code existant qui crée un PendingIntent
}
2. Envoyez votre APK mis à jour.
Pour envoyer un APK ou un app bundle mis à jour, procédez comme suit :
- Accédez à la Play Console.
- Sélectionnez l'application.
- Accédez à l'explorateur d'app bundle.
- Sélectionnez la version non conforme de l'application pour l'APK/app bundle dans le menu déroulant situé en haut à droite, puis notez les releases concernées.
- Accédez au canal qui pose problème. Il s'agit de l'une des quatre pages suivantes : Interne/Fermé/Test ouvert ou Production.
- En haut à droite de la page, cliquez sur Créer une release. Vous devrez peut-être d'abord cliquer sur "Gérer le canal".
- Si la release contenant l'APK non conforme est à l'état de brouillon, supprimez-la.
- Ajoutez la version conforme des app bundles ou des APK.
- Assurez-vous que la version non conforme des app bundles ou des APK figure dans la section Non inclus de cette release. Pour en savoir plus, consultez la section "App bundles et APK non inclus" de cet article d'aide de la Play Console.
- Pour enregistrer les modifications apportées à votre release, sélectionnez Enregistrer.
- Une fois la préparation terminée, sélectionnez Examiner la release.
Si l'APK non conforme est publié sur plusieurs canaux, répétez les étapes 5 à 9 pour chaque canal.
Pendant ce temps, votre nouvelle application ou mise à jour d'application sera associée à l'état En cours d'examen jusqu'à ce que votre demande soit examinée. Si l'application n'a pas été mise à jour correctement, le message d'avertissement reste affiché.Si l'application n'a pas été mise à jour correctement, le message d'avertissement restera affiché.
Nous sommes là pour vous aider
Si vous avez des questions techniques sur cette faille, vous pouvez publier un message sur le site Stack Overflow en utilisant le tag "android-security". Si vous souhaitez obtenir des éclaircissements sur la procédure à suivre pour résoudre ce problème, vous pouvez contacter notre équipe d'assistance.