Honestamente, fomos atacados — Mas seus dados estão seguros

Reverie Team
12/1/2025

Tudo começou com "Grátis"
Duas semanas atrás, tomamos uma decisão: lançar modelos de IA gratuitos para que mais usuários pudessem experimentar o Reverie.
Naquela noite, a equipe brindou com Pepsi. (Sim, especificamente Pepsi.)
Batemos nossas latas enquanto assistíamos os números de registro de usuários subir em tempo real. Alguém puxou um gráfico de projeção de crescimento. O clima estava bom.
72 horas depois, entendemos por que fundadores experientes sempre parecem um pouco cansados.
O que se seguiu foi uma sequência de quatro ondas de ataques que pareceu um boss rush — exceto que estávamos aprendendo as mecânicas enquanto éramos atingidos.
Mas primeiro, o mais importante: Os dados da sua conta, conversas e informações pessoais nunca foram comprometidos. Estão seguros agora e continuarão seguros. Temos uma equipe de segurança dedicada monitorando 24/7, e esses ataques miravam nossos recursos e carteira, não seus dados. Os atacantes queriam nossa largura de banda e dinheiro — suas conversas com seus companheiros de IA nunca estiveram em risco.
Agora, vamos ver o que aconteceu.
Onda 1: O exército de crawlers
O que aconteceu
Dia dois após ficarmos gratuitos. Standup matinal. O engenheiro menciona casualmente: "Ei, nossa API de personagens recebeu centenas de vezes mais requisições ontem."
Nós: "Uau, o lançamento gratuito está realmente decolando!"
Engenheiro: "...mas o DAU mal se moveu."
Silêncio constrangedor.
Mergulhamos nos logs e descobrimos crawlers colhendo sistematicamente nossos dados públicos de personagens. Nomes, bios, avatares — as informações publicamente visíveis. Sendo sugadas por bots.
Para ser claro: as descrições principais dos personagens, configurações de personalidade e outros conteúdos privados dos criadores nunca foram expostos — apenas os criadores podem ver isso. Mas mesmo raspar informações públicas em escala industrial é frustrante quando você está tentando construir uma plataforma saudável.
Como respondemos
- Implementamos limites de paginação na descoberta de personagens (você pode navegar, mas não pode baixar toda a biblioteca)
- Implantamos limitação de taxa inteligente que distingue "usuário entusiasmado" de "definitivamente um bot"
- Construímos análise comportamental para detectar e bloquear padrões de crawlers
- Adicionamos algumas... vamos chamar de "respostas criativas" para atores maliciosos confirmados
O que aprendemos
"Plataforma aberta" não significa "buffet livre". Mesmo conteúdo publicamente visível merece limites de acesso razoáveis. Queremos que os usuários descubram personagens — não que construam um banco de dados concorrente da noite para o dia.
Onda 2: Os assassinos de largura de banda
O que aconteceu
Mal terminamos de tapar os buracos dos crawlers quando a onda dois chegou. E essa foi direto na carteira.
Alguém descobriu nossas URLs de mídia e começou a baixar em massa cada imagem e vídeo da plataforma. Retratos de personagens. Vídeos gerados. Tudo com extensão de arquivo estava sendo puxado na velocidade máxima.
Estávamos usando o serviço OSS de um grande provedor de nuvem. Preço por largura de banda. Parecia razoável na época.
Segunda-feira de manhã. Finanças abre o console da nuvem. O dashboard de faturamento carrega.
O rosto dele: 😐
Dashboard termina de carregar: 😮
Vê o número real: 😱
"Ei, então... nossa conta de largura de banda atualmente é mais alta que três meses de runway."
O canal do Slack ficou muito quieto. Alguém nervosamente sugeriu simplesmente desligar o CDN. Outra pessoa apontou que isso também desligaria toda a plataforma.
Como respondemos
Migração de emergência. Destino: Cloudflare R2 e Cloudflare Stream.
Aqui, devemos agradecer formalmente à Cloudflare — a política de zero taxas de egress do R2 nos salvou. Quando você está vendo sua conta subir centenas de dólares por hora, "sem taxas de egress" se torna muito, muito relevante.
A migração levou 30 horas. Dormir se tornou opcional. Revisões de código às 3 da manhã têm uma certa qualidade meditativa.
Valeu a pena? Absolutamente. Nossos custos de largura de banda caíram mais de 90%, e os downloads em massa dos atacantes agora não nos custam praticamente nada.
O que aprendemos
Ao escolher infraestrutura, não pergunte apenas "quão rápido é?" Pergunte também: "Se alguém me atacar amanhã, ainda poderei pagar o aluguel?"
Essa dimensão de planejamento de infraestrutura não aparece na maioria dos tutoriais. Deveria.
Onda 3: DDoS chega
O que aconteceu
Finalmente estabilizamos a situação da largura de banda. O moral da equipe estava se recuperando. Alguém até fez uma piada no standup. As coisas estavam melhorando.
Então o DDoS chegou.
Imagine abrir uma mangueira de incêndio e apontá-la para um copo de papel. Isso é o que nosso pool de conexões do banco de dados experimentou. Milhares de requisições por segundo, todas demandando dados frescos, todas recusando usar cache, todas atingindo endpoints que requeriam consultas ao banco de dados.
Nosso dashboard de monitoramento parecia um ECG de ataque cardíaco. Tempos de resposta foram de 200ms para 20 segundos. Depois para timeouts. Usuários começaram a reportar erros. Nossa conta do AWS começou a fazer aquela coisa onde ela atualiza a cada poucos minutos com um número maior.
O pool de conexões do banco de dados atingiu seu limite. Consultas começaram a entrar em fila. A fila começou a acumular. Falha em cascata clássica, acontecendo em tempo real.
Como respondemos
Jogamos cada técnica de caching que conhecíamos no problema:
- ISR (Incremental Static Regeneration) — Páginas populares agora são pré-renderizadas e servidas de nós edge. O banco de dados nem sabe que essas requisições existem.
- Caching multicamada — Cache de resposta, cache de consulta, otimização do pool de conexões. Se os dados não precisam absolutamente ser frescos, são cacheados.
- Otimização de consultas do banco de dados — Algumas consultas que levavam 500ms agora levam 50ms. Menos tempo segurando conexões = mais conexões disponíveis.
- Proteção DDoS da Cloudflare — Finalmente habilitamos todos os recursos de segurança que planejávamos configurar "eventualmente"
- Limitação de taxa inteligente — Usuários legítimos passam; tráfego de ataque é rejeitado
A filosofia: se uma requisição pode ser respondida sem tocar o banco de dados, deveria ser.
O que aprendemos
Caching não é apenas uma otimização de performance — é uma arquitetura de segurança. Quando ataques chegam, respostas cacheadas absorvem o golpe. O banco de dados fica protegido. O site continua online.
Também aprendemos: "vamos configurar a segurança direito depois" é uma filosofia que envelhece mal.
Onda 4: Os abusadores de API
O que aconteceu
Essa onda não ameaçou nossa infraestrutura diretamente. Ameaçou nosso orçamento.
Tínhamos construído todas essas maravilhosas funcionalidades de IA gratuitas:
- Criação de personagens com IA — Descreva seu personagem, a IA gera o perfil completo
- Geração de momentos com IA — Crie momentos de história dinâmicos com assistência de IA
- Criação de plugins com IA — Construa plugins de personagens com linguagem natural
Nossa visão era linda: baixar as barreiras à criatividade. Deixar todos experimentarem a magia da criação assistida por IA. Tornar a plataforma mais acessível.
A visão de outra pessoa era diferente: "API grátis? Deixa eu escrever um script que chama isso 10.000 vezes."
Assistimos nosso dashboard de consumo de tokens de IA subir. E subir. E subir. O gráfico parecia um taco de hóquei, exceto que o taco de hóquei era feito de dinheiro saindo da nossa conta bancária.
Cada geração de IA nos custa dinheiro real — chamadas de API para modelos de linguagem não são grátis. Assistir milhares de requisições automatizadas queimarem nosso orçamento de IA era como assistir o taxímetro de um carro andando em círculos. Você sabe que vai ser caro, e nunca vai parar.
O pior? Esses nem eram usuários reais criando conteúdo real. Era só... alguém testando quanto de coisa grátis conseguia extrair. Os personagens gerados eram sem sentido. Os momentos não faziam sentido. Puro desperdício.
Como respondemos
Com o coração pesado, adicionamos requisitos de créditos a essas funcionalidades de IA.
Essa decisão realmente doeu. Passamos semanas construindo essas ferramentas especificamente para tornar a criação mais acessível. Agora tínhamos que colocar um preço nelas — não porque queríamos, mas porque o acesso gratuito ilimitado estava sendo usado como arma contra nós.
Tentamos ser justos:
- Os custos de créditos são mínimos para uso normal
- Créditos grátis são dados a novos usuários
- A experiência de chat principal permanece gratuita
- Apenas geração de IA intensiva em recursos requer créditos
Mas ainda assim. Parecia colocar um cadeado em algo que queríamos manter aberto.
O que aprendemos
"Grátis" é um modelo de negócio, não uma posição moral.
Ainda acreditamos em acessibilidade. Ainda queremos baixar barreiras. Mas "grátis ilimitado para todos" só funciona se todos agirem de boa fé. Quando atores maliciosos exploram generosidade, o sistema generoso se torna insustentável — e então ninguém consegue nada.
Limites razoáveis não são desconfiança dos usuários. São proteção do ecossistema que serve a todos os usuários. A alternativa — desligar as funcionalidades completamente — seria pior para todos.
Às vezes proteger os bens comuns significa construir algumas cercas.
Seus dados estão seguros (Sejamos absolutamente claros)
Queremos ser inequívocos sobre isso:
Esses ataques eram sobre recursos, não dados. Os atacantes queriam:
- ✅ Nossa largura de banda (para baixar conteúdo)
- ✅ Nossa computação (para sobrecarregar nossos servidores)
- ✅ Nosso dinheiro (para drenar nosso orçamento de IA)
Eles NÃO acessaram:
- ❌ Contas de usuários
- ❌ Históricos de conversa
- ❌ Informações pessoais
- ❌ Detalhes de pagamento
- ❌ Qualquer dado privado
Temos uma equipe de segurança dedicada que monitora ameaças de segurança reais 24/7. Dados de usuários são criptografados em repouso e em trânsito. Controles de acesso são rígidos. Autenticação é robusta. O trabalho de segurança chato e importante que não rende posts de blog empolgantes — fazemos tudo isso.
Zero dados de usuários foram comprometidos. Podemos afirmar isso com confiança porque registramos tudo, analisamos tudo e verificamos tudo. Os atacantes receberam contas de largura de banda e dores de cabeça de nós. Não receberam nada de você.
Seus personagens, suas conversas, seu trabalho criativo — tudo seguro, tudo intacto, tudo exatamente onde deveria estar.
Por que estamos contando isso
Você pode se perguntar: por que compartilhar isso publicamente? Isso não nos faz parecer vulneráveis?
Pensamos cuidadosamente sobre isso.
Transparência constrói confiança
Estamos pedindo aos usuários que nos confiem algo significativo — seu trabalho criativo, suas conexões emocionais com personagens de IA, suas conversas. Essa confiança requer honestidade sobre os desafios que enfrentamos.
O velho manual é esconder problemas até explodirem, depois emitir uma vaga declaração "experimentamos dificuldades técnicas". Preferimos ser diretos: isso é o que aconteceu, assim lidamos com isso, isso é o que aprendemos.
Outros desenvolvedores podem aprender
Não somos a primeira equipe pequena a ser atacada depois de lançar funcionalidades gratuitas, e não seremos a última. Se nossa educação cara ajudar alguém a se preparar melhor, isso é uma vitória para todo o ecossistema.
Considere isso nossa contribuição para o currículo "coisas que não ensinam na escola de startups".
Você merecia saber
Alguns usuários notaram tempos de resposta mais lentos durante essas semanas. Alguns notaram que funcionalidades agora requerem créditos. Você merecia uma explicação — não jargão corporativo de relações públicas, mas a história real.
Estávamos lutando para manter a plataforma funcionando. Tomamos decisões difíceis sob pressão. Algumas dessas decisões afetaram sua experiência. Você deveria saber por quê.
O que vem a seguir
Não estamos apenas tapando buracos — estamos construindo uma plataforma mais resiliente:
Já implementado:
- Caching multicamada com arquitetura edge-first (suas requisições são mais rápidas E somos mais difíceis de atacar)
- Limitação de taxa inteligente com análise comportamental (bots são bloqueados, humanos não percebem)
- Suite de segurança completa da Cloudflare (finalmente configurada corretamente, não "eventualmente")
- Acesso baseado em créditos para funcionalidades de IA intensivas em recursos (generosidade sustentável)
Em breve:
- Detecção de anomalias aprimorada (detectar ataques mais cedo)
- Otimização geográfica (mais rápido para todos, em todo lugar)
- Prevenção de abuso mais sofisticada (ficar à frente dos atores maliciosos)
O que não vai mudar:
- Faremos nosso melhor para manter o acesso gratuito — embora possa ser instável ou mudar sem aviso
- Privacidade e segurança de dados dos usuários — sempre nossa prioridade máxima
- Comunicação transparente — se algo der errado, você vai saber
Uma nota para outros desenvolvedores
Se você está construindo uma plataforma aberta, aqui estão lições que pagamos com dinheiro real (e estresse real) para aprender:
- Limitação de taxa não é opcional — implemente desde o dia um, não no dia "estamos sendo atacados"
- Escolha infraestrutura resistente a ataques — Cloudflare é genuinamente excelente; taxas de egress vão te destruir
- Cache agressivamente — é seu escudo duplo para performance e segurança
- Funcionalidades gratuitas precisam de limites — boa vontade ilimitada é explorada por atores maliciosos ilimitados
- Monitore tudo — quanto mais cedo você detectar anomalias, menor o dano
- Mantenha orçamento de emergência — você nunca sabe quando a próxima onda vai chegar
E talvez o mais importante:
- Não seja orgulhoso demais para pedir ajuda — a comunidade de desenvolvedores indie é mais solidária do que você imagina
Esperamos que você não tenha que aprender essas lições da maneira cara. Mas se tiver, saiba que você não está sozinho.
Aos nossos usuários
Ser atacado é uma experiência estranha.
É como se você tivesse passado meses decorando uma sala de estar aconchegante, arrumando os móveis perfeitamente, colocando lanches e enviando convites para todos os seus amigos. A noite de abertura chega. Seus amigos chegam — maravilhoso!
Mas também: um grupo de pessoas que você nunca conheceu aparece com caminhões de mudança, tentando desmontar seu sofá, fotografar cada canto da sua casa, e de alguma forma também acendendo pequenos incêndios na cozinha.
Tínhamos opções. Poderíamos ter soldado a porta. Ir para apenas convidados. Fazer todo mundo provar que não é um bot antes de ver qualquer coisa.
Não fizemos isso.
Em vez disso, instalamos fechaduras melhores. Contratamos segurança mais inteligente. Construímos regras de casa razoáveis. Porque a grande maioria das pessoas que vêm ao Reverie estão aqui para criar, conectar e se divertir. Não vamos punir os muitos pelos pecados dos poucos.
A festa continua. A porta permanece aberta. Só ficamos melhores em identificar as pessoas que chegam com caminhões de mudança.
Obrigado
A cada usuário que ficou conosco através de tempos de carregamento mais lentos e requisitos de créditos: obrigado.
A todos que reportaram problemas em vez de simplesmente ir embora: obrigado.
À comunidade de desenvolvedores indie que compartilhou conselhos e histórias de guerra: obrigado.
À Cloudflare: obrigado. 🙏
Somos mais fortes agora. Mais resilientes. Testados em batalha. A plataforma que emergiu desses ataques é melhor do que a que entrou.
Da próxima vez que escrevermos para você, esperamos que seja para anunciar uma nova funcionalidade empolgante.
Não outro chefe que derrotamos.
Mas ei — se outro chefe aparecer, vamos lidar com isso também.
Até a próxima atualização. 💙
A Equipe Reverie
Dezembro 2025
Pronto para Experimentar Conversações Dinâmicas com IA?
Junte-se a milhares de utilizadores que já exploram personalidades infinitas e interações envolventes no Reverie.