👾 Pentests em Aplicações Mobile: Explorando Vulnerabilidades em Apps React Native
- #React Native
Introdução
Com a popularidade crescente de aplicativos mobile, é comum que desenvolvedores foquem em performance, funcionalidades e design — mas deixem a segurança em segundo plano. Isso torna os apps alvos fáceis para atacantes. O Pentest (Teste de Intrusão) é uma etapa crítica para validar a robustez de uma aplicação contra ameaças reais.
Neste artigo, explico como realizo pentests em aplicações mobile, com ênfase em apps feitos com React Native, abordando exemplos práticos de vulnerabilidades comuns causadas por erros no código e configurações inseguras.
O que é Pentest Mobile?
Pentest mobile é o processo de identificar, explorar e documentar vulnerabilidades de segurança em aplicativos para dispositivos móveis, simulando o comportamento de um atacante real.
Esse tipo de teste envolve:
- Análise estática do APK (código descompilado)
- Análise dinâmica com o app em execução
- Interceptação de tráfego de rede
- Testes em APIs conectadas
- Engenharia reversa
Ferramentas utilizadas em Pentests Mobile
- 🔍 MobSF – análise estática e dinâmica do APK
- 🔧 Frida – manipulação de código em tempo real
- 🔓 APKTool – descompilação e engenharia reversa
- 🧪 Burp Suite / OWASP ZAP – interceptação de tráfego
- 🧠 Jadx – visualização do código Java/Kotlin descompilado
Exemplos de vulnerabilidades comuns em apps React Native
Abaixo estão algumas falhas frequentemente encontradas em pentests de apps feitos com React Native, especialmente por desenvolvedores iniciantes:
1. Credenciais e tokens no código-fonte
const apiKey = "sk_live_ABC1234567890";
❌ Erro comum: deixar chaves de API, tokens ou secrets embutidos no código.
🔍 Exploração: o atacante pode descompilar o app com APKTool ou Jadx e extrair esses dados.
✅ Boa prática: usar variáveis de ambiente no backend, criptografia, e não expor dados sensíveis no client.
2. Uso de eval()
ou Function()
eval(userInput);
❌ Erro comum: usar eval()
ou Function()
com entrada do usuário pode permitir execução arbitrária de código.
🔍 Exploração: um atacante pode injetar scripts maliciosos se tiver controle sobre a entrada.
✅ Boa prática: nunca usar eval()
ou funções equivalentes com dados externos.
3. Falta de validação no lado do servidor
// Apenas valida no app se o usuário pode acessar recurso
if (user.role === 'admin') {
// mostrar painel de admin
}
❌ Erro comum: confiar apenas na lógica do app para bloquear recursos.
🔍 Exploração: usando ferramentas como Frida, o atacante pode alterar a lógica em tempo de execução e desbloquear recursos restritos.
✅ Boa prática: sempre validar permissões e lógica sensível no backend.
4. Armazenamento inseguro de dados sensíveis
await AsyncStorage.setItem('user_password', '123456');
❌ Erro comum: salvar senhas ou tokens diretamente no AsyncStorage
, que pode ser acessado em dispositivos com root/jailbreak.
🔍 Exploração: leitura direta da memória do app ou dump do armazenamento.
✅ Boa prática: usar bibliotecas como react-native-keychain
para armazenamento seguro.
5. Comunicação insegura (HTTP)
fetch("http://api.meuservico.com/dados");
❌ Erro comum: comunicação com backend sem HTTPS.
🔍 Exploração: ataque Man-in-the-Middle (MITM) com Burp Suite ou ZAP para interceptar e manipular dados.
✅ Boa prática: sempre usar HTTPS com TLS, validar certificados se possível.
Etapas básicas de um Pentest Mobile
1 - Reconhecimento:
- Analisar o manifesto do app (
AndroidManifest.xml
) - Descobrir endpoints de API
2 - Análise Estática:
- Descompilar o APK
- Buscar secrets, funções perigosas, lógica crítica
3 - Análise Dinâmica:
- Rodar o app em ambiente instrumentado
- Interceptar tráfego com proxy (Burp/ZAP)
- Manipular chamadas e variáveis com Frida
4 - Testes nas APIs:
- Verificar autenticação, autorização, SQLi, XSS, CSRF, etc.
5 - Relatório:
- Documentar falhas encontradas
- Apontar riscos e sugestões de correção
Conclusão
Aplicações mobile não estão imunes a falhas — e apps feitos com React Native também podem conter vulnerabilidades críticas se não forem construídos com atenção à segurança. Testes de intrusão (Pentests) são essenciais para encontrar esses problemas antes que um atacante real o faça.
Mesmo desenvolvedores iniciantes podem prevenir várias dessas falhas com boas práticas básicas, como não expor dados sensíveis no código, usar HTTPS corretamente e validar permissões no servidor.
Referência recomendada
Para quem está começando e quer aprender mais sobre segurança em apps mobile, a melhor referência é o:
🔗 OWASP Mobile Top 10 : Esse guia mostra as 10 falhas mais críticas em apps mobile e como evitá-las.
E aí gostou? Compartilhe com seus amigos, colegas e familiares e deixe seu 👍