Eu sou um cara técnico. No entanto, este post não contém detalhes técnicos (mas isso é porque esse bug não requer nenhum).
Preciso admitir: encontrar esse bug foi pura sorte .
Nenhuma habilidade estava envolvida .
Algum contexto…
Algumas semanas atrás, um cliente para quem trabalhei no ano passado me ligou porque precisava de ajuda para descrever o serviço que desenvolvemos para ele. Ele ia vender a empresa e estavam sendo solicitados os detalhes técnicos.
Havia um requisito explícito que teria me forçado a examinar todo o código e procurar informações específicas, mas eu estava com preguiça de fazer isso. Então pensei nas minhas opções:
- Ou passo as próximas duas horas examinando cada linha de código…
- Ou posso procurar uma ferramenta online que faça o trabalho para mim! ?
Todos nós sabemos como isso termina. Você acaba perdendo seu tempo procurando um serviço e não conseguindo fazer nada. Eu poderia ter gasto meu tempo fazendo isso manualmente.
Sorte minha, tentei procurar uma ferramenta em vez disso.
Descobrindo o bug
Lembrei-me que usei uma página da web há cerca de 3 anos que tinha um recurso semelhante, então decidi investigar.
Uma vez logado, esperava encontrar meus projetos anteriores , mas todos estavam faltando . Em vez disso, muitos repositórios “aleatórios” do GitHub foram anexados à minha conta. Eles eram de uma grande e conhecida empresa… E eles não eram Open Source, eu posso te dizer isso . ?
Por que nunca recebo permissão para publicar o nome dessas empresas?
Não importa como eu discuta com eles, eles sempre vão querer manter isso em segredo.
…
Acho que é por isso que trabalho em ciência da computação e não em política.
Técnicas de persuasão zero?
De repente, percebi que aquela não era minha conta . Fui para a página de configurações e vi um e-mail diferente . Eu nem sabia como consegui entrar na conta deles.
“ Vamos tentar fazer de novo ”, disse minha mente. Abra um novo perfil do Chrome, vá para a página da web, faça login usando o Google… Novamente . Estou na conta deles.
Foi quando decidi usar uma conta do Google diferente.
Talvez — pensei — usar um endereço de e-mail diferente me leve a uma conta diferente. E eu estava certo .
Mas então… Padrão detectado?
A primeira letra do meu e- mail correspondia à primeira letra da conta do aplicativo.
Coincidência? Não tenho certeza, ainda. Vamos usar vários e-mails:
n*******@domain.com (e-mail do Google) => n********@whatever.com (App)
e********@domain.com (e-mail do Google) = > e*******@whatever.com (App)
a*******@domain.com (Google email) => a*******@whatever.com (App)
z *******@domain.com (e-mail do Google) => z********@whatever.com (Aplicativo)
Então, sim, eu descobri uma maneira de acessar, pelo menos, 35 contas (a-z0–9).
Entendendo o problema
Eventualmente, ao tentar e-mails diferentes, acabei na conta que esperava acessar em primeiro lugar: A conta com meus projetos. Foi aí que percebi qual era o problema: tentei entrar com um e- mail que não estava cadastrado no site. Eu estava entrando quando deveria ter me registrado primeiro.
FFS, essa não é a conta que usei para meus projetos. Eu os armazenei em uma conta diferente e específica que criei usando o Google Suite.
Eu deveria ter ido para a página de registro em vez de usar o pop-up de login?
Então fui até a página de cadastro , usei um dos e-mails anteriores (um que eu sabia que não existia, mas que me levou a uma conta que não era minha), e me registrei com sucesso . Fiz logout, e quando entrei… estava dentro da conta correta .
Conclusões
Os desenvolvedores presumiram que, se um usuário estivesse usando o pop-up de login , ele deveria estar presente no banco de dados. Isso levou à captura de uma entrada do banco de dados , independentemente de haver uma correspondência exata .
“Inscrever-se” e “Fazer login” usando SSO devem ter o mesmo fluxo de autenticação e o back-end deve ter decidido se adicionar um novo usuário ao banco de dados ou pegar um existente se os dados corresponderem!
Então, o que você faz, nessas situações?
Este não é um programa de recompensas de bugs, e você não teve acesso para testar o aplicativo em primeiro lugar. Você está em apuros ?
Bem, você pode ser , mas isso não é o que geralmente acontece.
Procurei o e-mail de suporte e enviei os detalhes: não pedindo uma recompensa , com etapas reproduzíveis e um pedido de desculpas por executar vários testes para entender o problema.
Eles responderam muito rápido, confirmando que o problema foi corrigido e me concedendo algum crédito dentro do aplicativo.
Não é uma recompensa monetária, mas estou feliz de qualquer maneira. – Eu pensei.
A má notícia é que o aplicativo não conseguiu resolver meu problema. Mas ei, no final, alguém acabou pagando pelas duas horas que levei para fazer o trabalho manualmente ?
FONTE: MEDIUM