Honestamente, fuimos atacados — Pero tus datos están seguros

Reverie Team
12/1/2025

Todo comenzó con "Gratis"
Hace dos semanas, tomamos una decisión: lanzar modelos de IA gratuitos para que más usuarios pudieran experimentar Reverie.
Esa noche, el equipo brindó con Pepsi. (Sí, específicamente Pepsi.)
Chocamos las latas mientras veíamos los números de registro de usuarios subir en tiempo real. Alguien sacó un gráfico de proyección de crecimiento. El ambiente era bueno.
72 horas después, entendimos por qué los fundadores experimentados siempre lucen un poco cansados.
Lo que siguió fue una secuencia de cuatro olas de ataques que se sintió como un boss rush — excepto que estábamos aprendiendo las mecánicas mientras nos golpeaban.
Pero primero, lo más importante: Los datos de tu cuenta, conversaciones e información personal nunca fueron comprometidos. Están seguros ahora y seguirán estándolo. Tenemos un equipo de seguridad dedicado monitoreando 24/7, y estos ataques apuntaban a nuestros recursos y billetera, no a tus datos. Los atacantes querían nuestro ancho de banda y dinero — tus conversaciones con tus compañeros de IA nunca estuvieron en riesgo.
Ahora, veamos qué pasó.
Ola 1: El ejército de crawlers
Qué pasó
Día dos después de volvernos gratuitos. Standup matutino. El ingeniero menciona casualmente: "Oye, nuestra API de personajes recibió cientos de veces más solicitudes ayer."
Nosotros: "¡Wow, el lanzamiento gratuito realmente está despegando!"
Ingeniero: "...pero el DAU apenas se movió."
Silencio incómodo.
Nos sumergimos en los logs y descubrimos crawlers recolectando sistemáticamente nuestros datos públicos de personajes. Nombres, bios, avatares — la información públicamente visible. Siendo absorbida por bots.
Para ser claros: las descripciones principales de personajes, configuraciones de personalidad y otro contenido privado de creadores nunca fueron expuestos — solo los creadores pueden ver eso. Pero incluso el scraping de información pública a escala industrial es frustrante cuando intentas construir una plataforma saludable.
Cómo respondimos
- Implementamos límites de paginación en el descubrimiento de personajes (puedes navegar, pero no puedes descargar toda la biblioteca)
- Desplegamos limitación de tasa inteligente que distingue "usuario entusiasta" de "definitivamente un bot"
- Construimos análisis de comportamiento para detectar y bloquear patrones de crawlers
- Añadimos algunas... llamémoslas "respuestas creativas" para los malos actores confirmados
Lo que aprendimos
"Plataforma abierta" no significa "buffet libre". Incluso el contenido públicamente visible merece límites de acceso razonables. Queremos que los usuarios descubran personajes — no que construyan una base de datos competidora de la noche a la mañana.
Ola 2: Los asesinos del ancho de banda
Qué pasó
Apenas terminamos de parchar los agujeros de los crawlers cuando llegó la ola dos. Y esta fue directo a la billetera.
Alguien descubrió nuestras URLs de medios y comenzó a descargar masivamente cada imagen y video de la plataforma. Retratos de personajes. Videos generados. Todo con extensión de archivo estaba siendo descargado a máxima velocidad.
Estábamos usando el servicio OSS de un proveedor de nube importante. Precio por ancho de banda. Parecía razonable en ese momento.
Lunes por la mañana. Finanzas abre la consola de la nube. El dashboard de facturación carga.
Su cara: 😐
Dashboard termina de cargar: 😮
Ve el número real: 😱
"Oye, entonces... nuestra factura de ancho de banda actualmente es más alta que tres meses de runway."
El canal de Slack se quedó muy callado. Alguien sugirió nerviosamente que simplemente apagáramos el CDN. Alguien más señaló que eso también apagaría toda la plataforma.
Cómo respondimos
Migración de emergencia. Destino: Cloudflare R2 y Cloudflare Stream.
Aquí, debemos agradecer formalmente a Cloudflare — la política de cero tarifas de egreso de R2 nos salvó. Cuando estás viendo tu factura subir cientos de dólares por hora, "sin tarifas de egreso" se vuelve muy, muy relevante.
La migración tomó 30 horas. Dormir se volvió opcional. Las revisiones de código a las 3 AM tienen cierta calidad meditativa.
¿Valió la pena? Absolutamente. Nuestros costos de ancho de banda bajaron más del 90%, y las descargas masivas de los atacantes ahora no nos cuestan prácticamente nada.
Lo que aprendimos
Al elegir infraestructura, no solo preguntes "¿qué tan rápido es?" También pregunta: "¿Si alguien me ataca mañana, todavía podré pagar el alquiler?"
Esta dimensión de planificación de infraestructura no aparece en la mayoría de los tutoriales. Debería.
Ola 3: Llega el DDoS
Qué pasó
Finalmente estabilizamos la situación del ancho de banda. La moral del equipo se estaba recuperando. Alguien incluso hizo un chiste en el standup. Las cosas mejoraban.
Entonces llegó el DDoS.
Imagina abrir una manguera de bomberos y apuntarla a un vaso de papel. Eso es lo que experimentó nuestro pool de conexiones de base de datos. Miles de solicitudes por segundo, todas demandando datos frescos, todas rechazando usar caché, todas golpeando endpoints que requerían consultas a la base de datos.
Nuestro dashboard de monitoreo parecía un ECG de ataque cardíaco. Los tiempos de respuesta pasaron de 200ms a 20 segundos. Luego a timeouts. Los usuarios empezaron a reportar errores. Nuestra factura de AWS comenzó a hacer esa cosa donde se actualiza cada pocos minutos con un número más grande.
El pool de conexiones de la base de datos llegó a su límite. Las consultas empezaron a hacer cola. La cola empezó a acumularse. Fallo en cascada clásico, sucediendo en tiempo real.
Cómo respondimos
Lanzamos cada técnica de caching que conocíamos al problema:
- ISR (Regeneración Estática Incremental) — Las páginas populares ahora se pre-renderizan y sirven desde nodos edge. La base de datos ni siquiera sabe que estas solicitudes existen.
- Caching multicapa — Caché de respuesta, caché de consulta, optimización del pool de conexiones. Si los datos no necesitan absolutamente ser frescos, se cachean.
- Optimización de consultas de base de datos — Algunas consultas que tomaban 500ms ahora toman 50ms. Menos tiempo manteniendo conexiones = más conexiones disponibles.
- Protección DDoS de Cloudflare — Finalmente habilitamos todas las características de seguridad que habíamos planeado configurar "eventualmente"
- Limitación de tasa inteligente — Los usuarios legítimos pasan; el tráfico de ataque es rechazado
La filosofía: si una solicitud puede responderse sin tocar la base de datos, debería hacerlo.
Lo que aprendimos
El caching no es solo una optimización de rendimiento — es una arquitectura de seguridad. Cuando llegan los ataques, las respuestas cacheadas absorben el golpe. La base de datos queda protegida. El sitio sigue funcionando.
También aprendimos: "configuraremos la seguridad apropiadamente después" es una filosofía que envejece mal.
Ola 4: Los abusadores de API
Qué pasó
Esta ola no amenazó nuestra infraestructura directamente. Amenazó nuestro presupuesto.
Habíamos construido todas estas maravillosas funciones de IA gratuitas:
- Creación de personajes con IA — Describe tu personaje, la IA genera el perfil completo
- Generación de momentos con IA — Crea momentos de historia dinámicos con asistencia de IA
- Creación de plugins con IA — Construye plugins de personajes con lenguaje natural
Nuestra visión era hermosa: bajar las barreras a la creatividad. Dejar que todos experimenten la magia de la creación asistida por IA. Hacer la plataforma más accesible.
La visión de alguien más era diferente: "¿API gratis? Déjame escribir un script que la llame 10,000 veces."
Vimos nuestro dashboard de consumo de tokens de IA subir. Y subir. Y subir. El gráfico parecía un palo de hockey, excepto que el palo de hockey estaba hecho de dinero saliendo de nuestra cuenta bancaria.
Cada generación de IA nos cuesta dinero real — las llamadas a API de modelos de lenguaje no son gratis. Ver miles de solicitudes automatizadas quemar nuestro presupuesto de IA se sentía como ver el taxímetro de un carro dando vueltas en círculos. Sabes que va a ser caro, y nunca va a parar.
¿Lo peor? Estos ni siquiera eran usuarios reales creando contenido real. Era solo... alguien probando cuántas cosas gratis podía extraer. Los personajes generados eran incoherentes. Los momentos no tenían sentido. Puro desperdicio.
Cómo respondimos
Con el corazón pesado, añadimos requisitos de créditos a estas funciones de IA.
Esta decisión genuinamente dolió. Pasamos semanas construyendo estas herramientas específicamente para hacer la creación más accesible. Ahora teníamos que ponerles precio — no porque quisiéramos, sino porque el acceso gratuito ilimitado estaba siendo usado como arma contra nosotros.
Intentamos ser justos:
- Los costos de créditos son mínimos para uso normal
- Se dan créditos gratis a nuevos usuarios
- La experiencia de chat principal sigue siendo gratuita
- Solo la generación de IA intensiva en recursos requiere créditos
Pero aún así. Se sentía como poner un candado en algo que queríamos mantener abierto.
Lo que aprendimos
"Gratis" es un modelo de negocio, no una posición moral.
Seguimos creyendo en la accesibilidad. Seguimos queriendo bajar barreras. Pero "gratis ilimitado para todos" solo funciona si todos actúan de buena fe. Cuando los malos actores explotan la generosidad, el sistema generoso se vuelve insostenible — y entonces nadie obtiene nada.
Los límites razonables no son desconfianza hacia los usuarios. Son protección del ecosistema que sirve a todos los usuarios. La alternativa — cerrar las funciones por completo — sería peor para todos.
A veces proteger los bienes comunes significa construir algunas cercas.
Tus datos están seguros (Seamos absolutamente claros)
Queremos ser inequívocos sobre esto:
Estos ataques fueron sobre recursos, no datos. Los atacantes querían:
- ✅ Nuestro ancho de banda (para descargar contenido)
- ✅ Nuestro cómputo (para abrumar nuestros servidores)
- ✅ Nuestro dinero (para drenar nuestro presupuesto de IA)
NO accedieron a:
- ❌ Cuentas de usuarios
- ❌ Historiales de conversación
- ❌ Información personal
- ❌ Detalles de pago
- ❌ Ningún dato privado en absoluto
Tenemos un equipo de seguridad dedicado que monitorea amenazas de seguridad reales 24/7. Los datos de usuarios están encriptados en reposo y en tránsito. Los controles de acceso son estrictos. La autenticación es robusta. El trabajo de seguridad aburrido e importante que no hace posts de blog emocionantes — lo hacemos todo.
Cero datos de usuarios fueron comprometidos. Podemos afirmar esto con confianza porque registramos todo, analizamos todo y verificamos todo. Los atacantes obtuvieron facturas de ancho de banda y dolores de cabeza de nosotros. No obtuvieron nada de ti.
Tus personajes, tus conversaciones, tu trabajo creativo — todo seguro, todo intacto, todo exactamente donde debería estar.
Por qué estamos contando esto
Podrías preguntarte: ¿por qué compartir esto públicamente? ¿No nos hace ver vulnerables?
Lo pensamos cuidadosamente.
La transparencia construye confianza
Estamos pidiendo a los usuarios que nos confíen algo significativo — su trabajo creativo, sus conexiones emocionales con personajes de IA, sus conversaciones. Esa confianza requiere honestidad sobre los desafíos que enfrentamos.
El viejo libro de jugadas es esconder los problemas hasta que exploten, luego emitir una vaga declaración de "experimentamos dificultades técnicas". Preferimos ser directos: esto es lo que pasó, así lo manejamos, esto es lo que aprendimos.
Otros constructores pueden aprender
No somos el primer equipo pequeño en ser atacado después de lanzar funciones gratuitas, y no seremos el último. Si nuestra educación costosa ayuda a alguien más a prepararse mejor, eso es una victoria para todo el ecosistema.
Considera esto nuestra contribución al currículo de "cosas que no enseñan en la escuela de startups".
Merecías saber
Algunos usuarios notaron tiempos de respuesta más lentos durante estas semanas. Algunos notaron que las funciones ahora requieren créditos. Merecías una explicación — no jerga corporativa de PR, sino la historia real.
Estábamos luchando para mantener la plataforma funcionando. Tomamos decisiones difíciles bajo presión. Algunas de esas decisiones afectaron tu experiencia. Deberías saber por qué.
Qué sigue
No solo estamos tapando agujeros — estamos construyendo una plataforma más resiliente:
Ya implementado:
- Caching multicapa con arquitectura edge-first (tus solicitudes son más rápidas Y somos más difíciles de atacar)
- Limitación de tasa inteligente con análisis de comportamiento (los bots son bloqueados, los humanos no lo notan)
- Suite de seguridad completa de Cloudflare (finalmente configurada apropiadamente, no "eventualmente")
- Acceso basado en créditos para funciones de IA intensivas en recursos (generosidad sostenible)
Próximamente:
- Detección de anomalías mejorada (detectar ataques más temprano)
- Optimización geográfica (más rápido para todos, en todas partes)
- Prevención de abuso más sofisticada (adelantarnos a los malos actores)
Lo que no cambiará:
- Haremos nuestro mejor esfuerzo para mantener el acceso gratuito — aunque puede ser inestable o cambiar sin aviso
- Privacidad y seguridad de datos de usuarios — siempre nuestra máxima prioridad
- Comunicación transparente — si algo sale mal, lo sabrás
Una nota para otros constructores
Si estás construyendo una plataforma abierta, aquí están las lecciones que pagamos con dinero real (y estrés real) para aprender:
- La limitación de tasa no es opcional — impleméntala desde el día uno, no el día "nos están atacando"
- Elige infraestructura resistente a ataques — Cloudflare es genuinamente excelente; las tarifas de egreso te destruirán
- Cachea agresivamente — es tu escudo doble para rendimiento y seguridad
- Las funciones gratuitas necesitan límites — la buena voluntad ilimitada es explotada por los malos actores ilimitados
- Monitorea todo — cuanto antes detectes anomalías, menor será el daño
- Mantén presupuesto de emergencia — nunca sabes cuándo llegará la próxima ola
Y quizás lo más importante:
- No seas demasiado orgulloso para pedir ayuda — la comunidad de desarrolladores indie es más solidaria de lo que esperarías
Esperamos que no tengas que aprender estas de la manera costosa. Pero si lo haces, sabe que no estás solo.
A nuestros usuarios
Ser atacado es una experiencia extraña.
Es como si pasaras meses decorando una acogedora sala de estar, arreglando los muebles justo bien, poniendo bocadillos y enviando invitaciones a todos tus amigos. Llega la noche de apertura. Tus amigos llegan — ¡maravilloso!
Pero también: un grupo de personas que nunca has conocido aparece con camiones de mudanza, intentando desmontar tu sofá, fotografiando cada rincón de tu casa, y de alguna manera también iniciando pequeños fuegos en la cocina.
Teníamos opciones. Podríamos haber soldado la puerta. Volvernos solo por invitación. Hacer que todos prueben que no son bots antes de ver cualquier cosa.
No lo hicimos.
En su lugar, instalamos mejores cerraduras. Contratamos seguridad más inteligente. Construimos reglas de casa razonables. Porque la gran mayoría de las personas que vienen a Reverie están aquí para crear, conectar y disfrutar. No vamos a castigar a los muchos por los pecados de los pocos.
La fiesta continúa. La puerta permanece abierta. Solo nos volvimos mejores en detectar a las personas que traen camiones de mudanza.
Gracias
A cada usuario que se quedó con nosotros a través de tiempos de carga más lentos y requisitos de créditos: gracias.
A todos los que reportaron problemas en lugar de simplemente irse: gracias.
A la comunidad de desarrolladores indie que compartió consejos e historias de guerra: gracias.
A Cloudflare: gracias. 🙏
Somos más fuertes ahora. Más resilientes. Probados en batalla. La plataforma que emergió de estos ataques es mejor que la que entró.
La próxima vez que te escribamos, esperamos que sea para anunciar una emocionante nueva función.
No otro jefe que derrotamos.
Pero bueno — si aparece otro jefe, también lo manejaremos.
Nos vemos en la próxima actualización. 💙
El Equipo Reverie
Diciembre 2025
¿Listo para experimentar conversaciones dinámicas con IA?
Únete a miles de usuarios que ya están explorando personalidades infinitas e interacciones atractivas en Reverie.