SafetyNet explicou: por que o Android Pay e outros aplicativos não funcionam em dispositivos enraizados

enraizando telefone android

Fazer o root em seu dispositivo Android dá acesso a uma variedade maior de aplicativos e um acesso mais profundo ao sistema Android. Mas alguns aplicativos – como o Android Pay do Google – não funcionam em um dispositivo com acesso root.

O Google usa algo chamado SafetyNet para detectar se o seu dispositivo está enraizado ou não e bloqueia o acesso a esses recursos. O Google também não é o único – muitos aplicativos de terceiros também não funcionam em dispositivos Android com root , embora possam verificar a presença de root de outras maneiras.

SafetyNet: Como o Google sabe que você enraizou seu telefone Android

RELACIONADOS: Cansado de ter seu cartão de crédito roubado? Use Apple Pay ou Android Pay

Os dispositivos Android oferecem uma “ API SafetyNet, que faz parte da camada Google Play Services instalada em dispositivos Android aprovados pelo Google. Esta API “fornece acesso aos serviços do Google que ajudam a avaliar a saúde e a segurança de um dispositivo Android”, de acordo com o Google. Se você for um desenvolvedor Android, pode chamar esta API em seu aplicativo para verificar se o dispositivo em que você está executando foi adulterado.

Esta API SafetyNet foi projetada para verificar se um dispositivo foi adulterado – se foi feito root por um usuário, se está executando uma ROM personalizada ou se foi infectado com malware de baixo nível, por exemplo.

Os dispositivos que vêm com a Play Store do Google e outros aplicativos instalados devem passar no “Compatibility Test Suite” do Google para Android. Fazer o root de um dispositivo ou instalar uma ROM personalizada impede que um dispositivo seja “compatível com CTS”. É assim que a API SafetyNet pode saber se você está com acesso root – ela apenas verifica a compatibilidade do CTS. Da mesma forma, se você adquirir um dispositivo Android que nunca veio com os aplicativos do Google – como um daqueles tablets de US $ 20 enviados diretamente de uma fábrica na China – ele não será considerado “compatível com CTS” de forma alguma, mesmo se você não o tiver feito root .

Recomendado:  "Isso deve ter sido antes do meu tempo"

Para obter essas informações, o Google Play Services baixa um programa denominado “snet” e o executa em segundo plano no seu dispositivo. O programa coleta dados do seu dispositivo e os envia ao Google regularmente. O Google usa essas informações para vários fins, desde obter uma imagem do ecossistema Android mais amplo até determinar se o software do seu dispositivo foi adulterado ou não. O Google não explica exatamente o que o snet está procurando, mas é provável que o snet verifique se a partição do sistema foi modificada do estado de fábrica.

Você pode verificar o status SafetyNet do seu dispositivo baixando um aplicativo como SafetyNet Helper Sample ou SafetyNet Playground . O aplicativo perguntará ao serviço SafetyNet do Google sobre o status do seu dispositivo e informará a resposta que obtém do servidor do Google.

Para obter mais detalhes técnicos, leia esta postagem do blog escrita por John Kozyrakis, estrategista técnico da Cigital, uma empresa de segurança de software. Ele pesquisou SafetyNet e explicou mais sobre como funciona.

Depende do aplicativo

SafetyNet é opcional para desenvolvedores de aplicativos, e os desenvolvedores de aplicativos podem optar por usá-lo ou não. SafetyNet impede que um aplicativo funcione se o desenvolvedor de um aplicativo não quiser que ele funcione em dispositivos com acesso root.

A maioria dos aplicativos nem verifica a API SafetyNet. Mesmo um aplicativo que verifica a API SafetyNet – como os aplicativos de teste acima – não para de funcionar se receber uma resposta ruim. O desenvolvedor do aplicativo deve verificar a API SafetyNet e fazer o aplicativo se recusar a funcionar se descobrir que o software do seu dispositivo foi modificado. O próprio app Android Pay do Google é um bom exemplo disso em ação.

O Android Pay não funciona em dispositivos enraizados

A solução de pagamento móvel Android Pay do Google não funciona em dispositivos Android com acesso root. Tente iniciá-lo e você verá apenas uma mensagem dizendo “O Android Pay não pode ser usado. O Google não conseguiu verificar se o seu dispositivo ou software executado nele é compatível com o Android. ”

Recomendado:  Como medir mais do que etapas usando o aplicativo de saúde do iPhone

Não se trata apenas de fazer o root, é claro – rodar uma ROM customizada também colocaria você em conflito com este requisito. A API SafetyNet alegará que não é “compatível com Android” se você estiver usando uma ROM personalizada com a qual o dispositivo não veio.

Lembre-se de que isso não detecta apenas o enraizamento. Se seu dispositivo foi infectado por algum malware no nível do sistema com a capacidade de espionar o Android Pay e outros aplicativos, a API SafetyNet também impediria o funcionamento do Android Pay, o que é uma coisa boa.

Fazer o root no seu dispositivo quebra o modelo normal de segurança do Android. O Android Pay normalmente protege seus dados de pagamento usando os recursos de sandbox do Android, mas os aplicativos podem sair da sandbox em um dispositivo com acesso root . O Google não tem como saber se o Android Pay seria seguro em um dispositivo específico se ele tivesse acesso root ou executasse uma ROM personalizada desconhecida, então eles o bloqueiam. Um engenheiro do Android Pay explicou o problema no fórum de desenvolvedores do XDA  se você estiver curioso para ler mais.

Outras maneiras de os apps podem detectar o root

SafetyNet é apenas uma maneira de um aplicativo verificar se está sendo executado em um dispositivo com acesso root. Por exemplo, os dispositivos Samsung incluem um sistema de segurança denominado KNOX. Se você fizer o root em seu dispositivo, a segurança KNOX será interrompida. Samsung Pay, o próprio aplicativo de pagamentos móveis da Samsung, se recusará a funcionar em dispositivos com acesso root. A Samsung está usando o KNOX para isso, mas também poderia usar o SafetyNet.

Da mesma forma, muitos aplicativos de terceiros bloquearão você de usá-los, e nem todos eles usam SafetyNet. Eles podem apenas verificar a presença de aplicativos e processos raiz conhecidos em um dispositivo.

É difícil encontrar uma lista atualizada de aplicativos que não funcionam quando um dispositivo está conectado. No entanto, o RootCloak fornece várias listas . Essas listas podem estar desatualizadas, mas são as melhores que podemos encontrar. Muitos são aplicativos bancários e outros aplicativos de carteira móvel, que bloqueiam o acesso em telefones com acesso root em uma tentativa de proteger suas informações bancárias de serem capturadas por outros aplicativos. Os aplicativos para serviços de streaming de vídeo também podem se recusar a funcionar em um dispositivo com acesso root como uma espécie de medida de DRM, tentando evitar que você grave um stream de vídeo protegido.

Recomendado:  Como desativar notificações do “Facebook Live”

Alguns aplicativos podem ser enganados

O Google está jogando um jogo de gato e rato com o SafetyNet, atualizando-o constantemente na tentativa de ficar à frente das pessoas que o contornam. Por exemplo, o desenvolvedor Android Chainfire criou um novo método de fazer o root de dispositivos Android sem modificar a partição do sistema, conhecido como “root sem sistema”. SafetyNet inicialmente não detectou tais dispositivos como adulterados, e o Android Pay funcionou – mas SafetyNet foi eventualmente atualizado para detectar este novo método de root. Isso significa que o Android Pay não funciona mais  com o root sem sistema.

Dependendo de como um aplicativo verifica o acesso root, você pode enganá-lo. Por exemplo, há métodos relatados para fazer o root em alguns dispositivos Samsung sem desarmar a segurança KNOX, o que permitiria que você continuasse usando o Samsung Pay.

No caso de aplicativos que apenas verificam se há aplicativos raiz em seu sistema, há um  módulo do Xposed Framework chamado RootCloak  que supostamente permite que você os engane para que funcionem de qualquer maneira. Isso funciona com aplicativos como DirecTV GenieGo, Best Buy CinemaNow e Movies by Flixster, que normalmente não funcionam em dispositivos com acesso root. No entanto, se esses aplicativos fossem atualizados para usar o SafetyNet do Google, eles não seriam tão fáceis de enganar desta forma.


A maioria dos aplicativos continuará funcionando normalmente depois que você fizer o root em seu dispositivo. Os aplicativos de pagamento móvel são a grande exceção, assim como alguns outros aplicativos bancários e financeiros. Os serviços de streaming de vídeo pagos às vezes também tentam impedir que você assista a seus vídeos.

Se um aplicativo de que você precisa não funciona em seu dispositivo com acesso root, você sempre pode desenraizá-lo para usá-lo. O aplicativo deve funcionar depois que você retornar seu dispositivo ao estado seguro de fábrica.

Crédito da imagem: Danny Choo no Flickr