O Google oferece um conjunto de APIs e serviços para ajudar você a detectar se o app está sendo executado em um ambiente seguro e confiável. O ponto central é a API Play Integrity, que ajuda a verificar se as interações são genuínas, detectando interações potencialmente arriscadas e fraudulentas. Além da integridade do app e do dispositivo, a API Play Integrity agora oferece informações sobre riscos de acesso e acessibilidade, o Google Play Protect e a atividade recente do dispositivo. Para reforçar ainda mais sua estratégia antifraude, a plataforma Android oferece APIs para cenários específicos que podem ser relevantes para seu app.
API Play Integrity
A API Play Integrity permite aprender sobre o estado de segurança do dispositivo em que o app está sendo executado. Assim, você tem certeza de que o usuário certo está acessando informações sensíveis.
Ele ajuda a verificar se as interações e solicitações do servidor vêm do binário genuíno do app em um ambiente confiável:
- Binário genuíno do app: determina se você está interagindo com o binário não modificado reconhecido pelo Google Play.
- Instalação genuína do Play: determina se a conta do usuário atual é licenciada, o que significa que o usuário instalou ou pagou pelo app ou jogo no Google Play.
- Dispositivo Android genuíno: determina se o app está sendo executado em um dispositivo Android genuíno com a tecnologia do Google Play Services.
- Sem malware conhecido: determina se o Google Play Protect está ativado e se encontrou apps de risco ou perigosos instalados no dispositivo.
- Baixo risco de acesso de outros apps: determine se outros apps estão em execução que podem capturar a tela ou controlar o dispositivo e as entradas do seu app.
Como isso ajuda a reduzir fraudes
Quando um usuário realiza uma ação importante no app, você pode chamar a API Play Integrity. Caso contrário, o servidor de back-end do app poderá decidir o que fazer para se defender contra ataques e fraudes. Por exemplo, é possível exigir mais verificação do usuário ou negar acesso a recursos confidenciais.
Risco de acesso ao app
O indicador Risco de acesso a apps foi introduzido para ajudar a avaliar se outros apps em um dispositivo podem visualizar e capturar a tela quando o app está em execução ou acessando o app usando permissões de acessibilidade. Os apps de acessibilidade verificados são excluídos automaticamente desses vereditos. O indicador de risco de acesso ajuda os desenvolvedores a proteger os apps e, ao mesmo tempo, preservar a privacidade do usuário, porque o app solicitante não recebe a identidade dos apps instalados e o veredito não está vinculado a identificadores de usuário ou dispositivo.
Graças a essa iniciativa colaborativa, conseguimos os indicadores necessários para fornecer insights mais detalhados e proteger nossos clientes de forma mais eficaz.
— Nubank, parceiro de acesso antecipado
O App Access Risk tem diferentes níveis de risco:
- Uma resposta de captura significa que outros apps que podem capturar a tela estão em execução.
- Uma resposta de controle significa que outros apps estão em execução e podem controlar o dispositivo e, portanto, podem capturar a tela e controlar as entradas no seu app.
O indicador de risco de acesso a apps já está disponível na versão Beta pública e será disponibilizado para todos os usuários nos próximos meses.
Aplicação da restrição de risco de acesso a apps
Identifique ações sensíveis ou de alto valor no app ou jogo para proteger com a API Play Integrity em vez de negar o acesso imediatamente. Sempre que possível, conteste o tráfego arriscado antes de permitir ações de alto valor. Por exemplo, quando o risco de acesso indicar que um app que pode capturar a tela está em execução, peça para o usuário desativar ou desinstalar apps que conseguem fazer isso antes de permitir que ele prossiga para a funcionalidade que você quer proteger.
Esta tabela contém alguns exemplos de vereditos:
Exemplo de resposta para o veredito de risco de acesso a apps | Interpretação |
---|---|
appsDetected: ["KNOWN_INSTALLED"]
|
Existem apenas apps instalados que são reconhecidos pelo Google Play ou pré-carregados na partição do sistema pelo fabricante do dispositivo. Não há apps em execução que resultariam na captura, controle ou sobreposição de vereditos. |
appsDetected: ["KNOWN_INSTALLED", "UNKNOWN_INSTALLED", "UNKNOWN_CAPTURING"]
|
Há apps instalados pelo Google Play ou pré-carregados na partição do sistema pelo fabricante do dispositivo. Há outros apps em execução com permissões ativadas que podem ser usadas para visualizar a tela ou capturar outras entradas e saídas. |
appsDetected: ["KNOWN_INSTALLED", "KNOWN_CAPTURING", "UNKNOWN_INSTALLED", "UNKNOWN_CONTROLLING"]
|
Há execução do Google Play ou do sistema com permissões ativadas que podem ser usadas para visualizar a tela ou capturar outras entradas e saídas. Há também outros apps em execução com permissões ativadas que podem ser usadas para controlar o dispositivo e controlar diretamente as entradas no seu app. |
appAccessRiskVerdict: {}
|
O indicador de risco de acesso a apps não foi avaliado porque um requisito necessário está ausente. Por exemplo, o dispositivo não era confiável o suficiente. |
Sinal do Play Protect
O sinal do Play Protect informa ao app se o serviço está ativado e se encontrou apps nocivos conhecidos instalados no dispositivo.
environmentDetails:{
playProtectVerdict: "NO_ISSUES"
}
Se o malware for uma preocupação específica para o app ou os dados dos usuários, confira esse veredito e peça aos usuários que ativem o Play Protect ou removam apps prejudiciais antes de continuar.
O playProtectVerdict
pode ter um destes valores:
Veredito | Explicação | Ação recomendada |
---|---|---|
|
O Play Protect está ativado e não encontrou problemas de apps no dispositivo. |
O Play Protect está ativado e não encontrou problemas. Por isso, nenhuma ação do usuário é necessária. |
|
O Play Protect está ativado, mas nenhuma verificação foi realizada ainda. O dispositivo ou o app Play Store pode ter sido redefinido recentemente. |
O Play Protect está ativado e não encontrou problemas. Por isso, nenhuma ação do usuário é necessária. |
|
O Play Protect está desativado. |
O Play Protect está ativado e não encontrou problemas. Por isso, nenhuma ação do usuário é necessária. |
|
O Play Protect está ativado e encontrou apps potencialmente nocivos instalados no dispositivo. |
Dependendo da sua tolerância a riscos, você pode pedir que o usuário inicie o Play Protect e tome medidas em relação aos avisos dele. Se o usuário não puder atender a esses requisitos, você poderá bloqueá-lo na ação do servidor. |
|
O Play Protect está ativado e encontrou apps perigosos instalados no dispositivo. |
Dependendo da sua tolerância a riscos, você pode pedir que o usuário inicie o Play Protect e tome medidas em relação aos avisos dele. Se o usuário não puder atender a esses requisitos, você poderá bloqueá-lo na ação do servidor. |
|
O veredito do Play Protect não foi avaliado. Isso pode acontecer por vários motivos, incluindo:
|
Atividade recente do dispositivo
Você também pode ativar a atividade recente do dispositivo, que informa quantas vezes o app solicitou um token de integridade em um dispositivo específico na última hora. É possível usar a atividade recente do dispositivo para proteger o app contra dispositivos hiperativos inesperados que podem indicar um ataque ativo. Você pode decidir o quanto confiar em cada nível de atividade recente do dispositivo com base em quantas vezes espera que o app instalado em um dispositivo comum solicite um token de integridade a cada hora.
Se você ativar o recebimento de recentDeviceActivity
, o campo deviceIntegrity
terá dois valores:
deviceIntegrity: {
deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
recentDeviceActivity: {
// "LEVEL_2" is one of several possible values.
deviceActivityLevel: "LEVEL_2"
}
}
Primeiro, verifique os dados para ver quais são os níveis de atividade típicos do seu app em todos os seus dispositivos. Em seguida, você pode decidir como o app responde quando um dispositivo estiver fazendo muitas solicitações. Se a atividade estiver um pouco alta, você pode pedir ao usuário para tentar novamente mais tarde. Se a atividade for muito alta, é recomendável tomar medidas mais rígidas.
Solicitações padrão x clássicas
Como parte da implementação da Play Integrity, é importante considerar os dois tipos de solicitação. Na maioria dos casos, você precisa usar solicitações padrão para fornecer a resposta mais rápida. As solicitações clássicas precisam ser usadas quando uma solicitação recém-gerada no registro de atestado do dispositivo for necessária.
Solicitação clássica |
Solicitação padrão |
---|---|
As solicitações levam mais tempo e devem ser feitas com menos frequência. Por exemplo, como uma verificação única ocasional para verificar se uma ação altamente valiosa ou sensível é genuína. Use com pouca frequência. |
As solicitações têm baixa latência e podem ser usadas sob demanda. Uma solicitação padrão consiste em duas partes:
Use sob demanda. |
Leia a documentação da Play Integrity para mais informações sobre solicitações padrão e clássicas.
Implementação
Para começar a usar a API Play Integrity:
- Ative as respostas da API Play Integrity no Google Play Console e vincule a um projeto do Google Cloud.
- Integre a API Play Integrity ao app.
- Decida como você vai lidar com os vereditos.
Por padrão, a API Play Integrity permite até 10 mil solicitações por app por dia. Para expressar interesse em aumentar o máximo de solicitações diárias, siga estas instruções. Para se qualificar para um aumento no número máximo de solicitações diárias, o app precisa implementar a API Play Integrity corretamente e estar disponível no Google Play, além de outros canais de distribuição.
Considerações sobre a API Play Integrity
- É essencial processar os erros nas respostas das APIs Play Integrity adequadamente. Siga o guia sobre estratégias de repetição e aplicação com base em códigos de erro.
- A API Play Integrity oferece ferramentas de teste para respostas.
- Para conferir o resultado de integridade do seu dispositivo, siga estas etapas.
- Leia estas considerações de segurança para conferir as práticas recomendadas usando a API Play Integrity.
Proteção automática da integridade (API >= 23)
A Proteção automática da integridade é um serviço de proteção de código contra adulterações que protege seu app contra abusos de integridade na forma de modificação e redistribuição não autorizadas. Ele funciona sem uma conexão de dados, não exige trabalho do desenvolvedor antes do teste nem a integração do servidor de back-end.
Como isso ajuda a reduzir fraudes
Quando você ativa a Proteção automática da integridade, o Google Play adiciona verificações ao código do app e as torna difíceis de remover com técnicas avançadas de ofuscação e contra engenharia reversa. Durante a execução, a proteção verifica se o app foi adulterado ou redistribuído:
- Se a verificação do instalador resultar em um erro, os usuários vão precisar fazer o download do app no Google Play
- Se a verificação de modificações resultar em um erro, o app não será executado
Isso ajuda a proteger os usuários contra versões modificadas do app.
Implementação
No momento, a Proteção automática da integridade só está disponível para parceiros do Google Play selecionados. Entre em contato com o suporte ao desenvolvedor do Google Play se o recurso não estiver disponível no Google Play Console e você quiser demonstrar interesse em ter acesso a ele.
É possível ativar a proteção ao criar uma versão ou na página Integridade do app (Versão > Integridade do app). A Proteção automática da integridade exige que o app use a Assinatura de apps do Google Play.
Teste o app protegido antes de promover o lançamento para produção.
Considerações importantes
- Não lançar versões de apps desprotegidas
- Cuidado ao combinar soluções de proteção contra adulterações
- Testar o app protegido antes do lançamento para produção
- Monitore as estatísticas normalmente para verificar qualquer aumento nas falhas.
- É possível denunciar versões crackeadas do app ao Google Play