- Le 3 août 2025, un incident de sécurité majeur a touché le site DrawAFish! pendant près de 6 heures
- La fuite du mot de passe administrateur, une API sans authentification et une faille de validation JWT ont exposé plusieurs vulnérabilités clés à l’attaque
- En conséquence, tous les noms d’utilisateur ont été modifiés en expressions offensantes, des dessins inappropriés ont été approuvés et des dessins sûrs existants ont été supprimés
- L’incident a été résolu via une restauration manuelle, la correction de la logique d’authentification et la vérification des sauvegardes
- La leçon principale est que la rapidité de développement (“vibe-coding”) associée au manque de tests et de revue de code peut avoir de graves conséquences de sécurité
Présentation de DrawAFish.com et résumé de l’incident du 3 août 2025
- DrawAFish.com est un site où les utilisateurs dessinent leurs propres poissons et les font nager dans un aquarium avec d’autres utilisateurs
- Le 1er août 2025, le site a reçu une forte attention en atteignant la première place de Hacker News. Le développeur a adopté une approche de « vibe-coding » pour implémenter rapidement les fonctionnalités avec des outils comme Copilot
- Pourtant, au petit matin du 3 août 2025, une violation de sécurité grave s’est produite
- Pendant près de 6 heures, les noms d’utilisateur ont été remplacés par des termes obscènes et des dessins inappropriés ont été approuvés, provoquant un désordre généralisé
- L’administrateur a finalement exécuté une restauration manuelle
Analyse détaillée des vulnérabilités
1. Mot de passe administrateur compromis (6 caractères)
- Le développeur a utilisé son propre identifiant d’enfance et un mot de passe à 6 caractères pour le compte administrateur
- Ce mot de passe avait déjà été divulgué en ligne via des fuites de données de sites comme Neopets
- Le développeur a ensuite activé Google Auth, mais n’a pas supprimé l’ancien mot de passe, laissant une vulnérabilité exploitable pour les attaquants
- L’attaquant a utilisé ces informations compromises pour réussir l’authentification administrateur, puis a accompli des actions malveillantes comme l’approbation de dessins offensants et la suppression de dessins normaux
2. API de modification de nom d’utilisateur sans authentification
- Le backend profil a été conçu pour aller vite, avec une API de changement de nom d’utilisateur implémentée sans vérification d’authentification
- En pratique, n’importe qui pouvait modifier le nom d’utilisateur de manière arbitraire
3. Vérification JWT insuffisante
- Dans l’authentification basée sur un token JWT, les opérations d’administration étaient possibles sans faire correspondre le token avec le couple
userId/email
- Ainsi, un attaquant ayant un token émis via des informations d’authentification administrateur pouvait l’utiliser avec des privilèges admin pour n’importe quelle requête
- Fait intéressant, un utilisateur de Hacker News a utilisé cette vulnérabilité pour supprimer le contenu inapproprié avant l’attaquant, aidant ainsi à la réponse d’urgence
Processus de récupération
- Vers 7 h 45, le développeur a constaté l’ampleur du problème et a commencé la réponse immédiatement depuis son ordinateur de bureau
- Les sauvegardes Firebase n’étaient pas configurées, donc il n’a pas pu s’appuyer dessus, et il a rapidement corrigé le code pour appliquer l’authentification de façon stricte
- Il a retracé tous les logs de modération et créé un script pour annuler les actions malveillantes (également écrit en mode vibe-coding)
- En situation d’urgence, il a également bloqué un compte tiers avec des privilèges administrateur (un utilisateur de Hacker News), puis l’a contacté pour obtenir un retour sur le refactoring de sécurité de la base de code et appliquer des correctifs supplémentaires
Culture de développement et enseignements
- Le développeur a constaté que le “vibe-coding”, c’est-à-dire le prototypage rapide avec peu de vérifications, peut offrir du fun et une forte productivité, mais peut aussi mener à de graves vulnérabilités de sécurité
- Les LLM (Copilot) sont extrêmement utiles pour produire du code rapidement, mais la qualité et la sécurité du code restent la responsabilité du développeur
- La suppression des contrôles essentiels comme les tests, la logique d’authentification et la revue de code a montré qu’un projet de petite taille peut devenir extrêmement vulnérable à des attaques externes
Conclusion et enseignements
- Le cas DrawAFish.com illustre l’importance des mesures de sécurité de base souvent négligées dans l’exploitation de services réels
- Même en s’appuyant sur des outils open source et des outils de développement rapides, il faut toujours vérifier des points fondamentaux comme tests, authentification, revue de code et gestion des mots de passe
- Une visibilité soudaine à grande échelle (par ex. un classement élevé sur Hacker News) peut faire exploser rapidement la surface d’attaque et le risque
- La publication transparente du postmortem a permis de transmettre des enseignements de sécurité réalistes aux startups et aux développeurs indépendants confrontés à des cas similaires
Aucun commentaire pour le moment.