O Google oferece um conjunto de APIs e serviços para ajudar a detectar se o app está executando em um ambiente seguro e confiável. O ponto principal é 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, Google Play Protect e 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 que você saiba mais sobre o estado de segurança do dispositivo em que o app está sendo executado. Isso ajuda você a ter certeza de que o usuário certo está acessando informações sensíveis.
Ela 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 de 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: determine se o Google Play Protect está ativado e se encontrou apps de risco ou perigosos instalados no dispositivo.
- Baixo risco de acesso por outros apps: determina se outros apps estão em execução que podem capturar a tela ou controlar o dispositivo e as entradas no app.
Como isso ajuda a reduzir a fraude
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 proteger de ataques e fraudes. Por exemplo, você pode exigir uma verificação de usuário adicional ou negar o acesso a uma funcionalidade sensível.
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 acessar e capturar a tela quando o app está em execução ou 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 é vinculado a identificadores de usuário ou dispositivo.
Graças a esse esforço colaborativo, conseguimos os indicadores necessários para oferecer insights mais aprofundados e proteger nossos clientes de maneira mais eficaz.
—Nubank, parceiro de acesso antecipado
O indicador de risco de acesso a apps tem diferentes níveis de risco:
- Uma resposta de captura significa que outros apps estão em execução e podem capturar a tela.
- Uma resposta de controle significa que outros apps estão em execução e podem controlar o dispositivo. Portanto, eles podem capturar a tela e controlar as entradas no app.
Aplicação do indicador 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"]
|
Os únicos apps instalados 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 resultem em vereditos de captura, controle ou sobreposição. |
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. Além disso, 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á apps do Google Play ou do sistema em execução 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 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. |
Indicador do Play Protect
O indicador do Play Protect informa ao app se o Play Protect está ativado e se ele 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, você poderá verificar esse veredito e pedir que os usuários ativem o Play Protect ou removam apps nocivos 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 da 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 abra o Play Protect e tome medidas em relação aos avisos mostrados. Se o usuário não cumprir esses requisitos, você poderá bloquear a 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 abra o Play Protect e tome medidas em relação aos avisos mostrados. Se o usuário não cumprir esses requisitos, você poderá bloquear a 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 seu app solicitou um token de integridade em um dispositivo específico na última hora. É possível usar a atividade recente do dispositivo para proteger seu app contra dispositivos hiperativos inesperados que podem indicar um ataque ativo. É possível decidir o quanto confiar em cada nível de atividade recente do dispositivo com base em quantas vezes você 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 saber quais são os níveis de atividade típicos do dispositivo para o app em todos os dispositivos. Em seguida, você pode decidir como o app vai responder quando um dispositivo estiver fazendo muitas solicitações. Se a atividade estiver um pouco alta, peça para o usuário tentar novamente mais tarde. Se a atividade for muito alta, talvez seja necessário tomar medidas de aplicação mais rigorosas.
Solicitações padrão e clássicas
Como parte da implementação da Play Integrity, é importante considerar os dois tipos de solicitações. Use solicitações padrão na maioria dos casos para fornecer a resposta mais rápida. As solicitações clássicas devem ser usadas quando uma solicitação recém-gerada em relação ao registro de atestado do dispositivo for necessária.
Solicitação clássica |
Solicitação padrão |
---|---|
As solicitações levam mais tempo e precisam ser feitas com menos frequência. Por exemplo, como uma ocasião única para verificar se uma ação altamente valiosa ou confidencial é 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:
Usar 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 processar 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 número máximo de solicitações diárias, siga estas instruções. Para se qualificar para um aumento do número máximo de solicitações por dia, o app precisa implementar a API Play Integrity corretamente e estar disponível no Google Play além de outros canais de distribuição.
Pontos a serem considerados para a API Play Integrity
- É essencial processar erros nas respostas das APIs Play Integrity adequadamente. Siga o guia sobre estratégias de nova tentativa 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 de uso da API Play Integrity.
Proteção automática da integridade (API 23 ou mais recente)
A Proteção automática da integridade é um serviço de proteção contra adulteração de código que protege seu app contra abuso de integridade na forma de modificação e redistribuição não autorizadas. Ela funciona sem uma conexão de dados e não exige trabalho do desenvolvedor antes do teste nem a integração do servidor de back-end.
Como isso ajuda a reduzir a fraude
Quando você ativa a Proteção automática da integridade, o Google Play adiciona verificações ao código do app e dificulta a remoção delas com técnicas avançadas de ofuscação e antiengenharia reversa. No momento da execução, a proteção verifica se o app foi adulterado ou redistribuído:
- Se a verificação do instalador falhar, os usuários vão precisar fazer o download do app no Google Play.
- Se a verificação de modificação falhar, 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 está disponível apenas para alguns parceiros do Google Play. 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 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 a produção.
Considerações importantes
- Não lançar versões não protegidas do app
- 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 detectar qualquer aumento nas falhas
- Você pode denunciar versões crackeadas do app ao Google Play