Expo App Integrity: protegendo APIs em aplicativos React Native e Expo com Play Integrity e App Attest
- Redação

- há 24 horas
- 4 min de leitura
Proteger APIs utilizadas por aplicativos móveis vai além de autenticar o usuário. Mesmo com JWT, OAuth ou outros mecanismos de autenticação, um invasor que obtenha credenciais válidas pode tentar consumir a API por meio de scripts, clientes não autorizados, emuladores ou versões modificadas do aplicativo.
Para reduzir esse risco, a Expo disponibilizou o @expo/app-integrity, uma biblioteca que integra a Google Play Integrity API no Android e o Apple App Attest no iOS.
Com essa integração, o backend pode receber evidências sobre a autenticidade da instalação e o ambiente em que o aplicativo está sendo executado antes de autorizar operações sensíveis.
Atualmente, a biblioteca está em fase alpha e pode sofrer alterações incompatíveis entre versões. Por isso, sua adoção em produção exige testes, acompanhamento da documentação e uma estratégia adequada para o tratamento de falhas.
Qual problema essa tecnologia resolve?
Imagine uma API com endpoints responsáveis por liberar créditos, processar pagamentos, consumir serviços de inteligência artificial, resgatar benefícios ou disponibilizar conteúdo premium.
Mesmo que esses endpoints exijam autenticação, um atacante pode capturar um token válido e utilizá-lo em scripts ou clientes próprios para automatizar milhares de requisições.
Nesse cenário, a autenticação confirma a identidade ou a sessão do usuário, mas não comprova que a solicitação foi realizada por uma instalação legítima do aplicativo.
A atestação de integridade adiciona essa camada complementar, permitindo que o servidor avalie sinais relacionados à autenticidade do aplicativo, à integridade do dispositivo e ao contexto da solicitação.
Como o Expo App Integrity funciona?
O funcionamento varia entre Android e iOS, pois cada plataforma utiliza seu próprio mecanismo de atestação.
Android
O aplicativo prepara o provedor de tokens da Play Integrity API.
Antes de uma operação sensível, cria um hash relacionado à solicitação.
O aplicativo solicita um token de integridade ao Google Play.
O token é enviado ao backend junto com a requisição.
O backend envia o token aos serviços do Google para descriptografia e validação.
Com base nos veredictos recebidos, o servidor decide se autoriza, limita ou bloqueia a operação.
A Play Integrity API pode fornecer sinais sobre a autenticidade do aplicativo, sua origem, possíveis modificações no binário e características do ambiente de execução.
iOS
O aplicativo gera uma chave criptográfica protegida pelo dispositivo.
O backend fornece um challenge único e de uso único.
O aplicativo utiliza o App Attest para atestar a chave.
O backend valida a atestação e registra a chave como pertencente a uma instalação legítima.
Nas operações sensíveis seguintes, o aplicativo gera assertions assinadas com essa chave.
O backend valida cada assertion antes de executar a operação.
O uso de challenges, hashes e dados vinculados à requisição é importante para impedir que um token ou uma assertion válida seja reutilizada em outra operação.
Como o backend deve reagir?
Uma falha de validação não precisa resultar automaticamente no bloqueio definitivo da solicitação. Problemas de rede, indisponibilidade temporária, dispositivos incompatíveis ou erros de configuração também podem afetar o processo.
A política pode variar conforme o risco da operação:
Permitir a operação e registrar o evento para análise
Solicitar autenticação adicional
Aplicar limites de uso mais restritivos
Bloquear temporariamente a operação
Negar ações financeiras ou de alto risco
Essa abordagem gradual reduz falsos positivos e evita que usuários legítimos sejam bloqueados desnecessariamente.
Principais casos de uso
Pagamentos e transferências
Compras dentro do aplicativo
Liberação de créditos ou saldo
Consumo de APIs de inteligência artificial
Assinaturas e conteúdo premium
Cashback e programas de fidelidade
Resgate de benefícios e cupons
Alteração de dados críticos da conta
Recuperação ou troca de senha
Operações de marketplace
Endpoints que gerem custos ou possam ser explorados em escala
Firebase App Check como alternativa
Antes do lançamento do @expo/app-integrity, uma das principais alternativas para projetos React Native era o Firebase App Check, normalmente utilizado por meio do React Native Firebase, mantido pela Invertase.
O Firebase App Check também utiliza mecanismos de atestação das plataformas para verificar se as requisições vêm de clientes legítimos. Ele pode proteger tanto serviços do Firebase quanto APIs e backends próprios.
Entretanto, sua implementação em projetos React Native geralmente envolve a adoção das bibliotecas e da infraestrutura do Firebase App Check.
Com o @expo/app-integrity, projetos Expo passam a contar com uma integração oficial que fornece acesso mais direto à Play Integrity API e ao App Attest, sem exigir que o Firebase App Check seja adotado como intermediário.
A biblioteca também pode ser utilizada em projetos React Native existentes, desde que o pacote Expo seja devidamente instalado e configurado.
Vale a pena utilizar?
A resposta depende do nível de risco da aplicação.
Em aplicativos institucionais ou que apenas disponibilizam informações públicas, essa camada pode trazer pouca vantagem em relação ao esforço de implementação e manutenção.
Por outro lado, aplicativos que controlam operações financeiras, créditos, assinaturas, consumo de inteligência artificial, conteúdo premium, marketplaces ou funcionalidades sujeitas a automação e fraude podem se beneficiar significativamente.
A atestação de integridade pode dificultar o uso de scripts, aplicativos modificados, emuladores e clientes não autorizados. Porém, ela não deve ser tratada como uma proteção absoluta.
Essa tecnologia não substitui autenticação, autorização, limitação de requisições, análise de comportamento, proteção contra repetição, validação de dados, monitoramento ou outras práticas de segurança. Ela funciona como uma camada adicional dentro de uma estratégia de defesa em profundidade.
Conclusão
O Expo App Integrity representa um avanço relevante para o ecossistema Expo e React Native ao oferecer uma integração oficial com os mecanismos nativos de atestação do Android e do iOS.
A biblioteca permite que o backend avalie não apenas quem está realizando uma operação, mas também se a solicitação apresenta evidências de ter sido produzida por uma instalação legítima do aplicativo.
Para aplicações com impacto financeiro, consumo de recursos pagos ou acesso a informações sensíveis, essa proteção deve ser considerada desde a arquitetura. Entretanto, como o pacote ainda está em fase alpha, sua utilização em produção deve ser acompanhada de testes, monitoramento, tratamento de incompatibilidades e políticas graduais de resposta.





