Task hijacking
Description
Une tรขche est un ensemble d'activitรฉs avec lesquelles les utilisateurs interagissent lorsqu'ils tentent d'effectuer quelque chose dans une application. Ces activitรฉs sont disposรฉes dans une pile appelรฉe back stack dans l'ordre dans lequel chaque activitรฉ est ouverte.
la back Stack fonctionne comme la mรฉthode ยซ Dernier entrรฉ, premier sorti ยป, grรขce ร laquelle les activitรฉs de la pile ne sont jamais rรฉorganisรฉes mais uniquement poussรฉes dans la pile lorsque l'activitรฉ en cours la dรฉmarre et sont supprimรฉes lorsque l'utilisateur la quitte ร l'aide du bouton Prรฉcรฉdent.
L'activitรฉ affichรฉe ร l'รฉcran est appelรฉe activitรฉ de premier plan et sa tรขche est appelรฉe tรขche de premier plan. ร la fois, une seule tรขche au premier plan est visible ร lโรฉcran.
Selon le modรจle de sรฉcuritรฉ Android, toutes les applications exรฉcutรฉes sur l'appareil seront isolรฉes et mises en sandbox les unes des autres, mais ce n'est pas le cas en ce qui concerne les tรขches. Android permet aux activitรฉs de diffรฉrentes applications de co-rรฉsider dans la mรชme tรขche, ce qui constitue la cause premiรจre de la vulnรฉrabilitรฉ.
Versions impactรฉes
L'attaque StandHogg s'applique ร tous les appareils Android < 11 (Niveaux d'API < 30)
L'attaque StandHogg 2.0 s'applique ร tous les appareils Android < 10 (Niveaux d'API < 29)
Les launch modes
Les modes de lancement sont des attributs d'activitรฉ spรฉcifiรฉs dans AndroidManifest.xml
(ou peuvent รชtre mentionnรฉs sous forme d'indicateurs dans l'appel de l'intent). Ils fournissent au systรจme dโexploitation sous-jacent des instructions sur la maniรจre dont lโactivitรฉ doit รชtre lancรฉe.
Il existe quatre modes de lancement diffรฉrents :
standard
singleTop
singleTask
singleInstance
Pour lโattaque dรฉcrite ici, nous nous intรฉressons principalement au mode ยซ singleTask ยป.
L'une des possibilitรฉs de l'activitรฉ ยซ singleTask ยป est qu'elle permet ร d'autres activitรฉs de faire partie de sa tรขche. Elle est toujours ร la base de sa tรขche, mais d'autres activitรฉs (nรฉcessairement des activitรฉs ยซ standards ยป et ยซ singleTop ยป) peuvent รชtre lancรฉes dans cette tรขche.
TaskAffinity est un attribut dรฉfini dans chaque balise du fichier AndroidManifest.xml. Il dรฉcrit la tรขche ร laquelle une activitรฉ prรฉfรจre se joindre. Par dรฉfaut, chaque activitรฉ a la mรชme affinitรฉ que le nom du package.
Reconnaissance
Afin de retrouver facilement les activitรฉs utilisant le mode de lancement ยซ singleTask ยป, on peut tout simplement effectuer une commande grep dans le fichier AndroidManifest.xml
ou simplement les lister manuellement.
Exploitation
Afin d'exploiter la vulnรฉrabilitรฉ, il suffit de crรฉer une application en dรฉfinissant l'attribut taskAffinity sur le package de l'application vulnรฉrable.
Exemple:
PoC video
Outils
TaskHijacker
TaskHijacker est un outil permettant de modifier un apk existant afin d'y incorporer l'attribut taskAffinity pour un package donnรฉ.
Exemple d'utilisation:
$ python3 taskhijacker.py -m com.target.xyz -a /path/to/templateApp.apk
ressource: https://github.com/mathis2001/taskHijacker
Derniรจre mise ร jour