Proteger o ambiente

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

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

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 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 que exige que o usuário feche determinados apps.

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.

Caixa de diálogo "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 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.

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 cumprir esses requisitos, você poderá bloquear a 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 cumprir esses requisitos, você poderá bloquear a 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. É 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:

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

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