Android Task Hijacking
Last updated
Last updated
Groupe de sécurité Try Hard
Dans Android, une tâche est essentiellement un ensemble d'activités avec lesquelles les utilisateurs interagissent pour accomplir une tâche spécifique, organisées dans une pile arrière. Cette pile classe les activités en fonction de leur ouverture, l'activité la plus récente étant affichée en haut comme activité au premier plan. À tout moment, seule cette activité est visible à l'écran, faisant partie de la tâche au premier plan.
Voici un bref aperçu des transitions d'activité :
Activité 1 démarre comme seule activité au premier plan.
Le lancement de l'Activité 2 pousse l'Activité 1 dans la pile arrière, amenant l'Activité 2 au premier plan.
Le démarrage de l'Activité 3 déplace l'Activité 1 et l'Activité 2 plus loin dans la pile, l'Activité 3 étant maintenant en premier plan.
La fermeture de l'Activité 3 ramène l'Activité 2 au premier plan, mettant en valeur le mécanisme de navigation des tâches simplifié d'Android.
Dans les applications Android, l'affinité de tâche spécifie la tâche préférée d'une activité, correspondant généralement au nom du package de l'application. Cette configuration est essentielle pour créer une application de preuve de concept (PoC) démontrant l'attaque.
L'attribut launchMode
dirige la gestion des instances d'activité au sein des tâches. Le mode singleTask est essentiel pour cette attaque, dictant trois scénarios en fonction des instances d'activité existantes et des correspondances d'affinité de tâche. L'exploit repose sur la capacité de l'application d'un attaquant à imiter l'affinité de tâche de l'application cible, induisant en erreur le système Android pour lancer l'application de l'attaquant à la place de l'application cible prévue.
Installation de l'application malveillante : La victime installe l'application de l'attaquant sur son appareil.
Activation initiale : La victime ouvre d'abord l'application malveillante, préparant l'appareil pour l'attaque.
Tentative de lancement de l'application cible : La victime tente d'ouvrir l'application cible.
Exécution de détournement : En raison de l'affinité de tâche correspondante, l'application malveillante est lancée à la place de l'application cible.
Tromperie : L'application malveillante présente un faux écran de connexion ressemblant à l'application cible, trompant l'utilisateur pour qu'il saisisse des informations sensibles.
Pour une mise en œuvre pratique de cette attaque, consultez le dépôt Task Hijacking Strandhogg sur GitHub : Task Hijacking Strandhogg.
Pour prévenir de telles attaques, les développeurs peuvent définir taskAffinity
sur une chaîne vide et opter pour le mode de lancement singleInstance
, assurant l'isolation de leur application par rapport aux autres. Personnaliser la fonction onBackPressed()
offre une protection supplémentaire contre le détournement de tâche.
Groupe de sécurité Try Hard