Proteger o ambiente

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

Recursos da 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.

Fluxo de decisão da API Play Integrity

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.

Captura de tela do smartphone que exige que o usuário feche determinados apps.

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.

Ativar caixa de diálogo do Play Protect

O playProtectVerdict pode ter um destes valores:

Veredito Explicação Ação recomendada

NO_ISSUES

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.

NO_DATA

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.

POSSIBLE_RISK

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.

MEDIUM_RISK

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.

HIGH_RISK

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.

UNEVALUATED

O veredito do Play Protect não foi avaliado.

Isso pode acontecer por vários motivos, incluindo:

  • O dispositivo não é confiável o suficiente.
  • Somente jogos: a conta de usuário não é LICENSED.

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:

  • Preparar o provedor de token de integridade (único)
  • Solicitar um token de integridade (sob demanda)

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:

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

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