Tapjacking

Catégorie OWASP : MASVS-PLATFORM : interaction avec la plate-forme

Présentation

Le tapjacking est l'équivalent du clickjacking, une faille Web, dans une application Android. Une application malveillante amène l'utilisateur à cliquer sur un contrôle de sécurité (bouton de confirmation, etc.) en utilisant une superposition, par exemple, pour masquer l'UI. Sur cette page, nous différencions deux variantes d'attaque : l'occlusion complète et l'occlusion partielle. En cas d'occlusion complète, le pirate masque la zone tactile, tandis que dans le cas d'une occlusion partielle, la zone tactile n'est pas masquée.

Impact

Les attaques par tapjacking sont utilisées pour inciter les utilisateurs à effectuer certaines actions. La conséquence dépend de l'action ciblée par le pirate informatique.

Risque : occlusion complète

En cas d'occlusion complète, le pirate informatique superpose la zone tactile pour pirater l'événement tactile :

Image d'occlusion complète

Stratégies d'atténuation

Pour éviter une occlusion totale, définissez View.setFilterTouchesWhenObscured(true) dans le code. Cela permet de bloquer les éléments touchés par une superposition. Si vous préférez une approche déclarative, vous pouvez également ajouter android:filterTouchesWhenObscured="true" dans le fichier de mise en page pour l'objet View que vous souhaitez protéger.


Risque : occlusion partielle

En cas d'occlusion partielle, la zone tactile n'est pas masquée :

Image d'occlusion partielle

Stratégies d'atténuation

Une occlusion partielle est réduite en ignorant manuellement les événements tactiles associés à l'option FLAG_WINDOW_IS_PARTIALLY_OBSCURED. Ce scénario ne fait l'objet d'aucune protection par défaut.

Mise en garde potentielle : ces stratégies d'atténuation peuvent interférer avec le comportement des applications neutres. Dans certains cas, il n'est pas possible de déployer ce correctif, car cela affecterait l'expérience utilisateur lorsque l'occlusion partielle est causée par une application bénigne.


Risques spécifiques

Cette section présente les risques qui nécessitent des stratégies d'atténuation non standards ou qui ont été atténués à certains niveaux du SDK et qui sont ici complets.

Risque : android.Manifest.permission.SYSTEM_ALERT_WINDOW

L'autorisation SYSTEM_ALERT_WINDOW permet à une application de créer une fenêtre superposée pour toutes les applications.

Stratégies d'atténuation

Les versions plus récentes d'Android ont introduit plusieurs mesures d'atténuation, notamment :

  • Sur Android 6 (niveau d'API 23) ou version ultérieure, les utilisateurs doivent explicitement autoriser l'application à créer une fenêtre de superposition.
  • Sur Android 12 (niveau d'API 31) ou version ultérieure, les applications peuvent transmettre true à Window.setHideOverlayWindows().

Risque : toast personnalisé

Un pirate informatique peut utiliser Toast.setView() pour personnaliser l'apparence d'un message de type toast. Sur Android 10 (niveau d'API 29) et versions antérieures, des applications malveillantes peuvent lancer de tels toasts en arrière-plan.

Stratégies d'atténuation

Si une application cible Android 11 (niveau d'API 30) ou une version ultérieure, le système bloque les toasts personnalisés en arrière-plan. Cependant, il est possible d'éviter cette limitation dans certains cas à l'aide d'un toast burst, dans lequel le pirate met plusieurs toasts en attente au premier plan, qui continuent de se lancer même une fois que l'application passe en arrière-plan.

Les attaques de toasts en arrière-plan et les toast bursts sont entièrement atténuées depuis Android 12 (niveau d'API 31).


Risque : sandwich d'activité

Si une application malveillante parvient à convaincre un utilisateur de l'ouvrir, elle peut toujours lancer une activité à partir de l'application victime, puis la superposer à sa propre activité, formant ainsi un sandwich d'activité, ce qui crée une attaque d'occlusion partielle.

Stratégies d'atténuation

Voir les stratégies d'atténuation contre une occlusion partielle. Pour une défense en profondeur, assurez-vous de ne pas exporter les activités qui n'ont pas besoin d'être exportées pour éviter qu'un pirate informatique ne les bloque.


Ressources