Un token de bot dans la nature, ça a mal tourné

Ecrit le 27/06/2018

Nan, c’est pas un clickbait; ça a réellement mal tourné. Je veux poser ce qui s’est passé par écrit afin que ça reste quelque part écrit les conséquences de secrets mal gérés.

Contexte

C’était donc un bot Discord avec 33 serveurs à son actif et une envie de le faire tourner 24/7 sur une de mes machines. Je n’avais aucune connaissance du code source et je voulais juste m’affairer à exécuter le code qui était présent…

Ce qui s’est passé…

Aux environs de 17 heures, je reçois un petit PM du dev qui me dit que plein de serveurs se sont faits “hack”1 depuis que le bot est chez moi. Forcément, je m’étonne un peu beaucoup et je commence à regarder les journaux système.

Pas de trace de connexion suspecte réussie, pas de mail de Fail2ban. De plus, je ne suis pas une cible intéressante pour des attaquants donc je peux exclure cette hypothèse. Je m’avance alors avec une hypothèse qui fait froid dans le dos: le token a pu être accidentellement publié et ensuite volé. Le dev principal me répond que le token ne peut avoir été publié pusiqu’il était apparament caché… Je continue en prenant l’URL du repository. Là dedans, je trouve un .gitignore mais sous forme de dossier. Je regarde un peu et là, surprise ! Les sources du bot.

Première chose pour ceux qui ne savent pas: pour ignorer un fichier ou un dossier dans un repository git, créer un fichier .gitignore et mettre ce qu’il y a à ignorer. Le dossier sera de toutes manières versionné et affiché même si sur un système GNU/Linux il est caché.

J’ai ensuite regardé l’imposant fichier princinpal et je scroll à la dernière ligne. Devinez donc ce qui se trouvait là ? (Pourquoi je vous demande de deviner ce qui se trouvait dans ce fichier alors que vous êtes derrière votre écran en train de lire ?) Eh bien, j’ai touvé le shiny token magique légendaire qui a permis de causer autant de capharnaüm.

Personnellement, je n’ai pas apprécié de voir le token en clair perdu au milieu de la nature. En fait, ça m’a presque fait rager de voir un token, un équivalent de couple identifiant-mot de passe, écrit en dur et dans la nature. Dans un monde paralèlle, beaucoup de choses peu agréables se sont passées, dont une vidéaste qui a profité de l’occasion pour faire une vidéo pour balancer ses ~3K abonnés sur une innocente personne qui n’y est pour rien. Je n’ai pas du tout vu la première vidéo. Vu les retours qui sont revenus, c’était surtout du négatif avec des accusations lancées sans preuves évidentes. Du côté public, on ne sait qu’une chose: que beaucoup de serveurs se sont faits détruire.

J’ai écrit une annonce en vitesse deux cents pour essayer de donner un début d’explication au public. Après, une bonne dose d’explications de vive voix. PENDANT QUATRE FRICKEN HEURES POUR EXPLIQUER AUX GENS QUAND ILS T’INTERROMPENT TOUS LES DEUX MOTS ! Uhgrrr… c’était pas agréable, surtout quand personne ne t’écoute, t’interrompt tout les deux mots et ne te laissent pas glisser un mot. Je vous admets bien qu’on a fini par faire une vidéo de remplacement pour tout bien expliquer.

Les conséquences de cet incident.

Là, je touche à la partie sensible et je risque d’être salé. Je vous ai prévenus. Comparé aux sauts d’humeur et dégradations d’humeur qui ont touché plusieurs personnes dans ce bordel, environ 30 serveurs en bas, c’est rien. Oui, vous avez bien lu: ce n’est rien comparé aux atteintes d’humeur des personnes concernées. 30 serveurs, ce n’est rien comparé aux dégâts provoqués par les hors-le-règlement qui sont constitués de pas mal de serveurs de raid que l’on veut pas entendre. Ou que l’on entend parler de temps en temps via des sympatiques personnes braillant des pavés remplis de fautes.

Avant de sortir vos mails et commencer à m’écrire des gentils mots remplis de haine et/ou de hurlements, imaginez donc un instant que votre bot a détruit par accident 30 serveurs environ. Le malaise monte, certes. Mais en plus, vous vous faites attaquer en MP par beaucoup d’autres personnes, qui ne savent rien ou peu de ce qui s’est passé. Mais attention, pas de la petite attaque. Des gentils messages salés d’insultes en tous genres et d’attaques personnelles arrivant par dizaine. Vous vous sentiriez bien ? La réponse me semble évidente et je vous laisse y répondre. Maintenant, imaginez la scène mais avec 94 serveurs démontés parce que j’ai peut-être foiré sur le token. Ça m’étonnerait beaucoup, mais après tout, je peux aussi me rater sur quelque chose pareil.

Pour ma part, j’ai eu une grosse monté de rage avec un piquant en plus quand je me suis fait interrompe dans mon raisonnement toutes les deux secondes avec des personnes qui, de temps en temps, s’en fichaient bien de ce que je débitais.

Ce qu’il y a à tirer de cette pagaille

Primo, gérez correctement vos secrets au sein de vos programmes. S’il vous plait, n’écrivez jamais en dur vos tokens d’accès aux APIs. Et si vous commitez et publiez sur le serveur par accident, révoquez. Secondo, quand vous avez un bazar pareille, ne commencez pas à aller insulter le monde et à faire tout un scandale. Attendez plutôt que l’on vienne vous expliquer ce qui s’est passé. Ça permet d’éviter des malentendus qui peuvent se produire.



  1. Mot universel utilisé par pas mal de membres pour décrire ce que le mot sous-entend… C’est pas le mot le plus approprié non plus mais bon, passons