Une faille de sécurité potentielle dans l'API Autofill d'Android Oreo permet aux gestionnaires de mots de passe de divulguer des données telles que des mots de passe, des adresses ou des cartes de crédit.
Remplissage automatique est l'une des nouvelles fonctionnalités les plus importantes et les plus médiatisées introduites avec la sortie d'Android 8.0 Oreo. De nombreuses applications de gestion de mots de passe, comme LastPass, ont déjà implémenté cette nouvelle API dans leurs applications. Et même si cela peut s'avérer être une sacrée amélioration par rapport aux précédentes implémentations de remplissage automatique utilisant les services d'accessibilité, il existe une faille de sécurité potentielle à prendre en compte. Le mois dernier, un livre blanc a été publié sur GitHub, documentant une faille inhérente à l'API Android Oreo Autofill qui pourrait conduire potentiellement à ce que votre gestionnaire de mots de passe divulgue plus de données personnelles que ce pour quoi vous lui avez donné l'autorisation
. Nous allons faire un bref aperçu du livre blanc rédigé par Mark Murphy (mieux connu sous le nom de CommonsWare) et publié sur sa page GitHub le 8 août 2017.Faille potentielle de fuite de données dans l'API de remplissage automatique d'Android Oreo
Comment fonctionne la faille ?
L'implémentation du remplissage automatique dans Android Nougat (et les versions inférieures) et dans les navigateurs comme Google Chrome est quelque chose de très simple. Habituellement, les applications de gestion de mots de passe utilisent les services d'accessibilité pour analyser le contenu de l'écran à la recherche d'une boîte de connexion et recommander le remplissage automatique des données en fonction de ce qu'elles trouvent. Même si cela fonctionnait, pourrait entraîner un retard considérable.
Sur Android Oreo, cela fonctionne un peu différemment, car les applications de mot de passe sont désormais officiellement prises en charge avec l'API Autofill. Les applications de mot de passe tierces ne nécessitent plus de services d'accessibilité, car elles peuvent désormais remplir le rôle d'un service de saisie automatique, communiquant avec les applications via Autofill Framework. Lorsque l'utilisateur se concentre sur un widget, le système regroupera certaines informations sur ce widget/formulaire et les enverra à l'application de remplissage automatique. L'application renvoie ensuite les données de saisie automatique pertinentes telles que les mots de passe, les e-mails, les cartes de crédit ou tout autre type de données sensibles. Le système Android joue le rôle d'intermédiaire entre l'application stockant les données et celle qui les demande.
Cependant, les applications malveillantes ou les logiciels malveillants peuvent en réalité profiter de la fonction de remplissage automatique pour obtenir plus de données pour elles-mêmes. Une activité malveillante peut demander que des données de remplissage automatique supplémentaires soient saisies avec un widget invisible ou masqué. Tandis que l'utilisateur accepte de remplir l'un des widgets visibles, comme un formulaire de connexion ou quelque chose de similaire, le widget invisible obtient également des données supplémentaires sans que vous les voyiez. Cela peut être très dangereux si les informations divulguées sont votre mot de passe, votre adresse ou les détails de votre carte de crédit !
Les captures d'écran ci-dessus présentent une application de test malveillante tirant parti de cette faille de sécurité.
La réponse de Google au problème
Selon CommonsWare, ce problème de sécurité n'a pas encore de solution publique publiée par Google. Cependant, nous savons que Google est conscient du problème. CommonsWare indique que les ingénieurs de Google ont reconnu que le problème existait dans un rapport de suivi des problèmes privé, mais qu'il serait difficile (voire impossible) de le patcher ou déployer un correctif.
Mais cela ne veut pas dire que la saisie automatique est totalement dangereuse à utiliser, car Google adopte une autre approche pour garantir la sécurité des données. La société est faire pression pour que les services de remplissage automatique gèrent le problème de leur côté et à ce titre, tente de sensibiliser les développeurs afin qu'ils améliorent leurs fournisseurs de remplissage automatique et les rendent plus sûrs. Que propose-t-on exactement ?
Tout d'abord, les fournisseurs de saisie automatique devraient partitionner leurs données. Au lieu de conserver toutes les données de saisie automatique dans un seul pool, les développeurs doivent diviser les données utilisateur stockées dans des partitions. Par exemple, une partition adresse/téléphone, une partition carte de crédit, une partition mot de passe/nom d'utilisateur, etc. Le service de remplissage automatique ne doit restituer les données d'une partition à la fois qu'en fonction du widget ciblé. C'est l'un des pages accessibles au public sur les applications de remplissage automatique qui se protègent des fuites de données vers des widgets invisibles.
Selon les ingénieurs de Google, les développeurs de gestionnaires de mots de passe devraient également faire d'autres choses. Par exemple, le fournisseur de saisie automatique ne doit restituer les données qu’à l’application spécifique qui les a fournies en premier lieu. Cela doit être fait en vérifiant le nom du package et la signature publique de l'application afin que même un APK modifié ne puisse pas y accéder. L'autre chose serait que les applications de remplissage automatique nécessitent une authentification avant de fournir les données, avec cette activité d'authentification informant l'utilisateur du type de données qui seront fournies à l'application qui la demande. Ce conseil comporte en réalité de nombreuses erreurs, la plus importante étant que ces conseils ne sont pas réellement appliqués par Google.
Gardez à l'esprit que bon nombre des propositions ci-dessus proviennent du rapport de suivi des problèmes privé de CommonsWare, et non d'une page de documentation officielle de Google. Pour une analyse plus détaillée et plus technique de la manière dont les applications qui utilisent l'API de remplissage automatique peuvent se protéger contre ce type d'attaque, nous vous recommandons fortement de lire le livre blanc complet par CommonsWare.
Quelles applications sont à l’abri de cette faille ?
Nous avons contacté les développeurs de 1Password, Enpass et LastPass au sujet de cette vulnérabilité, et les équipes de sécurité derrière ces 3 applications ont revendiqué qu'ils sont sécurisé, même si nous n'avons pas encore vérifié ces affirmations.
Comme nous pouvons le voir dans les déclarations ci-dessus, 1Password exige l'authentification de l'utilisateur avant de remplir les données, l'informant également des données qui seront renseignées au préalable. Cela aide également à résoudre le problème du remplissage silencieux, puisqu'une fenêtre contextuelle d'authentification apparaîtra pour chaque activité demandant des données de remplissage automatique.
Enpass ne révélera jamais l'intégralité du trousseau à l'application demandeuse, qu'elle soit malveillante ou authentique. Seuls les éléments enregistrés correspondant au nom du package de l'application demandeuse seront présentés à l'utilisateur. Ils ont également confirmé qu'ils mettraient en place davantage de mesures suite aux conseils de Google.
De plus, LastPass nous a confirmé que, même s'ils n'étaient pas au courant du problème avant la sortie d'Android Oreo, leur application utilise partitionnement des données pour protéger les utilisateurs, ainsi que d'autres contrôles pour garantir que LastPass ne remplit que l'application associée à l'entrée.
Bien qu'il ne devrait y avoir absolument aucun problème avec ces 3 applications, si vous souhaitez rester complètement en clair, vous devez désactiver remplissage automatique complet sur votre téléphone jusqu'à ce que vous puissiez confirmer auprès du développeur de votre gestionnaire de mots de passe que son application est à l'abri de cette ligne de attaque. Heureusement, cela peut être fait facilement en allant dans Paramètres > Système > Langues et saisie > Avancé et en recherchant la préférence « Service de remplissage automatique », en appuyant dessus et en sélectionnant « Aucun ».
Comme nous l'avons dit ci-dessus, on ne sait pas si Google peut réellement proposer un correctif à ce problème. Utiliser des applications fiables ou simplement désactiver la fonctionnalité est donc le seul moyen de rester en sécurité. Si vous souhaitez en savoir plus sur ce problème et tous les détails qui y sont associés, vous devriez lire l'original. livre blanc le documentant sur GitHub.
Cet article a été mis à jour le 13/09/17 pour refléter plus précisément l'implication des réponses de LastPass, Enpass et 1Password.