
Partager:
Yonatan a participé à des projets impressionnants à l'université et dans l'industrie - de C/C++ à PHP et javascript en passant par Matlab. Il a été directeur technique chez Webiks et architecte logiciel chez WalkMe. Il est actuellement architecte logiciel chez Vonage et instructeur.
Comment supprimer un jeton secret de l'historique Git ?
Introduction
Dans cet article, vous apprendrez comment supprimer en toute sécurité les jetons d'authentification exposés de l'ensemble de l'historique de votre dépôt Git en utilisant la technologie BFGun puissant outil de nettoyage. Vous comprendrez également les risques de sécurité des secrets engagés et maîtriserez le processus étape par étape pour assainir votre dépôt de code et protéger les actifs numériques de votre organisation. C'est parti !
L'alerte de sécurité inattendue
Imaginez la situation : Vous êtes développeur, en plein milieu d'un sprint important, quand soudain un ticket JIRA atterrit dans votre boîte de réception. L'objet du ticket vous fait froid dans le dos : "Problème de sécurité critique - Token NPM exposé dans l'historique du référentiel".
L'analyse de sécurité automatisée a permis de découvrir quelque chose d'alarmant : un jeton d'authentification accidentellement intégré au référentiel il y a plusieurs années, enfoui dans des modifications datant de 4, 7 et 8 ans. Cela peut sembler de l'histoire ancienne, mais dans le monde de la cybersécurité, les vieux secrets peuvent être des bombes à retardement. Et votre RSSI peut se montrer très insistant pour résoudre ces problèmes (avec mérite...).
Ok, vous pouvez arrêter d'imaginer car cela nous est arrivé chez Vonage. Heureusement, vous pouvez tirer des leçons de notre expérience.
Les risques cachés des jetons exposés
Un jeton d'authentification exposé est plus qu'un simple oubli. Il s'agit d'une faille de sécurité importante qui peut potentiellement :
Permettre un accès non autorisé à des registres de paquets privés
Exposer l'infrastructure sensible de l'entreprise
Fournir un point d'entrée potentiel pour les acteurs malveillants
Risque lié à la propriété intellectuelle de l'entreprise
Violation potentielle des exigences de conformité
L'atteinte à la réputation d'une faille de sécurité peut dépasser de loin la commodité momentanée d'un jeton créé à la hâte.
La première chose à faire dans ce cas est d'effectuer une "rotation" de la ou des clé(s) secrète(s) concernée(s). Il suffit de les annuler et d'en créer de nouvelles. Mais le risque ne s'arrête pas là, car comme quelqu'un l'a dit dans une discussion de groupe JavaScript, les vieilles clés obsolètes pourraient contenir un indice sur l'algorithme du générateur de clés lui-même. Je ne suis pas un expert en cybersécurité (loin s'en faut), je me contenterai donc de l'avis des experts. Comment se débarrasser de la clé exposée dans le repo alors ?
Entrez dans BFG : votre meilleur ami pour le nettoyage de l'historique de Git
La solution ? BFG (Big Fast Git), un outil puissant conçu pour nettoyer rapidement et efficacement l'historique des dépôts Git. Voici un guide étape par étape de la suppression des jetons :
Dites à tous ceux qui travaillent sur le dépôt de suspendre leur travail pendant quelques minutes jusqu'à ce que vous apportiez vos modifications.
Téléchargez BFG et copiez-le dans son dossier.
Cloner le dépôt avec un miroir :
git clone --mirror https://github.com/your-name/your-repo.gitCopieJe vous suggère de le faire deux fois dans deux dossiers différents afin de disposer d'une sauvegarde de votre "ancien" référentiel en cas de problème.
Créer un fichier tokens.txt avec la syntaxe de remplacement :
old_token1==>PLACE_HOLDER1 old_token2==>PLACE_HOLDER2 ...CopieCela indiquera à BFG de remplacer toutes les instances des anciens jetons par leurs remplaçants.
En voici un exemple :
ab23234-89723c-aa7b7c==>${NPM_TOKEN}CopieExécutez BFG avec le fichier de remplacement (assurez-vous d'être dans le dossier parent du référentiel) :
java -jar bfg-1.14.0.jar --replace-text tokens.txt your-repo.git --no-blob-protectionCopieNettoyer le référentiel :
cd your-repo.git git reflog expire --expire=now --all && git gc --prune=now --aggressiveCopieVérifier que le jeton a été remplacé en clonant le miroir local et en le "grepant" :
cd .. && git clone your-repo.git && cd your-repo && git grep -n "REPLACE _WITH_YOUR_TOKENCopieSi le résultat est nul, cela signifie qu'il a fonctionné.
Forcez les changements :
cd your-repo.git git push --mirrorCopieDites à vos coéquipiers de récupérer et d'appliquer les modifications :
git fetch git reset --hard origin/mainCopie
Voilà, c'est fait. Votre dépôt est maintenant propre. À partir de maintenant, je suppose que le même outil qui vous a alerté sur les jetons peut tirer la sonnette d'alarme au cours d'un processus de RP avant que le jeton ne se "propage" à la branche principale. Assurez-vous que c'est le cas 😉
Conseils de pro pour la gestion des jetons
Ne jamais livrer les jetons directement dans les référentiels
Utiliser des variables d'environnement ou des outils de gestion des secrets sécurisés
Mettre en place des hooks de pré-commission pour éviter les commits accidentels de jetons
Auditer régulièrement l'historique de votre dépôt
Effectuez une rotation périodique des jetons, en particulier si vous soupçonnez une exposition.
Réflexions finales
À une époque où les menaces de cybersécurité se multiplient, la gestion proactive des référentiels n'est pas seulement une bonne pratique, c'est une nécessité. Des outils comme BFG fournissent aux développeurs des mécanismes puissants pour nettoyer les erreurs historiques et maintenir l'intégrité de leurs référentiels de code.
Bien que nous nous soyons concentrés sur le remplacement des jetons, le BFG est un outil polyvalent capable de.. :
Suppression des fichiers volumineux de l'historique du dépôt
Nettoyage des informations sensibles
Réduire la taille du référentiel
Assainissement des commits avant les projets d'open-sourcing
Si vous adhérez aux raisons pour lesquelles vous devriez utiliser des commits conventionnelsBFG peut vous permettre de pimenter vos anciens commits avec un texte de version et de changelog significatif.
N'oubliez pas qu'en matière de développement logiciel, ce qui est engagé n'est pas toujours définitif, grâce à des outils comme BFG.
Faites-nous part des autres problèmes Git que vous rencontrez sur notre Communauté Vonage Slack ou envoyez-nous un message sur X, anciennement connu sous le nom de Twitter.
Partager:
Yonatan a participé à des projets impressionnants à l'université et dans l'industrie - de C/C++ à PHP et javascript en passant par Matlab. Il a été directeur technique chez Webiks et architecte logiciel chez WalkMe. Il est actuellement architecte logiciel chez Vonage et instructeur.