SafetyNet explicou por que o Android Pay e outros aplicativos não funcionam em dispositivos enraizados
Enraizamento seu dispositivo Android dá acesso a uma maior variedade 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 raiz.
O Google usa algo chamado SafetyNet para detectar se seu dispositivo está com raiz ou não e bloqueia o acesso a esses recursos. O Google 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 formas.
SafetyNet: como o Google sabe que você enraizou o seu telefone Android
Os dispositivos Android oferecem uma "SafetyNet API", que faz parte da camada do Google Play Services instalada em dispositivos Android aprovados pelo Google. Essa API "fornece acesso aos serviços do Google que ajudam você a avaliar a saúde e a segurança de um dispositivo Android", segundo o Google. Se você é um desenvolvedor do Android, pode chamar essa API no seu aplicativo para verificar se o dispositivo em que você está executando foi adulterado.
Esta SafetyNet API foi projetada para verificar se um dispositivo foi adulterado - quer esteja enraizado por um usuário, esteja executando uma ROM personalizada ou tenha sido infectado por malwares de baixo nível, por exemplo.
Os dispositivos fornecidos com a Play Store do Google e outros aplicativos instalados devem ser aprovados no "Pacote de testes de compatibilidade" do Google Android. Enraizar um dispositivo ou instalar uma ROM personalizada impede que um dispositivo seja “Compatível com CTS”. É assim que a API do SafetyNet pode dizer se você está enraizado - apenas verifica a compatibilidade com o CTS. Da mesma forma, se você receber um dispositivo Android que nunca veio com os aplicativos do Google, como um desses tablets de US $ 20 enviados diretamente de uma fábrica na China, ele não será considerado "compatível com CTS", mesmo que não tenha sido implantado.
Para obter essas informações, o Google Play Services faz o download de um programa chamado "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 diversas finalidades, 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 ele recebe do servidor do Google.
Para obter mais detalhes técnicos, leia este post no blog escrito por John Kozyrakis, estrategista técnico da Cigital, uma empresa de segurança de software. Ele entrou na SafetyNet e explica mais sobre como funciona.
É até o aplicativo
O SafetyNet é opcional para desenvolvedores de aplicativos e os desenvolvedores de aplicativos podem optar por usá-lo ou não. A SafetyNet apenas impede que um aplicativo funcione se o desenvolvedor de um aplicativo não quiser que ele funcione em dispositivos com raiz.
A maioria dos aplicativos não verifica a API do SafetyNet. Até mesmo um aplicativo que verifica a API da SafetyNet, como os aplicativos de teste acima, não parará de funcionar se receber uma resposta ruim. O desenvolvedor do aplicativo tem que verificar a API SafetyNet e fazer com que o aplicativo se recuse a funcionar se descobrir que o software do seu dispositivo foi modificado. O 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 do Google Pay para Android não funciona em dispositivos Android com raiz. Tente iniciá-lo e você verá uma mensagem dizendo que "O Android Pay não pode ser usado. O Google não consegue verificar se o seu dispositivo ou o software em execução é compatível com Android. ”
Não é apenas sobre o enraizamento, é claro, executar uma ROM personalizada também o colocaria em conflito com esse requisito. A SafetyNet API irá alegar que não é "compatível com Android" se você estiver usando uma ROM personalizada que o dispositivo não veio com.
Lembre-se, isso não apenas detecta o enraizamento. Se o seu dispositivo foi infectado por algum malware ao nível do sistema com a capacidade de espiar o Android Pay e outras aplicações, a API do SafetyNet também impediria o funcionamento do Android Pay, o que é positivo.
Enraizamento do seu dispositivo quebra o modelo de segurança normal do Android. O Android Pay normalmente protege seus dados de pagamento usando os recursos de sandbox do Android, mas os aplicativos podem sair do sandbox em um dispositivo com raiz. O Google não tem como saber o nível de segurança do Android Pay em um determinado dispositivo se ele estiver enraizado ou executando uma ROM personalizada desconhecida e, portanto, bloqueá-lo. Um engenheiro do Android Pay explicou o problema no fórum XDA Developers se você tiver curiosidade de ler mais.
Outros aplicativos de maneiras podem detectar a raiz
A SafetyNet é apenas uma maneira de um aplicativo verificar se está sendo executado em um dispositivo com raiz. Por exemplo, os dispositivos da Samsung incluem um sistema de segurança chamado KNOX. Se você torcer o seu dispositivo, a segurança KNOX está desarmada. O Samsung Pay, aplicativo de pagamentos móveis da própria Samsung, se recusará a funcionar em dispositivos com root. A Samsung está usando o KNOX para isso, mas também pode usar o SafetyNet.
Da mesma forma, muitos aplicativos de terceiros irão impedi-lo de usá-los, e nem todos eles usam o SafetyNet. Eles podem apenas verificar a presença de aplicativos e processos de raiz conhecidos em um dispositivo.
É difícil encontrar uma lista atualizada de aplicativos que não funcionam quando um dispositivo está enraizado. 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 a telefones enraizados na tentativa de proteger suas informações bancárias de serem capturadas por outros aplicativos. Aplicativos para serviços de streaming de vídeo também podem se recusar a funcionar em um dispositivo com raiz como uma medida de DRM, tentando impedir que você grave um fluxo de vídeo protegido.
Alguns aplicativos podem ser enganados
O Google está jogando um jogo de gato e rato com a SafetyNet, constantemente atualizando-o na tentativa de ficar à frente das pessoas que o rodeiam. Por exemplo, o desenvolvedor do Android Chainfire criou um novo método para explorar dispositivos Android sem modificar a partição do sistema, conhecida como "raiz sem sistema". A SafetyNet inicialmente não detectou esses dispositivos como sendo violados, e o Android Pay funcionou, mas a SafetyNet acabou sendo atualizada para detectar esse novo método de root. Isso significa que o Android Pay não funciona mais com raiz sem sistema.
Dependendo de como um aplicativo verifica o acesso root, você pode enganá-lo. Por exemplo, há métodos para enraizar alguns dispositivos Samsung sem tropeçar na segurança KNOX, o que permitiria que você continuasse usando o Samsung Pay..
No caso de aplicativos que apenas verificam aplicativos raiz em seu sistema, há um módulo do Xposed Framework chamado RootCloak que supostamente permite que você faça com que eles 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 raiz. No entanto, se esses aplicativos foram atualizados para usar o SafetyNet do Google, eles não seriam tão fáceis de enganar dessa maneira.
A maioria dos aplicativos continuará funcionando normalmente depois que você enraizar seu dispositivo. Os aplicativos de pagamento móvel são a grande exceção, assim como outros aplicativos bancários e financeiros. Por vezes, os serviços pagos de transmissão de vídeo tentam impedi-lo de ver os vídeos deles também.
Se um aplicativo que você precisa não funcionar no seu dispositivo com raiz, você sempre poderá desatribuir o dispositivo para usá-lo. O aplicativo deve funcionar depois que você devolver o dispositivo ao estado de fábrica seguro.
Crédito de imagem: Danny Choo no Flickr