#02 + #03 ATO — Resumo Executivo
Severidade: Crítica
O que é: Um atacante consegue trocar a senha de qualquer vendedor sem ter acesso ao e-mail nem ao telefone dele.
A mesma falha existe em dois caminhos: recuperação por e-mail (#02) e recuperação por SMS (#03). A correção resolve ambos de uma vez.
O Problema
Fluxo normal de recuperação de senha
O código só vai para o celular ou e-mail cadastrado do vendedor. Isso é seguro.
O que o atacante faz hoje
Importante: o atacante não usa o app. Ele faz chamadas diretas para o servidor usando ferramentas como
curlou Postman. As proteções do app (interceptors, Firebase Remote Config) são inúteis contra esse tipo de ataque — é um ataque direto à API, sem interface de usuário.
Dois caminhos, mesma falha:
| Vetor | Endpoint | Como funciona |
|---|---|---|
| #02 Email | verify-email | Atacante informa o email dele, recebe o código lá |
| #03 SMS | verify-phone | Atacante informa o celular dele, recebe o código lá |
O problema: o sistema aceita que o atacante escolha para qual email o código será enviado. Em vez de mandar para o email cadastrado da vítima, manda para o email do atacante.
Por Que Isso Acontece
O atacante não enfrenta as proteções do app (biometria, Firebase, interceptor). Ele conversa direto com o servidor via chamadas HTTP. O servidor decide se atende ou não. E hoje, o servidor atende sem verificar se quem está pedindo é o dono da conta.
3 falhas encadeadas:
| # | Falha | Explicação simples |
|---|---|---|
| 1 | Destino do código não verificado | O sistema envia o código para o email/telefone que o atacante informa, não para o contato cadastrado da vítima. Vale para email e SMS. |
| 2 | Falta de autenticação | O atacante não precisa estar logado para pedir o código |
| 3 | Token compartilhado | O token gerado na validação de email serve para trocar a senha — os fluxos se misturam |
A Solução
Onde a correção acontece: no servidor (backend), não no app. É o servidor que decide se atende ou rejeita cada chamada.
Antes e Depois
Fluxo Corrigido — Atualização de Contato
Fluxo Corrigido — Recuperação de Senha
O Que Muda no App
Única mudança visível: se o vendedor não tem telefone nem email confirmados e tenta recuperar a senha, o app mostrará "Contate o suporte" em vez de oferecer cadastrar novo contato na hora.
Verificação de Segurança
O Que NÃO Entra Neste Fix
| Item | Motivo | Quando |
|---|---|---|
| Código mestre previsível por data | Vulnerabilidade distinta | Próximo card |
| Limite de tentativas de código | Vulnerabilidade distinta | Card #04 |
| Impedir descoberta de CPFs válidos | Vulnerabilidade distinta | Card separado |
Impacto
- Vendedores: sem impacto no dia a dia. Recuperação de senha continua igual. Atualização de contato continua igual.
- Suporte: vendedores sem telefone/email confirmados precisarão de atendimento para recuperar senha (antes conseguiam sozinhos).
- Segurança: fecha a porta de entrada mais crítica do relatório de pentest.