Google menace de supprimer les applications dotées de services d'accessibilité du Play Store

Google envoie des e-mails avertissant les développeurs de ne pas utiliser les services d'accessibilité en dehors de l'usage prévu, sinon leurs applications seront supprimées du Play Store.

Mise à jour: LastPass vient de a répondu à cette nouvelle et déclare qu'il n'y aura « aucun impact immédiat » pour leurs applications Android. Reste à savoir si cela signifiera ou non que d’autres demandes bénéficieront de la clémence.

Certaines des applications les plus innovantes du Play Store reposent sur l’utilisation d’API d’une manière que Google n’avait jamais prévue. Il existe des applications qui peuvent remapper vos touches de volume pour sauter des morceaux de musique, enregistrer et lire des entrées tactiles sur des pages Web ou des jeux, et même fournir des touches de navigation alternatives afin que vous puissiez utiliser l'intégralité de votre appareil écran. Tous ces exemples que je viens de citer s'appuient sur les API d'accessibilité d'Android. Mais cela pourrait bientôt changement, car l'équipe du Google Play Store envoie des e-mails aux développeurs pour leur dire qu'ils peuvent

ne mettent plus en œuvre les services d'accessibilité à moins qu'ils ne suivent les directives de Google.


Qu'est-ce qu'un service d'accessibilité?

Pour comprendre pourquoi cela est important, nous devons d’abord expliquer ce qu’est l’accessibilité par rapport à Android. En général, l'accessibilité consiste à rendre une application Android plus accessible aux utilisateurs présentant certains handicaps, comme ceux qui sont malvoyants. Même s'il est dans l'intérêt de chaque développeur de rendre ses applications plus accessibles aux utilisateurs handicapés, il existe une classe spéciale d'applications conçues pour améliorer la convivialité de toutes les applications Android pour les utilisateurs avec handicapées. C’est ce qu’on appelle les services d’accessibilité.

Un service d'accessibilité, communément appelé a11y, est une application à laquelle le système peut transmettre certaines informations en fonction de ce qui événements le service d'accessibilité s'inscrit pour écouter. Une application qui souhaite implémenter un service d'accessibilité doit ajouter le android.permission.BIND_ACCESSIBILITY_SERVICE autorisation sur le fichier AndroidManifest afin que seul le système puisse se lier au service de l'application.

Par exemple, si un service d'accessibilité est conçu pour écouter TYPE_VIEW_CLICKED événements, ce service recevra des informations du système sur tous les boutons sur lesquels l'utilisateur pourrait appuyer. Un service d'accessibilité peut également réagir et consommer certains gestes et KeyEvents avant que d'autres applications ne les reçoivent. Enfin, un service d'accessibilité peut également injecter certains événements clés tels que le bouton retour, écran partagé ou applications récentes.

Ainsi, les services d'accessibilité peuvent être extrêmement puissant et utile. Plusieurs des applications innovantes les plus populaires du Google Play Store s'appuient sur a11y pour accomplir leurs tâches. Voici quelques-uns des quelques exemples qui me viennent à l’esprit :

  • Saisie automatique - intercepter les KeyEvents et effectuer des gestes de toucher/glisser
  • Mappeur de boutons - intercepter les KeyEvents et les remapper vers d'autres KeyEvents
  • Verdir - mettre automatiquement les applications en veille prolongée en les fermant de force avant que l'écran ne s'éteigne
  • Saisie+ - détecter quand l'application clavier est ouverte pour afficher le bouton d'action flottant
  • Dernier passage - analyser les pages pour les entrées de nom d'utilisateur/mot de passe (nécessaire avant Android Oreo)
  • Changez rapidement - envoyer KeyEvent pour le bouton retour
  • Tâcheur - détecter quand les applications sont ouvertes afin que vous puissiez effectuer n'importe quelle action définie par l'utilisateur
  • Tapez Machine - enregistrez toutes les saisies de texte afin de ne jamais perdre aucune saisie de texte

Aucune de ces applications n'est utilisée de la manière prévue par Google, c'est-à-dire pour aider les utilisateurs handicapés. Je parierais que la grande majorité des applications qui implémentent un service d'accessibilité le font pour des fonctions qui ne relèvent pas de la compétence de Google. Mais c'est là toute la beauté d'Android et des API comme l'accessibilité: Google ne restreint généralement pas ce que les développeurs peuvent et ne peuvent pas faire. Cette approche laxiste de l'utilisation des services d'accessibilité semble cependant changer, à mesure que Google Play L'équipe du magasin a envoyé des e-mails aux développeurs pour les avertir des changements à venir dans leur politique concernant a11y.


Que fait Google exactement?

La société informe les développeurs que si leur application utilise un service d'accessibilité pour une raison autre que l'assistance aux utilisateurs handicapés, ils doivent supprimer l'utilisation de cette autorisation dans les 30 jours, sinon leur application sera supprimée du Play Store. Le non-respect de cette exigence peut entraîner une infraction au compte Play Store d'un développeur, ce qui peut finalement conduire à la résiliation du compte.

Pour les quelques applications qui utilisent a11y pour aider les utilisateurs handicapés, Google déclare que ces développeurs il suffit d'ajouter une divulgation visible et destinée à l'utilisateur de la raison pour laquelle leur application a besoin du autorisation. Cependant, comme je l'ai mentionné précédemment, les services d'accessibilité sont utilisés beaucoup plus souvent dans des applications qui finiraient par enfreindre cette nouvelle politique.

Email complet envoyé aux développeurs

Salut les développeurs chez ****,

Nous vous contactons car votre application, ****, avec le nom de package **** demande le 'android.permission. BIND_ACCESSIBILITY_SERVICE.' Les applications demandant des services d'accessibilité ne doivent être utilisées que pour aider les utilisateurs handicapés à utiliser les appareils et applications Android. Votre application doit être conforme à nos Autorisations politique et les exigences de divulgation importante de notre Données d'utilisateur politique.

Action requise: Si vous ne l'avez pas déjà fait, vous devez expliquer aux utilisateurs comment votre application utilise le 'android.permission. BIND_ACCESSIBILITY_SERVICE' pour aider les utilisateurs handicapés à utiliser les appareils et applications Android. Les applications qui ne satisfont pas à cette exigence dans un délai de 30 jours pourront être supprimées de Google Play. Vous pouvez également supprimer toute demande de services d’accessibilité au sein de votre application. Vous pouvez également choisir de dépublier votre application.

Si vous devez apporter des modifications à vos applications, veuillez suivre ces étapes :

  • Lisez le Autorisations et Données d'utilisateur politiques pour plus de détails et assurez-vous que votre application est conforme à toutes les politiques répertoriées dans le Politiques du programme pour développeurs.
  • Si vous n'avez pas besoin de l'autorisation BIND_ACCESSIBILITY_SERVICE dans votre application ou si l'autorisation est utilisée à des fins autres que d'aider les utilisateurs handicapés à utiliser des appareils et des applications Android :
    1. Supprimez votre demande d'autorisation du manifeste de votre application.
    2. Connectez-vous à votre console Play et téléchargez votre APK modifié et conforme aux règles.
  • Ou, si vous avez besoin de l'autorisation BIND_ACCESSIBILITY_SERVICE dans votre application pour aider les utilisateurs handicapés à utiliser les appareils et applications Android :
    1. Incluez l'extrait suivant dans la description de la fiche Play Store de votre application: "Cette application utilise les services d'accessibilité."
    2. Fournissez une divulgation visible à l'utilisateur de cette utilisation avant de demander à l'utilisateur d'activer cette autorisation dans votre application. Votre divulgation doit répondre à chacune des exigences suivantes :
      • La divulgation doit être fournie via le Android: résumé et Android: description éléments de la classe AccessibilityServiceInfo
      • La divulgation doit décrire la fonctionnalité que l'autorisation du service d'accessibilité active pour votre application. Chaque fonctionnalité utilisée avec la demande de service d'accessibilité doit être déclarée dans votre déclaration avec justification.

Vous pouvez également choisir de dépublier l'application.

Toutes les violations sont suivies. Les violations graves ou répétées de toute nature entraîneront la résiliation de votre compte de développeur, ainsi qu'une enquête et une éventuelle résiliation des comptes Google associés.

Si vous avez examiné la politique et pensez que nous avons peut-être commis une erreur, veuillez contacter notre équipe de soutien aux politiques. Un de mes collègues vous répondra dans les 2 jours ouvrables.

Salutations,

L'équipe d'évaluation de Google Play

En savoir plus


Pourquoi Google supprime-t-il les services d'accessibilité du Play Store?

Bien que l'utilisation des services d'accessibilité soit connu pour causer un peu de décalage, la véritable raison pour laquelle Google commence à sévir contre ces applications est probablement liée au problème croissant des exploits qui profitent d'a11y. Bien que les applications que j'ai mentionnées ci-dessus utilisent toujours à des fins bénéfiques, elles peuvent facilement être exploitées par des développeurs malveillants à des fins néfastes. Par exemple, un service d'accessibilité peut être utilisé pour mettre en œuvre un enregistreur de frappe, une attaque de ransomware ou un exploit de phishing.

Les efforts de Google pour protéger les utilisateurs contre les services d'accessibilité malveillants ont principalement porté sur la divulgation. Actuellement, l'activation d'un service d'accessibilité qui s'inscrit à certains événements tels que TYPE_VIEW_TEXT_CHANGED entraînera une boîte de dialogue d'avertissement indiquant que l'application peut voler vos mots de passe. Vous pourriez penser qu’un tel message serait efficace pour empêcher les utilisateurs d’accorder des applications de manière irresponsable. Cependant, il existe de nombreux cas documentés d’applications incitant les utilisateurs à accorder A11Y. Certaines attaques vont encore plus loin, comme Exploit de cape et de poignard et Attaques de superposition de messages Toast qui incitent socialement l'utilisateur à accorder tout son pouvoir en déformant ce avec quoi il interagit à l'écran.

De telles attaques sont efficaces sur la grande majorité des appareils Android. Google a fait des progrès majeurs dans la prévention des attaques par superposition ou par message toast (comme on peut le voir dans AOSP si vous recherchez a11y), mais les choses en sont arrivées au point où Google a décidé qu'il valait mieux restreindre l'utilisation des services d'accessibilité entièrement. C'est logique, mais c'est vraiment nul car cette décision supprimera les fonctionnalités de nombreuses applications innovantes.


Que peuvent faire les développeurs?

Malheureusement, là les développeurs ne peuvent pas faire grand-chose en réponse à ces changements. Les développeurs peuvent soit se conformer aux exigences de Google en supprimant leur service d'accessibilité, soit faire face à la menace de suppression de leur application et éventuellement de résiliation de leur compte. Le simple fait d'ajouter une divulgation expliquant pourquoi leur application utilise a11y ne fonctionnerait que si leur application visait légitimement à aider les utilisateurs handicapés, ce qui ne décrit pas la plupart des applications utilisant actuellement a11y.

La refactorisation des applications pour ne plus utiliser un service d'accessibilité est possible pour certaines applications que nous avons mentionnées, mais pas toutes. Les gestionnaires de mots de passe tels que LastPass peuvent migrer vers le framework de remplissage automatique, mais uniquement si l'utilisateur utilise Android 8.0 Oreo et supérieur. Si une application utilise a11y pour surveiller l'ouverture d'autres applications, cette application peut être écrite avec un service d'interrogation à l'aide de l'API UsageStats. Des applications comme Tasker peuvent survivre à un tel changement. D'autres, comme Button Mapper et AutoInput, n'ont pas de chance: sans root, il n'y a pas de bon moyen d'intercepter les KeyEvents.

Même si nous reconnaissons le danger d'autoriser une application malveillante à accéder aux API d'accessibilité, il est dommage de voir certaines applications vraiment utiles être neutralisées par Google. Nous espérons que la politique exposée par Google sera inversée, ou qu'ils prétendront simplement qu'elle a été mal interprétée. Dans l’état actuel des choses, le libellé de l’e-mail est assez clair: respectez nos directives ou quittez le Play Store. C'est un sombre rappel que Google a tout le pouvoir sur les applications qui appartiennent au Play Store et qu'il peut vous couper l'herbe sous le pied à tout moment.


Mise à jour 1: documentation du développeur déroutante

Documents destinés aux développeurs de Google pour construire un service d'accessibilité semblent contredire cette nouvelle orientation de l’équipe du Google Play Store. La page a le libellé suivant au moment d’écrire ces lignes :

Un service d'accessibilité est une application qui fournit des améliorations à l'interface utilisateur pour aider les utilisateurs handicapés ou qui peuvent temporairement ne pas être en mesure d'interagir pleinement avec un appareil. Par exemple, les utilisateurs qui conduisent, s'occupent d'un jeune enfant ou assistent à une fête très bruyante peuvent avoir besoin d'un retour d'interface supplémentaire ou alternatif.

De plus, si vous comparez le libellé de la page à un version archivée de la page de juillet, vous constaterez que la note concernant la création de services d'accessibilité uniquement pour aider les utilisateurs handicapés n'existe pas.

Merci João Dias d'avoir contacté cette information.