15Jul

SafetyNet expliqué: Pourquoi Android Pay et d'autres applications ne fonctionnent pas sur les appareils rootés

click fraud protection

L'enracinement de 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 fonctionnent pas du tout sur un appareil rooté.

Google utilise quelque chose appelé SafetyNet pour détecter si votre appareil est rooté ou non, et bloque l'accès à ces fonctionnalités. Google n'est pas le seul, non plus - beaucoup d'applications tierces ne fonctionneront pas non plus sur les appareils Android enracinés, bien qu'elles puissent vérifier la présence de root d'autres façons.

SafetyNet: Comment Google sait-il que vous avez enraciné votre téléphone Android?

Les appareils Android offrent une «API SafetyNet», qui fait partie de la couche Google Play Services installée sur les 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 l'appareil que vous utilisez a été falsifié.

instagram viewer

Cette API SafetyNet est conçue pour vérifier si un périphérique a été falsifié, qu'il ait été rooté par un utilisateur, qu'il exécute une ROM personnalisée ou qu'il ait été infecté par un logiciel malveillant de bas niveau, par exemple.

Les appareils livrés avec Google Play Store et d'autres applications doivent être compatibles avec la «Compatibility Test Suite» de Google. L'enracinement d'un périphérique ou l'installation d'une ROM personnalisée empêche un périphérique d'être compatible avec CTS.C'est ainsi que l'API SafetyNet peut déterminer si elle est ancrée: elle vérifie simplement la compatibilité CTS.De même, si vous obtenez un appareil Android qui n'est jamais venu avec les applications de Google - comme l'une de ces 20 $ expédiés directement d'une usine en Chine - il ne sera pas considéré comme "compatible CTS", même si vous ne l'avez pas.

Pour obtenir ces informations, Google Play Services télécharge un programme nommé "snet" et l'exécute 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, depuis l'obtention d'une image de l'écosystème Android au sens large jusqu'à la détermination de l'altération ou non du logiciel de votre appareil. Google n'explique pas exactement ce que recherche snet, mais il est probable que snet vérifie si votre partition système a été modifiée par rapport à l'état d'origine.

Vous pouvez vérifier le statut SafetyNet de votre appareil en téléchargeant une application comme SafetyNet Helper Sample ou SafetyNet Playground. L'application va demander au service SafetyNet de Google sur l'état de votre appareil et vous dire la réponse qu'il obtient du serveur de Google.

Pour plus de détails techniques, lisez ce billet écrit par John Kozyrakis, un stratège technique chez Cigital, une société de sécurité logicielle. Il a creusé dans SafetyNet et explique plus en détail comment cela fonctionne.

C'est jusqu'à l'application

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 le fonctionnement d'une application si le développeur d'une application ne souhaite pas qu'elle fonctionne sur les 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 - ne cessera pas de fonctionner si elle reçoit une mauvaise réponse. Le développeur de l'application doit vérifier l'API SafetyNet et empêcher l'application de fonctionner si elle apprend que le logiciel de votre appareil a été modifié.L'application Android Pay de Google en est un bon exemple.

Android Pay ne fonctionne pas sur les appareils rooté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 qui l'utilise est compatible avec Android. "

Il ne s'agit pas seulement de l'enracinement, bien sûr: l'exécution d'une ROM personnalisée vous mettrait également dans l'embarras. L'API SafetyNet prétend que ce n'est pas "compatible avec Android" si vous utilisez une ROM personnalisée avec laquelle l'appareil n'est pas fourni.

Rappelez-vous, cela ne détecte pas seulement l'enracinement. Si votre appareil était infecté par des logiciels malveillants au niveau du système et pouvait espionner Android Pay et d'autres applications, l'API SafetyNet empêcherait également Android Pay de fonctionner, ce qui est une bonne chose.

L'initialisation de votre appareil rompt le modèle de sécurité normal d'Android. Android Pay protège normalement vos données de paiement à l'aide des fonctionnalités de sandboxing d'Android, mais les applications peuvent sortir du sandbox sur un appareil rooté.Google n'a aucun moyen de savoir à quel point Android Pay serait sécurisé sur un appareil particulier s'il est rooté ou s'il exécute une ROM personnalisée inconnue, donc ils le bloquent. Un ingénieur Android Pay a expliqué le problème sur le forum XDA Developers si vous êtes curieux d'en savoir plus.

Autres moyens que les applications peuvent détecter Racine

SafetyNet est juste une façon dont une application peut vérifier si elle fonctionne sur un périphérique enraciné.Par exemple, les appareils Samsung comprennent un système de sécurité nommé KNOX.Si vous enracinez votre appareil, la sécurité KNOX est déclenchée. Samsung Pay, la propre application de paiement mobile de Samsung, refusera de fonctionner sur les 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 et de processus racines connus sur un périphérique.

Il est difficile de trouver une liste à jour des applications qui ne fonctionnent pas lorsqu'un appareil est rooté.Cependant, RootCloak fournit plusieurs listes. Ces listes peuvent être périmées, mais ce sont les meilleures que nous pouvons trouver. Beaucoup sont des applications bancaires et d'autres applications de portefeuille mobile, qui bloquent l'accès sur les téléphones enracinés dans le but de protéger vos informations bancaires d'être capturées par d'autres applications. Les applications pour les services de streaming vidéo peuvent également refuser de fonctionner sur un appareil enraciné comme une sorte de mesure DRM, en essayant de vous empêcher d'enregistrer un flux vidéo protégé.

Certaines applications peuvent être piratées

Google joue à un jeu de chat et de souris avec SafetyNet, en le mettant constamment à jour afin de rester en avance sur les gens qui le contourneront. Par exemple, le développeur Android Chainfire a créé une nouvelle méthode d'enracinement des appareils Android sans modifier la partition système, appelée «root sans système».Au départ, SafetyNet ne détectait pas que de tels appareils étaient falsifiés, et Android Pay a fonctionné, mais SafetyNet a finalement été mis à jour pour détecter cette nouvelle méthode d'enracinement. Cela signifie qu'Android Pay ne fonctionne plus avec une racine sans système.

Selon la façon dont une application vérifie l'accès root, vous pouvez être en mesure de 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 vérifient simplement les applications racines sur votre système, il existe un module Xposed Framework nommé RootCloak qui vous permet de les tromper de toute façon. Cela fonctionne avec des applications comme DirecTV GenieGo, Best Buy CinemaNow, et Movies par Flixster, qui ne fonctionnent normalement pas sur les appareils enracinés. Cependant, si ces applications étaient mises à jour pour utiliser SafetyNet de Google, elles ne seraient pas si faciles à tromper de cette manière.

La plupart des applications continueront à fonctionner normalement une fois que vous aurez rooté votre appareil. Les applications de paiement mobiles sont la grande exception, tout comme d'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 enraciné, vous pouvez toujours libérer votre appareil pour l'utiliser. L'application devrait fonctionner après que vous avez renvoyé votre appareil à son état d'usine sécurisé.

Crédit d'image: Danny Choo sur Flickr