for-real - l’extension Chrome anti-suppression créée après avoir anéanti toute une organisation GitHub
(github.com/bssm-oss)En voulant supprimer un dépôt de test, j’ai anéanti toute une organisation GitHub de 9 personnes.
J’étais en train de faire des tests end-to-end d’un bot webhook Discord. En croyant être dans les Settings du dépôt de test, j’ai fait défiler jusqu’à la Danger Zone et cliqué sur « Delete this repository ». Juste après la suppression, la page de redirection n’affichait pas une 404 du dépôt, mais une 404 de l’organisation, et c’est seulement là que j’ai réalisé que j’étais depuis le début dans les Settings de l’organisation.
Le coup fatal, c’est que je n’ai pas lu correctement le texte de confirmation. Convaincu que la cible à supprimer était évidemment le dépôt de test, j’ai fait un copier-coller, alors que ce qui était réellement attendu dans le champ était le nom de l’organisation. Un simple copier-coller, et c’est passé tel quel. Dépôts, issues, PR, discussions, historique CI : tout a disparu d’un coup.
J’ai envoyé en urgence un message KakaoTalk à mes coéquipiers, puis un mail au support GitHub, avant d’attendre 7 jours ouvrés. Pendant ce temps, impossible de push ou même de consulter les issues.
Mais plus j’y pensais, plus ça me semblait étrange.
Que ce soit pour supprimer un dépôt ou une organisation, la procédure de restauration est la même : « envoyer un mail au support ». Sauf qu’une organisation peut contenir des dizaines de membres et des dizaines de dépôts, mais l’UI réutilise telle quelle le flux de suppression d’un dépôt, autorise toujours le copier-coller et n’affiche aucun avertissement à la hauteur du risque. Un bouton capable de détruire 100 fois plus est protégé par les mêmes garde-fous fragiles.
C’est pour ça que j’ai créé for-real.
Quand on appuie sur le bouton de suppression dans un dépôt ou une organisation enregistrés, l’extension intercepte le clic et il faut taper manuellement un code aléatoire de 20 caractères pour déverrouiller l’action pendant 5 minutes. Le copier-coller est bloqué. Si l’intention est réelle, il suffit de le taper.
Je sais que GitHub affiche déjà un avertissement dans la Danger Zone. Mais si cela peut éviter à ne serait-ce qu’une seule personne de faire la même erreur que moi, alors ces quelques secondes supplémentaires valent largement le coût.
L’extension est actuellement en cours de validation sur le Web Store, donc pour l’instant seule l’installation en mode non empaqueté est possible. Le guide d’installation et le code source sont disponibles dans le dépôt. Les retours sont les bienvenus.
Showcase : https://www.youtube.com/watch?v=n3q9DMqOb_s
10 commentaires
J’avais déjà entendu l’histoire de quelqu’un qui voulait supprimer sa chaîne YouTube et a finalement supprimé son compte Google (heureusement, il a pu le récupérer).
S’il y avait eu une procédure comme celle-ci pour cette personne aussi, est-ce que cette catastrophe aurait pu être évitée... ?
On peut donc vraiment confondre « Delete this repository » et « Delete this organization ».
L’interface des Settings se ressemble plus que je ne le pensais, donc en le faisant un peu dans le vague, je m’y suis perdu ;;
GitHub l’a bien séparé dans la Danger Zone, mais au final, les erreurs humaines arrivent aussi là-dedans,,
Il faut faire attention...
https://httpie.io/blog/stardust Il y a déjà eu auparavant un cas similaire où 54k étoiles avaient été remises à zéro ; à l’époque aussi, des problèmes d’interface avaient été pointés du doigt, et dire que cela remonte déjà à 4 ans.
Vous avez dû avoir des frissons dans le dos. C’est admirable de partager votre expérience et de proposer une solution pour éviter que le problème ne se reproduise.
Je me dis qu’une suppression d’une telle ampleur devrait peut-être s’accompagner d’une période de grâce. Comme la corbeille d’un ordinateur, il semblerait utile qu’une suppression réelle n’intervienne qu’après quelques jours, avec un mécanisme permettant de la restaurer d’ici là.
Ouh là, ça fait peur...
Il suffirait sans doute d’empêcher le copier-coller.
Moi aussi, je l’ai supprimé en faisant un simple copier-coller sans réfléchir… donc, dans ce projet, j’ai aussi mis en place une protection contre le copier-coller. Merci d’avoir lu l’article.
Merci de partager cet excellent programme. Ce serait bien si GitHub retardait lui-même la suppression d’une organisation ou d’un compte de 24 à 72 heures environ.