Analyse de votre dépôt à la recherche de secrets avec TruffleHog
Vous avez accidentellement commité une clé API dans votre dépôt ? Vous n’êtes pas seul. Des milliers d’identifiants fuient via git chaque jour, restant souvent dans l’historique des commits bien après que les développeurs pensent les avoir supprimés. L’analyse de secrets avec TruffleHog offre un moyen simple de détecter les clés API exposées dans les dépôts avant qu’elles ne deviennent des incidents de sécurité.
Cet article explique le fonctionnement de TruffleHog, comment analyser les dépôts git à la recherche de secrets localement et en CI, et comment interpréter les résultats pour prioriser efficacement la remédiation.
Points clés à retenir
- TruffleHog analyse l’intégralité de l’historique git, pas seulement les fichiers actuels, révélant les secrets enfouis dans d’anciens commits
- Les résultats vérifiés indiquent des identifiants actifs et exploitables nécessitant une rotation immédiate
- L’intégration de TruffleHog dans les pipelines CI empêche les fuites d’identifiants avant qu’elles n’atteignent la production
- Lorsque des secrets sont découverts, effectuez d’abord la rotation, puis supprimez-les de l’historique avec des outils comme BFG Repo-Cleaner ou git-filter-repo
Pourquoi les secrets se retrouvent dans Git
Les développeurs vont vite. Un mot de passe de base de données est codé en dur pendant le débogage. Une clé AWS atterrit dans un fichier de configuration. Ces erreurs se produisent constamment, et l’historique immuable de git signifie que même les secrets « supprimés » persistent dans les commits plus anciens.
Le risque est réel : des bots automatisés scannent en continu les dépôts publics, et les identifiants exposés peuvent être exploités quelques minutes après avoir été poussés. Même les dépôts privés ne sont pas à l’abri : un seul compte développeur compromis ou un contrôle d’accès mal configuré peut tout exposer.
Comment TruffleHog détecte les secrets
TruffleHog n’est pas un simple outil grep. Il utilise une analyse basée sur des détecteurs avec des centaines de motifs intégrés pour des types d’identifiants spécifiques : clés AWS, tokens GitHub, clés API Stripe, chaînes de connexion de bases de données, et plus encore.
L’approche de détection combine :
- Correspondance de motifs : détecteurs regex ajustés pour les formats de secrets connus
- Analyse contextuelle : examen du code environnant pour réduire le bruit
- Vérification optionnelle : test des identifiants auprès des API réelles pour confirmer qu’ils sont actifs
Cette approche en couches signifie moins de faux positifs que les scanners basés uniquement sur l’entropie. Lorsque TruffleHog signale quelque chose, cela vaut généralement la peine d’enquêter.
Analyse d’un dépôt local
Pour analyser un dépôt git à la recherche de secrets localement, pointez TruffleHog vers votre dépôt :
trufflehog git file://.
Cela analyse l’intégralité de l’historique git, pas seulement l’arbre de travail actuel. Les secrets enfouis dans d’anciens commits sont révélés aux côtés des plus récents.
Pour un retour plus rapide pendant le développement, vous pouvez limiter la portée de l’analyse aux commits récents ou à des branches spécifiques. Cela rend pratique son exécution avant de pousser des modifications.
Comprendre les résultats vérifiés vs non vérifiés
TruffleHog distingue deux types de résultats :
- Vérifiés : l’identifiant a été testé auprès de son API et confirmé actif
- Non vérifiés : le motif correspond à un format de secret connu, mais la vérification n’était pas possible ou n’a pas été tentée
Les résultats vérifiés exigent une action immédiate : ce sont des identifiants actifs qui pourraient être exploités dès maintenant. Les résultats non vérifiés méritent toujours un examen, mais vous pouvez les prioriser moins lors du tri d’un grand ensemble de résultats.
Pour filtrer la sortie et n’afficher que les résultats vérifiés :
trufflehog git file://. --only-verified
Discover how at OpenReplay.com.
Intégration de TruffleHog GitHub Action dans la CI
L’exécution manuelle d’analyses détecte les problèmes, mais l’automatisation les prévient. La TruffleHog GitHub Action s’intègre directement dans votre pipeline CI pour analyser chaque pull request et push.
Une configuration de workflow basique analyse les modifications entrantes et fait échouer le build si des secrets sont détectés. Cela crée une barrière qui arrête les fuites d’identifiants avant qu’elles n’atteignent votre branche principale, ou pire, la production.
L’action prend en charge l’analyse uniquement du diff (plus rapide pour les vérifications de PR) ou de l’intégralité de l’historique du dépôt (utile pour les audits périodiques). La plupart des équipes exécutent des analyses légères de diff sur chaque PR et programment des analyses complètes de l’historique chaque semaine.
Au-delà de Git : autres cibles d’analyse
Bien que cet article se concentre sur les workflows git, TruffleHog prend en charge des cibles supplémentaires : systèmes de fichiers, buckets S3 et images Docker. Pour la plupart des développeurs, les scanners git et système de fichiers couvrent les cas d’usage typiques. Les capacités plus larges deviennent pertinentes à mesure que votre infrastructure se développe.
Que faire lorsque des secrets sont découverts
Trouver un secret n’est que la première étape. La réponse compte davantage :
- Effectuez immédiatement la rotation de l’identifiant : partez du principe qu’il est compromis
- Supprimez-le de l’historique git en utilisant des outils comme BFG Repo-Cleaner ou git-filter-repo
- Auditez les journaux d’accès du service concerné pour vérifier toute utilisation non autorisée
- Mettez à jour votre workflow pour empêcher les fuites d’identifiants dans le contrôle de source à l’avenir
Simplement supprimer le fichier et commiter à nouveau n’aide pas. Le secret reste dans l’historique jusqu’à ce que vous le réécriviez.
Conclusion
TruffleHog fonctionne mieux comme contrôle préventif, pas seulement comme outil d’audit. Exécutez-le tôt dans la CI, idéalement sur chaque pull request. Plus tôt vous détectez un identifiant divulgué, plus le rayon d’impact est petit.
Associez l’analyse automatisée à de bonnes pratiques d’hygiène : utilisez des variables d’environnement pour les secrets, ajoutez des motifs sensibles à .gitignore, et envisagez des hooks pre-commit pour l’application locale.
L’analyse de secrets n’éliminera pas tous les risques, mais elle réduit considérablement la fenêtre entre une erreur et sa découverte. C’est souvent la différence entre un incident évité de justesse et un incident réel.
FAQ
TruffleHog analyse par défaut l'intégralité de l'historique git, pas seulement l'arbre de travail actuel. Cela signifie que les secrets enfouis dans d'anciens commits sont révélés même s'ils ont été supprimés dans des commits ultérieurs. L'historique immuable de Git préserve tout, donc une analyse complète est essentielle pour trouver tous les identifiants exposés.
Les résultats vérifiés signifient que TruffleHog a testé l'identifiant auprès de son API réelle et confirmé qu'il est toujours actif. Les résultats non vérifiés correspondent à des motifs de secrets connus mais n'ont pas été validés. Priorisez les résultats vérifiés pour une action immédiate car ils représentent des identifiants actifs et exploitables.
Supprimer le fichier et commiter ne supprimera pas le secret de l'historique. Utilisez des outils comme BFG Repo-Cleaner ou git-filter-repo pour réécrire l'historique git et purger l'identifiant de tous les commits. Après réécriture, effectuez un force-push vers le dépôt distant et demandez à tous les collaborateurs de re-cloner le dépôt.
Oui, TruffleHog peut s'exécuter comme hook pre-commit pour une application locale. Cela détecte les secrets avant qu'ils n'atteignent votre dépôt distant. Combinez les hooks pre-commit avec l'intégration CI pour une défense en profondeur, garantissant que les secrets sont bloqués à la fois localement et dans votre pipeline.
Understand every bug
Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.