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 :
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 :
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
Modifications apportées au règlement concernant le niveau d'API cible du Play Store
Redressement de l'UI et attaque Android basée sur les services d'accessibilité
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé
- android:exported
- # Gestion des clés {:#key-management}
- Exécuter le code DEX intégré directement à partir de l'APK