Comment Tapjacking a fait un retour avec Android Marshmallow - et personne n'a remarqué

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

Des applications malveillantes sont en mesure de détourner vos actions pour leur accorder une permission que vous n'avez jamais explicitement accordée. Voici comment fonctionne l'exploit.


Le retour du tapjacking

Imaginez que vous ouvriez Instagram et que vous essayiez de partager une photo que vous avez récemment prise pendant que vous étiez en vacances. Lorsque vous choisissez de parcourir votre galerie pour trouver une photo, Instagram vous demande de lui accorder la permission 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 ce cas, l'une des nombreuses applications qui teignent votre écran peut utiliser votre téléphone la nuit sans vous aveugler. Il s’agit du système de permissions Android fonctionnant comme prévu : pour accorder une permission sensible à une application, vous devez désactiver tout recouvrement d’écran existant sur votre appareil.

Marshmallow Permission Tapjacking. Appuyez sur «Autoriser» pour afficher tous mes contacts.

Les applications capables de dessiner sur votre écran peuvent éventuellement vous inciter à lui fournir des données sensibles. Par exemple, une superposition d'écran pourrait placer une fausse entrée de mot de passe sur un écran de connexion réel afin de collecter vos mots de passe. Un exploit comme celui-ci s'appelle 'tapjacking'. Il est apparu et a été patché sur diverses versions d'Android au fil des années, l'un des pires exemples ayant été conservé jusqu'à Android 4.0.3. Mais récemment, l'exploit a fait un retour avec le modèle d'autorisation d'exécution d'Android Marshmallow.

Un développeur du nom d'Iwo Banaś a créé une application illustrant 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ée affichera une superposition système recouvrant le bloc de texte de la boîte de dialogue d'autorisation avec le texte de votre choix. 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é masquée de la vue de l'utilisateur. Un tel exploit va totalement à l'encontre de l'objectif du système de permission d'Android Marshmallow, car l'introduction du nouveau modèle était censée garantir que les utilisateurs ne disposeraient que des autorisations auxquelles ils auraient explicitement consenti .

Maintenant, je sais à quoi tu penses. Si Android détectait une superposition système et m'empêchait d'octroyer des autorisations de stockage sur Instagram, cela n'empêcherait-il pas cet exploit de se produire? La réponse est non, il ressort de mes tests que sur certains périphériques affichant une incrustation de texte en plus d'une boîte de dialogue d'autorisation, le mécanisme de sécurité n'est pas déclenché. Le développeur de l'application de capture de validation de concept indique que l'exploit est efficace car il repose sur l'installation par l'utilisateur d'une application malveillante secondaire qui cible l'API de niveau 22 et inférieur (antérieure à Marshmallow). Cela est dû au fait qu'avant Android Marshmallow, toutes les applications se voient attribuer des autorisations lors de l'installation.

Donc, si vous utilisez Marshmallow, il vous suffit d'éviter d'installer des applications pour lesquelles vous ne faites pas confiance et qui demandent l'autorisation de créer 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 l’API de niveau 23 (Marshmallow) qui demandent l’autorisation de superposition constituent un risque potentiel.


Une lacune dans le modèle de permission?

Applications typiques utilisant des superpositions. Via: moyen

Si vous faites partie des millions de personnes qui utilisent Facebook Messenger pour dialoguer avec vos amis, alors vous êtes confronté à l'une des meilleures fonctionnalités d'Android: la possibilité pour les applications de s'afficher au-dessus des autres écrans. Comment est-il cool que vous pouvez avoir une bulle avec votre chat de groupe Facebook préféré suivre l'utilisateur au-dessus de toute application qu'ils ouvrent? Bien que le Messenger de Facebook ait introduit l'idée des «applications flottantes» dans le grand public, ce concept existe depuis un certain temps sur Android. Les applications peuvent créer des superpositions au-dessus de vos applications depuis un certain temps, grâce à l’existence de TYPE_SYSTEM_OVERLAY dans le WindowManager d’Android.

Menu de permission «Dessiner par-dessus 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 6.0. Les utilisateurs devraient désormais accorder des autorisations aux applications lorsqu'ils l'exécutaient réellement, ce qui inciterait probablement l'utilisateur moyen à protéger ses propres données privées d'applications qui demandaient de manière suspecte des autorisations apparemment sans rapport fonctionnel.

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

Google exige cela des développeurs car ils ont jugé l'autorisation particulièrement sensible.

Autorisations spéciales

Quelques autorisations ne se comportent pas comme des autorisations normales et dangereuses. SYSTEM_ALERT_WINDOW et WRITE_SETTINGS étant particulièrement sensibles, la plupart des applications ne doivent pas les utiliser. Si une application nécessite l'une de ces autorisations, elle doit l'indiquer 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 plus haut sur le détournement de tapis, cela a du sens. Mais voici la chose. Google ne suit même pas ses propres règles. Les captures d’écran de Facebook Messenger vous guident tout au long du processus d’accord de l’autorisation SYSTEM_ALERT_WINDOW que je vous ai montrée plus haut? Cela ne se produit que si vous installez l'APK de l'extérieur du Google Play Store. Si vous installez une application à partir du Google Play Store, l' autorisation SYSTEM_ALERT_WINDOW est automatiquement accordée.

Fichier manifeste de Facebook Messenger. L’application reçoit automatiquement l’autorisation de superposition malgré le ciblage de l’API de niveau 23.


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

Pendant longtemps avant Android Marshmallow, SYSTEM_ALERT_WINDOW était considéré comme une autorisation «dangereuse». Avec Android Marshmallow 6.0, l'autorisation a été modifiée en signature | system | appop, ce qui a initialement contraint les développeurs à amener l'utilisateur à l'écran des paramètres pour lui accorder l'autorisation. Mais avec la version 6.0.1 d'Android, SYSTEM_ALERT_WINDOW a été modifié pour que Google Play Store puisse accorder automatiquement l'autorisation sans avertir l'utilisateur. Pourquoi Google a fait ce changement n'est pas clair pour nous. Google eux-mêmes ne sont pas sortis et ont expliqué pourquoi ils ont apporté cette modification, ce qui est particulièrement étrange compte tenu du langage à propos de SYSTEM_ALERT_WINDOW qui existe toujours sur leurs pages Web.

Il est possible que suffisamment de développeurs aient été irrités par les modifications initiales apportées à SYSTEM_ALERT_WINDOW, obligeant les utilisateurs à octroyer manuellement l'autorisation que Google a annulée en mode silencieux et à accorder à toute application qui le demandait. Mais ce faisant, Google a sacrifié la sécurité pour plus de commodité . Il y a une raison pour laquelle Google a lui-même considéré l'autorisation comme étant dangereuse pendant très longtemps, car elle l'est. Et l’existence de l’exploit de détournement de permissions de Marshmallow est une preuve suffisante des dangers inhérents à l’octroi automatique de cette permission à n’importe quelle application.

Cet exploit de tapjacking n’a été porté à notre attention que récemment, bien qu’il existe depuis plusieurs mois. Lors de nos tests internes d'appareils parmi l'équipe du portail, nous avons confirmé que l'exploit fonctionnait sur de nombreux appareils modernes fonctionnant sous Android Marshmallow . Voici un aperçu des périphériques que nous avons testés, dotés des dernières versions logicielles disponibles pour chaque périphérique, et indiquant si l'exploit de détournement de tapis fonctionne ou non. Les appareils marqués «Vulnérable» sont susceptibles d'un exploit de type tapjacking, alors que les dispositifs marqués «Non vulnérable» sont capables de détecter une application affichant la superposition et de vous demander de la désactiver avant de continuer.

  • Nextbit Robin - Android 6.0.1 avec les correctifs de sécurité de juin - Vulnérable
  • Moto X Pure - Android 6.0 avec les 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 May - Vulnérable
  • OnePlus 2 - Android 6.0.1 avec les correctifs de sécurité de juin - Non vulnérable
  • Samsung Galaxy Note 7 - Android 6.0.1 avec les correctifs de sécurité de juillet - Non vulnérable
  • Google Nexus 6 - Android 6.0.1 avec les correctifs de sécurité d'août - Non vulnérable
  • Google Nexus 6P - Android 7.0 avec les correctifs de sécurité d'août - Non 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 lors de notre dernière discussion sur les mises à jour de sécurité Android, de nombreuses personnes ne s’exécutent pas sur les derniers correctifs de sécurité et sont donc probablement vulnérables à cet exploit et à d’autres exposés dans le Bulletin de sécurité Android.


Avancer

Tapjacking Service 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 fichiers APK du code source lié ci-dessus (vous pouvez également le faire vous-même) et les avons téléchargés sur AndroidFileHost. Afin de tester l'exploit, vous devez installer à la fois l'application principale de détournement de bande 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 vous cliquez sur «autoriser», une liste des contacts de votre appareil s'affiche, votre appareil est donc vulnérable au détournement de trafic. Ne vous inquiétez pas du fait que la zone de texte flottante ne couvre pas entièrement le dialogue des autorisations. Cette application de validation de concept n'a pas pour but de montrer parfaitement comment détourner proprement un dialogue d'autorisations, mais plutôt de prouver que c'est effectivement possible.

Nous espérons qu'un correctif est introduit pour corriger cet exploit sur tous les périphériques Marshmallow et que les OEM mettent à jour tous leurs périphériques avec le dernier correctif de sécurité. Comme la réalité est que cela prendra plusieurs mois pour que la plupart des appareils promis obtiennent Nougat. La seule façon pour la plupart des utilisateurs de rester à l'abri du danger consiste à installer les derniers correctifs de sécurité ou à obtenir eux-mêmes les autorisations des applications de surveillance. Mais avec la décision de Google d'accorder automatiquement l'autorisation potentiellement dangereuse SYSTEM_ALERT_WINDOW, de nombreux utilisateurs exécutent à leur insu des applications susceptibles de détourner leurs téléphones pour accorder de plus en plus d'autorisations dangereuses.