Segurança mobile · Laboratório didático
Vulnerable App
Aplicação React Native e Expo intencionalmente vulnerável para estudar comunicação HTTP, armazenamento local e controle de acesso. Destinada a laboratório com dados fictícios.
Protótipo
- TypeScript
- React Native
- Expo
- AsyncStorage
- Node.js
Minha contribuição
O histórico público atribui os commits a felpzw. O recorte de aplicação inclui login, contexto de autenticação, serviços e backend simulado, construídos sobre o template do Expo e documentados para uso didático.
Problema
Tornar visíveis falhas comuns em aplicativos móveis para que possam ser estudadas em código e em um ambiente controlado. O objetivo é educacional: as fragilidades fazem parte do exercício.
Contexto e escopo
O projeto parte do template Expo e acrescenta login, dashboard e serviços de aplicação. A documentação específica está em README_VULNERABILITIES.md; o README principal ainda é o guia genérico do template.
Arquitetura
Expo Router organiza as telas. AuthContext coordena login e estado do usuário; authService chama um backend HTTP simulado em Node.js. No ambiente nativo, token e papel são persistidos em AsyncStorage.
A aplicação usa o papel armazenado no cliente em fluxos de interface. A versão web evita partes do armazenamento nativo, portanto os comportamentos não são idênticos entre plataformas.
- Expo / React Native · login e dashboard
- AuthContext / AsyncStorage · estado local
- Serviços HTTP · backend simulado Node.js
Decisões e trade-offs
HTTP, persistência sem proteção adicional e confiança no estado do cliente tornam os problemas observáveis no laboratório. O backend simulado facilita a reprodução sem depender de um serviço real. São decisões didáticas, não práticas propostas para aplicações de produção.
Testes e evidências
O script test-vulnerabilities.sh verifica disponibilidade do mock, esquema HTTP e resposta do login. As demais falhas são descritas como exercícios; o script não comprova automaticamente toda a segurança ou cobertura do aplicativo. Nenhum teste de exploração ou execução do app foi realizado nesta revisão.
Limitações
É uma aplicação intencionalmente insegura: use somente dados fictícios em laboratório isolado. Os endereços de desenvolvimento e a porta do mock precisam ser alinhados ao emulador; o serviço de login contém configuração específica de uma máquina.
A revisão não reproduz afirmações de que qualquer outro aplicativo teria acesso irrestrito ao armazenamento: essa possibilidade depende do ambiente e das permissões. O ponto verificável é o uso de AsyncStorage para token e papel, sem armazenamento seguro adicional.
Explorar o projeto
Leia a documentação do laboratório e compare authService, AuthContext e mock-server.js. Após clonar a revisão indicada, instale as dependências e ajuste o endereço local antes de iniciar o mock e o Expo em terminais separados. Não há demo pública verificada.
npm install
npm run lint
# Terminal 1
node mock-server.js
# Terminal 2
npm start- Código revisado
- Objetivo do laboratório
- Contexto de autenticação
- Serviço de login
- Script de verificação local
- Preparação do laboratório
Fontes conferidas em 2026-09-27 · Conteúdo v1 · Revisão bb38195.