- Em 3 de agosto de 2025, ocorreu um incidente de segurança em larga escala no site DrawAFish! por cerca de 6 horas
- Vulnerabilidades críticas de segurança, como vazamento de senha de administrador, API sem autenticação e falha no JWT, ficaram expostas em conjunto durante o ataque
- Como resultado, todos os nomes de usuário foram alterados para expressões ofensivas, e desenhos inadequados foram aprovados enquanto desenhos seguros existentes eram excluídos ao mesmo tempo
- O incidente foi resolvido com recuperação manual, correção da lógica de autenticação e validação de backups
- A principal lição é que o desenvolvimento rápido (“vibe-coding”) e a falta de testes e revisão de código podem causar consequências de segurança graves
Visão geral do DrawAFish.com e resumo do incidente de 3 de agosto de 2025
- O DrawAFish.com é um site em que o usuário desenha peixes e os faz nadar em um aquário junto com outros usuários
- Em 1º de agosto de 2025, subiu para o 1º lugar do Hacker News e ganhou grande atenção. O desenvolvedor adotou a abordagem de “vibe-coding”, implementando funcionalidades rapidamente com ferramentas como o Copilot
- Porém, na madrugada de 3 de agosto de 2025, ocorreu um incidente de segurança grave
- Durante cerca de 6 horas, houve uma situação caótica com nomes de usuário alterados para termos ofensivos e aprovação de imagens impróprias
- Ao final, o administrador precisou fazer restauração manual
Detalhamento de vulnerabilidades
1. Senha de administrador de 6 dígitos vazada anteriormente
- O desenvolvedor usou inicialmente seu próprio ID e senha de 6 dígitos da infância na conta de administrador
- Essa senha já estava disponível publicamente devido ao vazamento de dados de sites anteriores, como o Neopets
- O desenvolvedor passou a usar o Google Auth depois, mas não removeu a senha antiga, deixando a fragilidade aberta para o atacante
- O atacante conseguiu autenticar com sucesso usando as informações vazadas e realizou ações maliciosas, como aprovar desenhos ofensivos e excluir desenhos normais
2. API de alteração de nome de usuário sem autenticação
- Durante o desenvolvimento do backend de perfil, foi implementada uma API de alteração de nome de usuário sem verificação de autenticação para ganhar velocidade no “desenvolvimento rápido”
- Na prática, qualquer pessoa podia alterar o nome de usuário livremente
3. Validação insuficiente de JWT
- No esquema de autenticação baseada em token JWT, as operações administrativas podiam ser feitas sem validar a correspondência entre token e userId/email
- Ou seja, se o invasor possuísse apenas um token emitido com credenciais administrativas, poderia usá-lo com privilégios de administrador em qualquer requisição
- Curiosamente, um usuário do Hacker News aproveitou essa falha para excluir materiais impróprios antes do invasor e ajudou na resposta de emergência
Processo de recuperação
- O desenvolvedor percebeu a situação em torno de 7h45 da manhã e começou a resposta imediatamente pelo computador
- Como o backup do Firebase não estava configurado, não foi possível contar com backup, e o código foi corrigido rapidamente para impor autenticação
- Rastreou todos os logs de moderação e desenvolveu um script para desfazer ações maliciosas (também escrito no formato vibe-coding)
- Em seguida, bloqueou e contatou também a conta de terceiros (usuário do Hacker News) que utilizara privilégios administrativos em emergência, recebendo feedback sobre refatoração de segurança da base de código e aplicando patches adicionais
Cultura de desenvolvimento e lições
- O desenvolvedor experimentou que o “vibe-coding”, ou seja, prototipagem rápida com revisão mínima, pode trazer diversão e alta produtividade, mas na prática pode levar a falhas de segurança graves
- O LLM (Copilot) é extremamente útil para produção rápida de código, mas a responsabilidade pela qualidade e pela segurança do código continua sendo do próprio desenvolvedor
- Este caso demonstra que, ao omitir testes, lógica de autenticação, revisão de código e outras rotinas básicas de segurança, até projetos pequenos podem se tornar extremamente vulneráveis a ataques externos
Conclusão e insights
- O caso DrawAFish.com mostra a importância de medidas básicas de segurança que são frequentemente negligenciadas na operação de serviços reais
- Mesmo dependente de ferramentas open source e ferramentas de desenvolvimento rápido, é essencial checar questões básicas como testes, autenticação, revisão de código e gestão de senhas
- A exposição repentina em grande escala (por exemplo, ficar entre os primeiros no ranking do Hacker News) pode ampliar rapidamente a superfície de ataque e o risco
- Ao documentar o pós-mortem de forma transparente, transmite lições práticas de segurança para futuras startups e desenvolvedores independentes de casos similares
Ainda não há comentários.