15Jul

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

Rooting seu dispositivo Android oferece 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 rooteado.

O Google usa algo chamado SafetyNet para detectar se seu dispositivo está rooteado 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 funcionarão em dispositivos Android rooteados, embora possam verificar a presença de root de outras maneiras.

SafetyNet: como o Google sabe que você rouizou o seu telefone Android Os dispositivos Android

oferecem uma "API SafetyNet", que faz parte da camada do Google Play Services instalada em dispositivos Android aprovados pelo Google. Esta API "fornece acesso aos serviços do Google que o ajudam a avaliar a segurança e a segurança de um dispositivo Android", de acordo com o Google. Se você é um desenvolvedor Android, você pode chamar essa 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 - seja ele rooteado por um usuário, está executando uma ROM personalizada ou foi infectado com malware de baixo nível, por exemplo.

Os dispositivos que enviam com o Google Play Store e outros aplicativos instalados devem passar no Android do Android "Compatibility Test Suite".Enraizar um dispositivo ou instalar uma ROM personalizada impede que um dispositivo seja "compatível com CTS".É assim que a API SafetyNet pode dizer se você está rooteado - ele apenas verifica a compatibilidade CTS.Da mesma forma, se você receber um dispositivo Android que nunca veio com os aplicativos do Google - como um desses comprimidos de US $ 20 enviados diretamente de uma fábrica na China - não será considerado "compatível com CTS", mesmo que você não tenha rooteado.

Para obter essa informação, o Google Play Services baixa um programa chamado "snet" e o executa em segundo plano em seu dispositivo. O programa coleta dados do seu dispositivo e o envia para o Google regularmente. O Google usa essas informações para uma variedade de propósitos, de obter uma imagem do ecossistema Android mais amplo para determinar se o software do seu dispositivo foi ou não adulterado. 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 do SafetyNet do seu dispositivo baixando um aplicativo como exemplo SafetyNet Helper ou SafetyNet Playground. O aplicativo irá perguntar ao serviço SafetyNet do Google sobre o status do seu dispositivo e dizer-lhe a resposta obtida do servidor do Google.

Para mais detalhes técnicos, leia esta postagem no blog escrita por John Kozyrakis, um estrategista técnico da Cigital, uma empresa de segurança de software. Ele cavou na SafetyNet e explica mais sobre como funciona.

É compatível com o aplicativo

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

A maioria dos aplicativos não verificará a API da SafetyNet. Mesmo um aplicativo que verifique a API SafetyNet - como os aplicativos de teste acima - não parará de funcionar se eles receberem uma resposta ruim. O desenvolvedor do aplicativo tem que verificar a API SafetyNet e fazer o aplicativo se recusar a funcionar se descobre que o software do seu dispositivo foi modificado. O próprio aplicativo Android Pay do Google é um bom exemplo disso em ação.

O Android Pay não funcionará em dispositivos rooteados

A solução de pagamento móvel do Android Pay do Google não funciona de forma alguma em dispositivos Android rooteados. Tente iniciar, e você verá apenas uma mensagem dizendo "o Android Pay não pode ser usado. O Google não consegue verificar se o seu dispositivo ou o software que está sendo executado é compatível com Android. "

Não é apenas sobre o rooteamento, é claro - executar uma ROM personalizada também o afronta com esse requisito. A API SafetyNet afirmará que não é compatível com Android se você estiver usando uma ROM personalizada, o dispositivo não veio.

Lembre-se, isso não apenas detecta enraizamentos. Se o seu dispositivo foi infectado por algum malware no nível do sistema com a habilidade de espionar o Android Pay e outros aplicativos, a API SafetyNet também evitaria que o Android Pay funcionasse, o que é bom.

Rooting seu dispositivo quebra o modelo de segurança normal do Android. O Android Pay normalmente protege seus dados de pagamento usando os recursos de sandboxing do Android, mas os aplicativos podem sair da caixa de proteção em um dispositivo rooteado. O Google não tem como saber o quão seguro o Android Pay seria em um dispositivo específico se ele estiver rooteado ou executando uma ROM personalizada desconhecida, então eles o bloqueiam. Um engenheiro Android Pay explicou o problema no fórum XDA Developers se tiver curiosidade em ler mais.

Outras aplicações de maneiras podem detectar raiz

O SafetyNet é apenas uma maneira de um aplicativo poder verificar se ele está sendo executado em um dispositivo rooteado. Por exemplo, os dispositivos Samsung incluem um sistema de segurança chamado KNOX.Se você root seu dispositivo, a segurança KNOX é tropeçada. O Samsung Pay, o próprio aplicativo de pagamentos de celular da Samsung, se recusará a funcionar em dispositivos rooteados. A Samsung está usando KNOX para isso, mas também pode usar o SafetyNet.

Da mesma forma, muitos aplicativos de terceiros o impedirão de usá-los e nem todos eles usam o 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á enraizado. No entanto, o RootCloak fornece várias listas. Essas listas podem ser desatualizadas, mas elas são as melhores que podemos encontrar. Muitos são bancários e outros aplicativos de carteira móvel, que bloqueiam o acesso em telefones rooteados na tentativa de proteger suas informações bancárias de serem capturadas por outros aplicativos. As aplicações para serviços de transmissão de vídeo também podem se recusar a funcionar em um dispositivo rooteado como uma espécie de medida DRM, tentando evitar que você grave um fluxo de vídeo protegido.

Algumas aplicações podem ser enganadas

O Google está jogando um jogo de gato e mouse com a SafetyNet, constantemente atualizando isso na tentativa de ficar à frente das pessoas que estão por aí.Por exemplo, o desenvolvedor Android Chainfire criou um novo método de rooteamento de dispositivos Android sem modificar a partição do sistema, conhecida como "raiz sem sistema".A SafetyNet inicialmente não detectou tais dispositivos como sendo adulterada e o Android Pay funcionou - mas o SafetyNet foi atualizado para detectar esse novo método de rooteamento. Isso significa que o Android Pay não funciona mais com a raiz sem sistema.

Dependendo de como um aplicativo verifica o acesso à raiz, você poderá enganá-lo. Por exemplo, existem métodos para raiz de alguns dispositivos Samsung sem tropeçar a segurança KNOX, o que permitiria que você continuasse usando o Samsung Pay.

No caso de aplicativos que apenas verifiquem os aplicativos raiz em seu sistema, existe um módulo Xposed Framework chamado RootCloak que, de qualquer forma, permite enganá-los ao trabalho de qualquer maneira. Isso funciona com aplicativos como DirecTV GenieGo, Best Buy CinemaNow e Filmes da Flixster, que normalmente não funcionam em dispositivos rooteados. 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 quando você rooteou 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 transmissão de vídeos pagos às vezes tentam impedir você de assistir seus vídeos também.

Se um aplicativo que você precisa não funcionar no seu dispositivo rooteado, você pode sempre desratizar seu dispositivo para usá-lo. O aplicativo deve funcionar depois de retornar seu dispositivo para seu estado de fábrica seguro.

Crédito da imagem: Danny Choo no Flickr