Le tapjacking a fait un retour dans Android Marshmallow et personne ne l'a remarqué

Certains appareils Marshmallow sont sensibles au tapjacking, où une application superpose du texte au-dessus d'une boîte de dialogue d'autorisation pour tromper l'utilisateur.

Alors que beaucoup d'entre nous salivent devant le nouveau Android Nougat pour les appareils Nexus, la grande majorité des utilisateurs utilisent toujours Android Marshmallow. Un exploit dont l'existence est documentée depuis au moins mi-2015 affecte toujours de nombreux appareils Android modernes.

Les applications malveillantes peuvent tapjack vos actions dans en leur accordant une autorisation que vous n’avez jamais explicitement accordée. Voici comment fonctionne l'exploit.


Le retour du tapjacking

Imaginez que vous ouvrez Instagram et essayez de partager une photo que vous avez récemment prise pendant que vous étiez en vacances. Lorsque vous choisissez de parcourir votre galerie à la recherche d'une photo, Instagram vous demande de lui accorder l'autorisation d'accéder à votre stockage. Mais lorsque vous appuyez sur « oui », vous recevez un message d'erreur.

Vous ne pouvez pas accorder l'autorisation de stockage pour Instagram car une superposition d'écran active est activée - dans dans ce cas, une des nombreuses applications qui teintent votre écran pour pouvoir utiliser votre téléphone la nuit sans vous aveugler toi-même. C'est un cas du système d'autorisations Android Travailler comme prévue: afin d'accorder à une application une autorisation sensible, vous devez désactiver toutes les superpositions d'écran que vous avez sur votre appareil.

Tapjacking d’autorisation de guimauve. Appuyez sur « Autoriser » pour afficher tous mes contacts.

Les applications capables de dessiner sur votre écran pourraient potentiellement vous inciter à lui fournir des données sensibles. Par exemple, une superposition d’écran pourrait placer un faux mot de passe au-dessus d’un véritable écran de connexion afin de collecter vos mots de passe. Un exploit comme celui-ci s'appelle 'tapjacking' et a été mis à jour et corrigé sur diverses versions d'Android au fil des ans, avec l'un des pires exemples jusqu'à Android 4.0.3. Mais récemment, l'exploit a fait son retour avec Modèle d'autorisation d'exécution d'Android Marshmallow.

Un développeur du nom de Iwo Banaś créé un application démontrant l'exploit. La façon dont cela fonctionne est assez simple: lorsqu'une application affiche une boîte de dialogue d'autorisation, l'application malveillante que vous avez installé affichera une superposition système pour couvrir le bloc de texte de la boîte de dialogue d'autorisation avec le texte qu'il contient veut. Un utilisateur involontaire qui clique sur « autoriser » dans la boîte de dialogue d'autorisation sera amené à accorder une autorisation qui lui a été demandée - mais pour laquelle la demande a été cachée à la vue de l'utilisateur. Un tel exploit va complètement à l'encontre de l'objectif du système d'autorisation d'Android Marshmallow, depuis l'introduction de le nouveau modèle était censé garantir que les utilisateurs n'obtiendraient que les autorisations pour lesquelles ils avaient explicitement consenti.

Maintenant, je sais à quoi tu penses. Si Android détectait une superposition système et m'empêchait d'accorder des autorisations de stockage à Instagram, cela n'empêcherait-il pas cet exploit de se produire? La réponse est non, lors de mes tests, il semble que sur certains appareils, l'affichage d'une superposition de texte au-dessus d'une boîte de dialogue d'autorisation ne déclenche pas le mécanisme de sécurité. Le développeur de l'application de preuve de concept de tapjacking déclare que l'exploit est efficace car il repose sur l'installation par l'utilisateur d'une application malveillante secondaire qui cible le niveau d'API 22 et inférieur (pré-Guimauve). Cela est dû au fait qu'avant Android Marshmallow, toutes les applications bénéficiaient d'autorisations lors de l'installation.

D'accord, donc si vous utilisez Marshmallow, tout ce que vous avez à faire est d'éviter d'installer des applications auxquelles vous ne faites pas confiance et qui demandent l'autorisation de dessiner une superposition, n'est-ce pas? Si le modèle d'autorisation d'Android fonctionnait comme prévu à l'origine, vous auriez raison. Mais depuis la découverte de cet exploit, même les applications ciblant le niveau d'API 23 (Guimauve) qui demandent l’autorisation de superposition constituent un risque potentiel.


Une lacune dans le modèle d’autorisation ?

Applications typiques utilisant des superpositions. Via: Moyen

Si vous faites partie des millions de personnes qui utilisent Facebook Messenger pour discuter avec vos amis, alors vous êtes tombé sur l'une des meilleures fonctionnalités d'Android: la possibilité pour les applications de s'appuyer sur d'autres écrans. Est-ce cool que vous puissiez avoir une bulle avec votre chat de groupe Facebook préféré pour suivre l'utilisateur au-dessus de n'importe quelle application qu'il ouvre? Bien que Messenger de Facebook ait introduit l'idée des « applications flottantes » dans le grand public, le concept existe depuis un certain temps sous Android. Les applications sont capables depuis un certain temps de créer des superpositions au-dessus de vos applications, grâce à l'existence de TYPE_SYSTEM_OVERLAY dans WindowManager d'Android.

Menu d'autorisation « Dessiner sur d'autres applications »

Avant Android Marshmallow, les applications devaient demander une autorisation appelée SYSTEM_ALERT_WINDOW lors de l’installation avant de pouvoir afficher des superpositions en haut de votre écran. Mais cela a changé avec l'introduction du modèle d'autorisation d'exécution granulaire de la version 6.0. Les utilisateurs devraient désormais accorder des autorisations aux applications lorsqu'ils exécutent réellement l'application, ce qui, espérons-le, stimulerait le taux moyen. l'utilisateur à protéger ses propres données privées contre les applications qui demandent de manière suspecte un fonctionnement apparemment sans rapport autorisations.

Cependant, SYSTEM_ALERT_WINDOW n'est pas comme les autres autorisations. Les développeurs ne peuvent pas afficher de boîte de dialogue pour demander par programme que l'autorisation soit accordée par l'utilisateur final, comme la plupart des autres autorisations sur toute application ciblant Marshmallow. Au lieu de cela, vous devez accéder manuellement à l'écran des paramètres et activer vous-même l'autorisation. Bien entendu, certaines applications telles que Facebook Messenger vous aideront tout au long du processus.

Google exige cela des développeurs car ils ont considéré que l'autorisation était "particulièrement sensible."

Autorisations spéciales

Il existe quelques autorisations qui ne se comportent pas comme des autorisations normales et dangereuses. SYSTEM_ALERT_WINDOW et WRITE_SETTINGS sont particulièrement sensibles, la plupart des applications ne devraient donc pas les utiliser. Si une application a besoin de l'une de ces autorisations, elle doit déclarer l'autorisation dans le manifeste et envoyer une intention demandant l'autorisation de l'utilisateur. Le système répond à l'intention en affichant un écran de gestion détaillé à l'utilisateur.

Compte tenu de ce que nous savons ci-dessus sur le tapjacking, cela est logique. Mais voici le problème. Google ne suit même pas ses propres règles. Les captures d'écran de Facebook Messenger vous guidant tout au long du processus d'octroi de l'autorisation SYSTEM_ALERT_WINDOW que je vous ai montré ci-dessus? Cela ne se produit que si vous installez l'APK en dehors du Google Play Store. Si vous installez une application depuis le Google Play Store, le L'autorisation SYSTEM_ALERT_WINDOW est automatiquement accordée.

Fichier manifeste de Facebook Messenger. L'application obtient automatiquement l'autorisation de superposition malgré le ciblage du niveau d'API 23.

Google a sacrifié la sécurité pour la commodité

Bien avant Android Marshmallow, SYSTEM_ALERT_WINDOW était considéré comme un "dangereux" autorisation. Avec Android Marshmallow 6.0, l'autorisation a été modifiée en signature|système|appop c'est ce qui obligeait initialement les développeurs à diriger l'utilisateur vers l'écran des paramètres pour accorder l'autorisation. Mais avec la version Android 6.0.1, SYSTEM_ALERT_WINDOW a été modifié pour que le Google Play Store pourrait accorder automatiquement l'autorisationsans en informer l'utilisateur. Nous ne savons pas pourquoi Google a effectué ce changement. Google lui-même n'a pas expliqué pourquoi il a effectué ce changement, ce qui est particulièrement étrange compte tenu du langage sur SYSTEM_ALERT_WINDOW qui existe toujours sur ses pages Web.

C'est possible que suffisamment de développeurs étaient en colère par les modifications initiales apportées à SYSTEM_ALERT_WINDOW qui obligeaient les utilisateurs à accorder manuellement l'autorisation que Google avait silencieusement cédée et l'avait simplement accordée à toute application qui la demandait. Mais ce faisant, Google a sacrifié la sécurité au profit de la commodité. Il y a une raison pour laquelle Google lui-même a considéré l'autorisation comme dangereuse pendant le plus longtemps, car c'est le cas. Et l’existence de l’exploit de détournement d’autorisation Marshmallow est une preuve suffisante des dangers inhérents à l’octroi automatique de cette autorisation à n’importe quelle application.

Cet exploit de tapjacking n’a été porté à notre attention que récemment, bien qu’il existe depuis plusieurs mois maintenant. Lors de nos tests internes d'appareils au sein de l'équipe du portail XDA, nous avons confirmé que l'exploit fonctionne sur de nombreux appareils modernes exécutant Android Marshmallow. Voici un aperçu rapide des appareils que nous avons testés sur les dernières versions logicielles disponibles pour chaque appareil respectif et si l'exploit de tapjacking fonctionne ou non. Les appareils marqués « Vulnérables » sont susceptibles d'être exploités par tapjacking, tandis que les appareils marqués « Non "Vulnérables" sont capables de détecter une application affichant la superposition et de vous demander de la désactiver avant continue.

  • Nextbit Robin - Android 6.0.1 avec les correctifs de sécurité de juin - Vulnérable
  • Moto X Pure - Android 6.0 avec correctifs de sécurité de mai - Vulnérable
  • Honor 8 - Android 6.0.1 avec les correctifs de sécurité de juillet - Vulnérable
  • Motorola G4 - Android 6.0.1 avec les correctifs de sécurité de mai - Vulnérable
  • OnePlus 2 - Android 6.0.1 avec les correctifs de sécurité de juin - Pas vulnérable
  • Samsung Galaxy Note 7 - Android 6.0.1 avec correctifs de sécurité de juillet - Pas vulnérable
  • Google Nexus 6 - Android 6.0.1 avec les correctifs de sécurité d'août - Pas vulnérable
  • Google Nexus 6P - Android 7.0 avec correctifs de sécurité d'août - Pas vulnérable

Jusqu’à présent, ce sont tous les appareils que j’ai pu faire tester à l’équipe. Je n'ai trouvé aucune corrélation entre la version du correctif de sécurité et l'exploit. Comme vous pouvez le constater grâce à notre dernière discussion concernant les mises à jour de sécurité Android, de toute façon, de nombreuses personnes n'utilisent pas les derniers correctifs de sécurité et sont donc potentiellement vulnérables à cet exploit et à d'autres qui sont décrits sur le Bulletin de sécurité Android.


Avancer

Le service Tapjacking a obtenu l'autorisation de superposition

Nous vous invitons à tester vous-même cet exploit sur votre appareil pour voir si vous êtes vulnérable.. Nous avons compilé les APK du code source lié ci-dessus (vous pouvez également le faire vous-même) et les avoir téléchargés sur AndroidFileHost. Afin de tester l'exploit, vous devez installer à la fois le application principale de tapjacking ainsi que son service d'assistance. Ensuite, lancez simplement l’application principale et cliquez sur le bouton « tester ». Si une zone de texte flotte au-dessus de la boîte de dialogue d'autorisation et que lorsque vous cliquez sur « Autoriser », une liste des contacts de votre appareil apparaît, alors votre appareil est vulnérable au tapjacking. Ne vous inquiétez pas du fait que la zone de texte flottante ne couvre pas entièrement la boîte de dialogue d'autorisation, cette application de preuve de concept n'est pas destiné à démontrer parfaitement comment détourner soigneusement une boîte de dialogue d'autorisations, mais plutôt à prouver que c'est bien le cas. possible.

Nous espérons qu'un correctif sera introduit pour corriger cet exploit sur tous les appareils Marshmallow et que les OEM mettront à jour tous leurs appareils avec le dernier correctif de sécurité. Parce que la réalité est qu'il faudra plusieurs mois pour que la plupart des appareils promis obtiennent du Nougat, donc le seul moyen pour la plupart Pour que les utilisateurs restent à l'abri du danger, il faut soit installer les derniers correctifs de sécurité, soit prendre les autorisations de l'application de surveillance. eux-mêmes. Mais avec la décision de Google d'accorder automatiquement l'autorisation potentiellement dangereuse SYSTEM_ALERT_WINDOW, de nombreux les utilisateurs exécutent sans le savoir des applications qui pourraient potentiellement pirater leurs téléphones pour accorder des autorisations de plus en plus dangereuses autorisations.