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 principal recurso é a API Play Integrity, que ajuda a verificar se as interações são genuínas ao detectar 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

Recursos da API Play Integrity

Com a API Play Integrity, você pode saber 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 Google Play: determina se a conta de usuário atual é licenciada, o que indica se 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 e podem capturar a tela ou controlar o dispositivo e as entradas no seu app.

Como isso ajuda a mitigar 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 proteger de ataques e fraudes. Por exemplo, você pode exigir uma verificação adicional do usuário ou negar o acesso a funcionalidades sensíveis.

Fluxo de decisão da API Play Integrity

Risco de acesso ao app

O indicador Risco de acesso ao app foi criado 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.

Captura de tela de um smartphone pedindo para o usuário fechar determinados apps.

Graças a esse esforço colaborativo, conseguimos os indicadores necessários para gerar insights mais profundos e proteger nossos clientes de forma mais eficaz.
—Nubank, parceiro de acesso antecipado

O risco de acesso a apps tem diferentes níveis:

  • 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 seu app.

Aplicação do 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 veredictos:

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 foram pré-carregados na partição do sistema pelo fabricante do dispositivo. Não há apps em execução que possam resultar nos vereditos de captura, controle ou sobreposições.
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 usados para visualizar a tela ou capturar outras entradas e saídas.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
Há apps do sistema ou do Google Play em execução com permissões ativadas que podem ser usados 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 usados para controlar o dispositivo e controlar diretamente as entradas no seu app.
appAccessRiskVerdict: {} O 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.

Play Protect Signal

O indicador do Play Protect informa ao app se o serviço está ativado e se encontrou apps nocivos conhecidos instalados nos dispositivos.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

Se o malware for uma preocupação específica para seu app ou os dados dos usuários, verifique esse veredito e peça aos usuários para ativar o Play Protect ou remover apps nocivos antes de continuar.

Caixa de diálogo para ativar o 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 Google 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 abra o Play Protect e tome medidas em relação aos avisos mostrados. Se o usuário não conseguir cumprir esses requisitos, você poderá bloqueá-lo da 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 abra o Play Protect e tome medidas em relação aos avisos mostrados. Se o usuário não conseguir cumprir esses requisitos, você poderá bloqueá-lo da 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 é LICENCIADA.

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. Você pode decidir o quanto confiar em cada nível de atividade do dispositivo recente 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 típicos de atividade do dispositivo para seu app em todos os dispositivos. Em seguida, você pode decidir como o app deve responder quando um dispositivo faz muitas solicitações. Se a atividade estiver um pouco alta, peça para o usuário tentar de novo mais tarde. Se a atividade for muito alta, talvez seja necessário tomar medidas mais enérgicas.

Solicitações padrão x clássicas

Como parte da implementação da API 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 for necessário gerar uma nova solicitação em relação ao registro de atestado do dispositivo.

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 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)

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:

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 no número máximo diário de solicitações, o app precisa implementar a API Play Integrity corretamente e estar disponível no Google Play além de outros canais de distribuição.

O que você precisa saber 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 contra adulterações que protege seu app contra abusos de integridade na forma de modificações e redistribuições 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 mitigar fraudes

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. Durante a execução, a proteção verifica se o app foi adulterado ou redistribuído:

  • Se a verificação do instalador falhar, os usuários precisarão baixar o 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 está disponível apenas para parceiros selecionados do Google Play. Entre em contato com o suporte ao desenvolvedor do Google Play se o recurso não estiver disponível no seu Google Play Console e você quiser ter acesso a ele.

Você pode ativar a proteção ao criar uma versão ou na página Protegido com o Google Play. A Proteção automática da integridade exige que seu 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 não protegidas do app
  • Cuidado ao combinar soluções de proteção contra adulterações
  • Testar o app protegido antes de lançar para produção
  • Monitore as estatísticas normalmente para detectar aumentos nas falhas.
  • Você pode denunciar versões crackeadas do app ao Google Play