FELIPE WINSCHDesenvolvedor Full Stack
Voltar aos projetos

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.

  1. Expo / React Native · login e dashboard
  2. AuthContext / AsyncStorage · estado local
  3. Serviços HTTP · backend simulado Node.js
Componentes do laboratório; o armazenamento nativo é omitido em parte dos fluxos web.

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

Fontes conferidas em 2026-09-27 · Conteúdo v1 · Revisão bb38195.