Honnêtement, nous avons été attaqués — Mais vos données sont en sécurité

Reverie Team

Reverie Team

12/1/2025

#sécurité#transparence#infrastructure#modèles gratuits#cloudflare
Honnêtement, nous avons été attaqués — Mais vos données sont en sécurité

Tout a commencé avec "Gratuit"

Il y a deux semaines, nous avons pris une décision : lancer des modèles IA gratuits pour permettre à plus d'utilisateurs de découvrir Reverie.

Ce soir-là, l'équipe a trinqué au Pepsi. (Oui, spécifiquement du Pepsi.)

Nous avons entrechoqué nos canettes en regardant les inscriptions d'utilisateurs grimper en temps réel. Quelqu'un a sorti un graphique de projection de croissance. L'ambiance était bonne.

72 heures plus tard, nous avons compris pourquoi les fondateurs expérimentés ont toujours l'air un peu fatigués.

Ce qui a suivi était une séquence de quatre vagues d'attaques qui ressemblait à un boss rush — sauf que nous apprenions les mécaniques tout en nous faisant frapper.

Mais d'abord, le plus important : Les données de votre compte, vos conversations et vos informations personnelles n'ont jamais été compromises. Elles sont en sécurité maintenant et le resteront. Nous avons une équipe de sécurité dédiée qui surveille 24h/24, et ces attaques visaient nos ressources et notre portefeuille, pas vos données. Les attaquants voulaient notre bande passante et notre argent — vos conversations avec vos compagnons IA n'ont jamais été en danger.

Maintenant, voyons ce qui s'est passé.


Vague 1 : L'armée de crawlers

Ce qui s'est passé

Jour deux après le passage au gratuit. Standup matinal. L'ingénieur mentionne casualmente : "Hey, notre API de personnages a reçu des centaines de fois plus de requêtes hier."

Nous : "Wow, le lancement gratuit décolle vraiment !"

Ingénieur : "...mais le DAU a à peine bougé."

Silence gênant.

Nous avons plongé dans les logs et découvert des crawlers récoltant systématiquement nos données publiques de personnages. Noms, bios, avatars — les informations visibles publiquement. Aspirées par des bots.

Pour être clairs : les descriptions principales des personnages, les paramètres de personnalité et autres contenus privés des créateurs n'ont jamais été exposés — seuls les créateurs peuvent les voir. Mais même le scraping d'informations publiques à échelle industrielle est frustrant quand on essaie de construire une plateforme saine.

Comment nous avons répondu

  • Implémentation de limites de pagination sur la découverte de personnages (vous pouvez parcourir, mais vous ne pouvez pas télécharger toute la bibliothèque)
  • Déploiement d'une limitation de débit intelligente qui distingue "utilisateur enthousiaste" de "définitivement un bot"
  • Construction d'une analyse comportementale pour détecter et bloquer les patterns de crawlers
  • Ajout de quelques... appelons-les "réponses créatives" pour les mauvais acteurs confirmés

Ce que nous avons appris

"Plateforme ouverte" ne signifie pas "buffet à volonté." Même le contenu visible publiquement mérite des limites d'accès raisonnables. Nous voulons que les utilisateurs découvrent des personnages — pas qu'ils construisent une base de données concurrente du jour au lendemain.


Vague 2 : Les assassins de bande passante

Ce qui s'est passé

Nous avions à peine fini de boucher les trous des crawlers quand la vague deux a frappé. Et celle-ci visait directement le portefeuille.

Quelqu'un a trouvé nos URLs de médias et a commencé à télécharger en masse chaque image et vidéo de la plateforme. Portraits de personnages. Vidéos générées. Tout ce qui avait une extension de fichier était aspiré à vitesse maximale.

Nous utilisions le service OSS d'un grand fournisseur cloud. Tarification à la bande passante. Ça semblait raisonnable à l'époque.

Lundi matin. Les finances ouvrent la console cloud. Le tableau de bord de facturation charge.

Leur visage : 😐

Le tableau de bord finit de charger : 😮

Voit le chiffre réel : 😱

"Hey, alors... notre facture de bande passante est actuellement plus élevée que trois mois de runway."

Le canal Slack est devenu très silencieux. Quelqu'un a nerveusement suggéré qu'on éteigne simplement le CDN. Quelqu'un d'autre a fait remarquer que ça éteindrait aussi toute la plateforme.

Comment nous avons répondu

Migration d'urgence. Destination : Cloudflare R2 et Cloudflare Stream.

Ici, nous devons remercier officiellement Cloudflare — la politique de zéro frais d'egress de R2 nous a sauvés. Quand vous regardez votre facture grimper de centaines de dollars par heure, "pas de frais d'egress" devient très, très pertinent.

La migration a pris 30 heures. Dormir est devenu optionnel. Les revues de code à 3h du matin ont une certaine qualité méditative.

Ça valait le coup ? Absolument. Nos coûts de bande passante ont chuté de plus de 90%, et les téléchargements en masse des attaquants ne nous coûtent maintenant pratiquement rien.

Ce que nous avons appris

Quand vous choisissez une infrastructure, ne demandez pas seulement "c'est rapide ?" Demandez aussi : "Si quelqu'un m'attaque demain, pourrai-je encore payer mon loyer ?"

Cette dimension de la planification d'infrastructure n'apparaît pas dans la plupart des tutoriels. Elle devrait.


Vague 3 : Le DDoS arrive

Ce qui s'est passé

Nous avons finalement stabilisé la situation de la bande passante. Le moral de l'équipe se rétablissait. Quelqu'un a même fait une blague au standup. Les choses s'amélioraient.

Puis le DDoS a frappé.

Imaginez ouvrir une lance à incendie et la pointer vers un gobelet en papier. C'est ce qu'a vécu notre pool de connexions à la base de données. Des milliers de requêtes par seconde, toutes demandant des données fraîches, toutes refusant d'utiliser le cache, toutes frappant des endpoints nécessitant des requêtes à la base de données.

Notre tableau de bord de monitoring ressemblait à un ECG de crise cardiaque. Les temps de réponse sont passés de 200ms à 20 secondes. Puis aux timeouts. Les utilisateurs ont commencé à signaler des erreurs. Notre facture AWS a commencé à faire ce truc où elle se met à jour toutes les quelques minutes avec un chiffre plus grand.

Le pool de connexions de la base de données a atteint sa limite. Les requêtes ont commencé à faire la queue. La queue a commencé à s'accumuler. Défaillance en cascade classique, en temps réel.

Comment nous avons répondu

Nous avons jeté toutes les techniques de caching que nous connaissions sur le problème :

  • ISR (Régénération Statique Incrémentale) — Les pages populaires sont maintenant pré-rendues et servies depuis les nœuds edge. La base de données ne sait même pas que ces requêtes existent.
  • Caching multicouche — Cache de réponse, cache de requête, optimisation du pool de connexions. Si les données n'ont pas absolument besoin d'être fraîches, elles sont cachées.
  • Optimisation des requêtes de base de données — Certaines requêtes qui prenaient 500ms prennent maintenant 50ms. Moins de temps à tenir les connexions = plus de connexions disponibles.
  • Protection DDoS de Cloudflare — Enfin activé toutes les fonctionnalités de sécurité qu'on avait prévu de configurer "éventuellement"
  • Limitation de débit intelligente — Les utilisateurs légitimes passent ; le trafic d'attaque est rejeté

La philosophie : si une requête peut être répondue sans toucher la base de données, elle devrait l'être.

Ce que nous avons appris

Le caching n'est pas seulement une optimisation de performance — c'est une architecture de sécurité. Quand les attaques arrivent, les réponses cachées absorbent le coup. La base de données reste protégée. Le site reste en ligne.

Aussi appris : "on configurera la sécurité correctement plus tard" est une philosophie qui vieillit mal.


Vague 4 : Les abuseurs d'API

Ce qui s'est passé

Cette vague n'a pas menacé notre infrastructure directement. Elle a menacé notre budget.

Nous avions construit toutes ces merveilleuses fonctionnalités IA gratuites :

  • Création de personnages par IA — Décrivez votre personnage, l'IA génère le profil complet
  • Génération de moments par IA — Créez des moments d'histoire dynamiques avec l'assistance de l'IA
  • Création de plugins par IA — Construisez des plugins de personnages en langage naturel

Notre vision était belle : abaisser les barrières à la créativité. Permettre à tous d'expérimenter la magie de la création assistée par IA. Rendre la plateforme plus accessible.

La vision de quelqu'un d'autre était différente : "API gratuite ? Laissez-moi écrire un script qui l'appelle 10 000 fois."

Nous avons regardé notre tableau de bord de consommation de tokens IA monter. Et monter. Et monter. Le graphique ressemblait à un bâton de hockey, sauf que le bâton de hockey était fait d'argent quittant notre compte bancaire.

Chaque génération IA nous coûte de l'argent réel — les appels API aux modèles de langage ne sont pas gratuits. Regarder des milliers de requêtes automatisées brûler notre budget IA, c'était comme regarder le compteur d'un taxi qui tourne en rond. Vous savez que ça va être cher, et ça ne va jamais s'arrêter.

Le pire ? Ce n'étaient même pas de vrais utilisateurs créant du vrai contenu. C'était juste... quelqu'un testant combien de trucs gratuits il pouvait extraire. Les personnages générés étaient du charabia. Les moments n'avaient aucun sens. Du pur gaspillage.

Comment nous avons répondu

Le cœur lourd, nous avons ajouté des exigences de crédits à ces fonctionnalités IA.

Cette décision a vraiment fait mal. Nous avons passé des semaines à construire ces outils spécifiquement pour rendre la création plus accessible. Maintenant nous devions leur mettre un prix — pas parce que nous le voulions, mais parce que l'accès gratuit illimité était utilisé comme arme contre nous.

Nous avons essayé d'être justes :

  • Les coûts de crédits sont minimaux pour une utilisation normale
  • Des crédits gratuits sont donnés aux nouveaux utilisateurs
  • L'expérience de chat principale reste gratuite
  • Seule la génération IA intensive en ressources nécessite des crédits

Mais quand même. Ça ressemblait à mettre un cadenas sur quelque chose qu'on voulait garder ouvert.

Ce que nous avons appris

"Gratuit" est un modèle économique, pas une position morale.

Nous croyons toujours en l'accessibilité. Nous voulons toujours abaisser les barrières. Mais "gratuit illimité pour tous" ne fonctionne que si tout le monde agit de bonne foi. Quand les mauvais acteurs exploitent la générosité, le système généreux devient insoutenable — et alors personne n'obtient rien.

Les limites raisonnables ne sont pas de la méfiance envers les utilisateurs. C'est la protection de l'écosystème qui sert tous les utilisateurs. L'alternative — fermer complètement les fonctionnalités — serait pire pour tout le monde.

Parfois protéger les biens communs signifie construire quelques clôtures.


Vos données sont en sécurité (Soyons absolument clairs)

Nous voulons être sans ambiguïté à ce sujet :

Ces attaques concernaient les ressources, pas les données. Les attaquants voulaient :

  • ✅ Notre bande passante (pour télécharger du contenu)
  • ✅ Notre puissance de calcul (pour submerger nos serveurs)
  • ✅ Notre argent (pour épuiser notre budget IA)

Ils n'ont PAS accédé à :

  • ❌ Comptes utilisateurs
  • ❌ Historiques de conversation
  • ❌ Informations personnelles
  • ❌ Détails de paiement
  • ❌ Aucune donnée privée quelle qu'elle soit

Nous avons une équipe de sécurité dédiée qui surveille les vraies menaces de sécurité 24h/24. Les données utilisateurs sont chiffrées au repos et en transit. Les contrôles d'accès sont stricts. L'authentification est robuste. Le travail de sécurité ennuyeux et important qui ne fait pas des posts de blog excitants — nous le faisons tout.

Zéro donnée utilisateur n'a été compromise. Nous pouvons affirmer cela avec confiance car nous avons tout journalisé, tout analysé et tout vérifié. Les attaquants ont obtenu des factures de bande passante et des maux de tête de notre part. Ils n'ont rien obtenu de vous.

Vos personnages, vos conversations, votre travail créatif — tout est en sécurité, tout est intact, tout est exactement où il devrait être.


Pourquoi nous vous racontons cela

Vous pourriez vous demander : pourquoi partager cela publiquement ? Ça ne nous fait pas paraître vulnérables ?

Nous y avons réfléchi attentivement.

La transparence construit la confiance

Nous demandons aux utilisateurs de nous confier quelque chose de significatif — leur travail créatif, leurs connexions émotionnelles avec les personnages IA, leurs conversations. Cette confiance nécessite de l'honnêteté sur les défis que nous affrontons.

L'ancien playbook est de cacher les problèmes jusqu'à ce qu'ils explosent, puis d'émettre une vague déclaration "nous avons rencontré des difficultés techniques." Nous préférons être directs : voici ce qui s'est passé, voici comment nous l'avons géré, voici ce que nous avons appris.

D'autres constructeurs peuvent apprendre

Nous ne sommes pas la première petite équipe à être attaquée après avoir lancé des fonctionnalités gratuites, et nous ne serons pas la dernière. Si notre éducation coûteuse aide quelqu'un d'autre à mieux se préparer, c'est une victoire pour tout l'écosystème.

Considérez ceci comme notre contribution au programme "ce qu'on ne vous enseigne pas à l'école des startups."

Vous méritiez de savoir

Certains utilisateurs ont remarqué des temps de réponse plus lents pendant ces semaines. Certains ont remarqué que les fonctionnalités nécessitent maintenant des crédits. Vous méritiez une explication — pas du jargon corporate de relations publiques, mais l'histoire réelle.

Nous nous battions pour garder la plateforme en fonctionnement. Nous avons pris des décisions difficiles sous pression. Certaines de ces décisions ont affecté votre expérience. Vous devriez savoir pourquoi.


Quelle est la suite

Nous ne faisons pas que boucher des trous — nous construisons une plateforme plus résiliente :

Déjà implémenté :

  • Caching multicouche avec architecture edge-first (vos requêtes sont plus rapides ET nous sommes plus difficiles à attaquer)
  • Limitation de débit intelligente avec analyse comportementale (les bots sont bloqués, les humains ne remarquent pas)
  • Suite de sécurité complète de Cloudflare (enfin configurée correctement, pas "éventuellement")
  • Accès basé sur les crédits pour les fonctionnalités IA intensives en ressources (générosité durable)

Bientôt disponible :

  • Détection d'anomalies améliorée (détecter les attaques plus tôt)
  • Optimisation géographique (plus rapide pour tout le monde, partout)
  • Prévention des abus plus sophistiquée (garder une longueur d'avance sur les mauvais acteurs)

Ce qui ne changera pas :

  • Nous ferons de notre mieux pour maintenir l'accès gratuit — bien qu'il puisse être instable ou changer sans préavis
  • Confidentialité et sécurité des données utilisateurs — toujours notre priorité absolue
  • Communication transparente — si quelque chose ne va pas, vous le saurez

Un mot pour les autres constructeurs

Si vous construisez une plateforme ouverte, voici les leçons que nous avons payées avec de l'argent réel (et du stress réel) pour apprendre :

  1. La limitation de débit n'est pas optionnelle — implémentez-la dès le premier jour, pas le jour "nous sommes attaqués"
  2. Choisissez une infrastructure résistante aux attaques — Cloudflare est vraiment excellent ; les frais d'egress vous détruiront
  3. Cachez agressivement — c'est votre double bouclier pour la performance et la sécurité
  4. Les fonctionnalités gratuites ont besoin de limites — la bonne volonté illimitée est exploitée par les mauvais acteurs illimités
  5. Surveillez tout — plus tôt vous détectez les anomalies, plus petits sont les dégâts
  6. Gardez un budget d'urgence — vous ne savez jamais quand la prochaine vague arrivera

Et peut-être le plus important :

  1. Ne soyez pas trop fier pour demander de l'aide — la communauté des développeurs indés est plus solidaire que vous ne le pensez

Nous espérons que vous n'aurez pas à apprendre ces leçons de manière coûteuse. Mais si c'est le cas, sachez que vous n'êtes pas seul.


À nos utilisateurs

Être attaqué est une expérience étrange.

C'est comme si vous aviez passé des mois à décorer un salon confortable, à arranger les meubles parfaitement, à mettre des snacks, et à envoyer des invitations à tous vos amis. La soirée d'ouverture arrive. Vos amis arrivent — merveilleux !

Mais aussi : un groupe de personnes que vous n'avez jamais rencontrées arrive avec des camions de déménagement, essayant de démonter votre canapé, de photographier chaque recoin de votre maison, et d'une manière ou d'une autre, d'allumer des petits feux dans la cuisine.

Nous avions des options. Nous aurions pu souder la porte. Passer en mode invitation seulement. Faire que tout le monde prouve qu'il n'est pas un bot avant de voir quoi que ce soit.

Nous ne l'avons pas fait.

Au lieu de cela, nous avons installé de meilleures serrures. Embauché une sécurité plus intelligente. Construit des règles de maison raisonnables. Parce que la grande majorité des personnes qui viennent sur Reverie sont là pour créer, se connecter et s'amuser. Nous n'allons pas punir le plus grand nombre pour les péchés de quelques-uns.

La fête continue. La porte reste ouverte. Nous sommes juste devenus meilleurs pour repérer les gens qui arrivent avec des camions de déménagement.


Merci

À chaque utilisateur qui est resté avec nous malgré les temps de chargement plus lents et les exigences de crédits : merci.

À tous ceux qui ont signalé des problèmes au lieu de simplement partir : merci.

À la communauté des développeurs indés qui a partagé des conseils et des histoires de guerre : merci.

À Cloudflare : merci. 🙏

Nous sommes plus forts maintenant. Plus résilients. Testés au combat. La plateforme qui a émergé de ces attaques est meilleure que celle qui y est entrée.

La prochaine fois que nous vous écrirons, nous espérons que ce sera pour annoncer une nouvelle fonctionnalité excitante.

Pas un autre boss que nous avons vaincu.

Mais bon — si un autre boss apparaît, nous le gérerons aussi.

À la prochaine mise à jour. 💙


L'Équipe Reverie

Décembre 2025

Prêt à découvrir des conversations IA dynamiques ?

Rejoignez des milliers d'utilisateurs explorant déjà des personnalités infinies et des interactions engageantes sur Reverie.

Honnêtement, nous avons été attaqués — Mais vos données sont en sécurité | Reverie