SafetyNet a expliqué pourquoi Android Pay et d'autres applications ne fonctionnent pas sur les appareils enracinés
Enraciner votre appareil Android vous donne accès à une plus grande variété d'applications et à un accès plus profond au système Android. Mais certaines applications, comme Android Pay de Google, ne fonctionneront pas du tout sur un appareil enraciné.
Google utilise quelque chose appelé SafetyNet pour détecter si votre appareil est enraciné ou non, et bloque l'accès à ces fonctionnalités. Google n'est pas le seul, mais beaucoup d'applications tierces ne fonctionneront pas non plus sur les appareils Android rootés, bien qu'ils puissent vérifier la présence de root de différentes manières..
SafetyNet: Comment Google sait que vous avez installé votre téléphone Android
Les appareils Android offrent une «API SafetyNet», qui fait partie de la couche de services Google Play installée sur des appareils Android approuvés par Google. Cette API "fournit un accès aux services Google qui vous aident à évaluer la santé et la sécurité d'un appareil Android", selon Google. Si vous êtes un développeur Android, vous pouvez appeler cette API dans votre application pour vérifier si le périphérique sur lequel vous travaillez est altéré..
Cette API SafetyNet est conçue pour vérifier si un périphérique a été falsifié - par exemple, s'il a été rooté par un utilisateur, s'il exécute une ROM personnalisée ou s'il a été infecté par un malware de bas niveau.
Les appareils fournis avec le Play Store de Google et les autres applications installées doivent réussir la «suite de tests de compatibilité» de Google Android. L'enracinement d'un périphérique ou l'installation d'une ROM personnalisée empêche un périphérique d'être «compatible CTS». Voici comment l'API SafetyNet peut déterminer si vous êtes enraciné. Elle vérifie simplement la compatibilité CTS. De même, si vous possédez un appareil Android qui n'est jamais livré avec les applications de Google, comme l'une de ces tablettes à 20 dollars livrées directement d'une usine en Chine, il ne sera pas considéré comme «compatible CTS», même si vous ne l'avez pas encore enraciné..
Pour obtenir ces informations, les services Google Play téléchargent un programme appelé «snet» et l'exécutent en arrière-plan sur votre appareil. Le programme collecte les données de votre appareil et les envoie régulièrement à Google. Google utilise ces informations à des fins diverses, allant de la visualisation de l'écosystème Android au sens large, en passant par la détermination de la falsification ou non du logiciel de votre appareil. Google n'explique pas exactement ce que recherche snet, mais il vérifiera probablement si votre partition système a été modifiée depuis l'état d'usine..
Vous pouvez vérifier l'état de votre appareil SafetyNet en téléchargeant une application comme SafetyNet Helper Sample ou SafetyNet Playground. L'application interrogera le service SafetyNet de Google sur l'état de votre appareil et vous communiquera la réponse reçue du serveur de Google..
Pour plus de détails techniques, lisez cet article de blog écrit par John Kozyrakis, stratège technique chez Cigital, une entreprise de sécurité logicielle. Il a exploré SafetyNet et explique comment cela fonctionne..
C'est à l'App
SafetyNet est facultatif pour les développeurs d'applications, et les développeurs d'applications peuvent choisir de l'utiliser ou non. SafetyNet empêche uniquement une application de fonctionner si le développeur d'une application ne veut pas qu'elle fonctionne sur des appareils enracinés.
La plupart des applications ne vérifient pas du tout l'API SafetyNet. Même une application qui vérifie l'API SafetyNet, comme les applications de test ci-dessus, n'arrêtera pas de fonctionner si elle reçoit une mauvaise réponse. Le développeur de l'application doit vérifier l'API SafetyNet et faire en sorte que l'application refuse de fonctionner si elle apprend que le logiciel de votre appareil a été modifié. La propre application Android Pay de Google en est un bon exemple..
Android Pay ne fonctionnera pas sur les appareils enracinés
La solution de paiement mobile Android Pay de Google ne fonctionne pas du tout sur les appareils Android enracinés. Essayez de le lancer, et vous verrez juste un message disant «Android Pay ne peut pas être utilisé. Google n'est pas en mesure de vérifier que votre appareil ou le logiciel s'exécutant sur celui-ci est compatible avec Android. "
Il ne s'agit pas simplement d'enraciner, bien sûr, exécuter une ROM personnalisée vous mettrait également à l'encontre de cette exigence. L'API SafetyNet déclarera que ce n'est pas «compatible Android» si vous utilisez une ROM personnalisée avec laquelle l'appareil n'a pas été livré..
Rappelez-vous, cela ne détecte pas que l'enracinement. Si votre appareil était infecté par un logiciel malveillant au niveau du système avec la capacité d'espionner Android Pay et d'autres applications, l'API SafetyNet empêcherait également Android Pay de fonctionner, ce qui est une bonne chose..
L'enracinement de votre appareil casse le modèle de sécurité normal d'Android. Android Pay protège normalement vos données de paiement à l'aide des fonctions de bac à sable d'Android, mais les applications peuvent sortir du bac à sable sur un appareil enraciné. Google n'a aucun moyen de savoir dans quelle mesure Android Pay serait sécurisé sur un appareil particulier s'il est enraciné ou sur une ROM personnalisée inconnue. Ils le bloquent donc. Un ingénieur Android Pay a expliqué le problème sur le forum XDA Developers si vous souhaitez en savoir plus..
Autres façons dont les applications peuvent détecter la racine
SafetyNet n’est qu’un des moyens par lesquels une application peut vérifier si elle est exécutée sur un appareil enraciné. Par exemple, les appareils Samsung incluent un système de sécurité appelé KNOX. Si vous rootez votre appareil, la sécurité KNOX est déclenchée. Samsung Pay, la propre application de paiement mobile de Samsung, refusera de fonctionner sur des appareils enracinés. Samsung utilise KNOX pour cela, mais il pourrait tout aussi bien utiliser SafetyNet.
De même, de nombreuses applications tierces vous empêcheront de les utiliser, et toutes n’utilisent pas SafetyNet. Ils peuvent simplement vérifier la présence d'applications racine et de processus connus sur un appareil..
Il est difficile de trouver une liste à jour des applications qui ne fonctionnent pas lorsqu'un appareil est enraciné. Cependant, RootCloak fournit plusieurs listes. Ces listes sont peut-être obsolètes, mais ce sont les meilleures que nous puissions trouver. Beaucoup sont des applications bancaires et autres applications pour portefeuille, qui bloquent l'accès aux téléphones enracinés afin de protéger vos informations bancaires contre la capture par d'autres applications. Les applications pour services de streaming vidéo peuvent également refuser de fonctionner sur un appareil enraciné comme une sorte de mesure DRM, essayant de vous empêcher d'enregistrer un flux vidéo protégé.
Certaines applications peuvent être trompées
Google joue à un jeu de chats et de souris avec SafetyNet et le met à jour en permanence pour tenter de rester en avance sur les gens qui s'y aventurent. Par exemple, le développeur Android Chainfire a créé une nouvelle méthode d’enracinement des appareils Android sans modification de la partition système, appelée «racine sans système». Au départ, SafetyNet n'avait pas détecté d'altération de tels dispositifs et Android Pay fonctionnait, mais SafetyNet a finalement été mis à jour pour détecter cette nouvelle méthode d'enracinement. Cela signifie que Android Pay ne fonctionne plus avec la racine sans système..
Selon la manière dont une application vérifie l'accès root, vous pourrez peut-être vous tromper. Par exemple, il existe des méthodes pour rooter certains appareils Samsung sans déclencher la sécurité KNOX, ce qui vous permettrait de continuer à utiliser Samsung Pay.
Dans le cas d'applications qui ne recherchent que les applications racine sur votre système, il existe un module Xposed Framework nommé RootCloak qui vous permet apparemment de les inciter à travailler de toute façon. Cela fonctionne avec des applications telles que DirecTV GenieGo, Best Buy CinemaNow et Movies de Flixster, qui ne fonctionnent normalement pas sur des appareils enracinés. Cependant, si ces applications étaient mises à jour pour utiliser le réseau SafetyNet de Google, elles ne seraient pas si faciles à duper de cette façon..
La plupart des applications continueront à fonctionner normalement une fois que vous aurez enraciné votre appareil. Les applications de paiement mobile constituent la grande exception, de même que certaines autres applications bancaires et financières. Les services de streaming vidéo payants tentent parfois de vous empêcher de regarder leurs vidéos..
Si une application dont vous avez besoin ne fonctionne pas sur votre appareil rooté, vous pouvez toujours libérer votre appareil pour l'utiliser. L'application devrait fonctionner une fois que votre appareil est revenu à son état d'usine et sécurisé..
Crédit d'image: Danny Choo sur Flickr