TruffleHog: Pour que vos secrets le restent
Mise à jour :
Les secrets (comme les mots de passe, clés API, tokens) peuvent devenir de réelles vulnérabilités s’ils sont exposés accidentellement dans le code ou dans les fichiers de configuration. TruffleHog est un outil conçu pour scanner non seulement l’historique des dépôts Git, mais aussi d’autres types de ressources.
L’exposition accidentelle de secrets dans le code ou les environnements de stockage cloud peut constituer une grave faille de sécurité. Ces informations sensibles peuvent être stockées dans des dépôts Git, images Docker, buckets Amazon S3 ou Google Cloud Storage (GCS), et même dans les pipelines CI/CD de services comme Jenkins. TruffleHog, initialement conçu pour scanner les dépôts Git, s’est enrichi pour couvrir ces nouvelles sources.
Grâce à ses deux techniques de détection – analyse par entropie et expressions régulières – TruffleHog peut identifier rapidement des secrets cachés dans divers environnements. Que ce soit dans un fichier, une image Docker, ou même un bucket cloud, TruffleHog vous aide à repérer et corriger ces fuites potentielles. Et c’est pas tout, TruffleHog peut scanner les clusters elasticsearch, les collections Postman et logs syslog
Installation de TruffleHog
Pour commencer à utiliser TruffleHog, voici les étapes d’installation.
Allez sur le dépôt Github de TruffleHog ↗ et téléchargez l’archive correspond à votre plateforme.
Vérifiez l’installation avec :
TruffleHog est maintenant prêt pour scanner vos projets à la recherche de secrets.
Utilisation de TruffleHog
Voici comment utiliser TruffleHog pour scanner différents types de ressources : dépôts Git, images Docker, buckets cloud, et autres.
Scan d’un répertoire local
Scan d’un Dépôt Git (GitHub, GitLab)
Pour un dépôt Git (sur GitHub, GitLab, ou en local), TruffleHog scanne l’intégralité de l’historique Git. La commande de base pour un dépôt en ligne est :
Pour un dépôt GitLab, la syntaxe est la même :
--only-verified
: Affiche uniquement les secrets vérifiés comme valides, pour
des rapports plus ciblés. Les résultats non vérifiés sont ignorés.
--no-update
: Ne met pas à jour les dépendances.
Scan d’une Image Docker
Les images Docker contiennent souvent des configurations sensibles. TruffleHog permet de vérifier ces images pour détecter d’éventuels secrets.
Exemple :
TruffleHog scanne ainsi les fichiers et configurations internes de l’image pour détecter les secrets.
Scan des Buckets Amazon S3
Les buckets S3 d’Amazon sont utilisés pour stocker des fichiers, mais ils peuvent aussi inclure des données sensibles. TruffleHog peut analyser les fichiers stockés dans ces buckets.
Vérifiez que TruffleHog dispose des permissions adéquates pour accéder au bucket et lire son contenu.
Scan des Buckets Google Cloud Storage (GCS)
Similaire aux buckets S3, les buckets GCS de Google Cloud peuvent contenir des secrets dans les fichiers stockés. Utilisez la commande suivante pour scanner un bucket GCS :
Scan des Pipelines Jenkins
TruffleHog peut analyser les fichiers de configuration et les scripts dans les pipelines Jenkins. Cette fonctionnalité est utile pour détecter les secrets dans les fichiers de build ou déploiement.
Options Avancées et Personnalisation
Pour adapter TruffleHog à vos besoins spécifiques, plusieurs options avancées sont disponibles :
-
Entropie : TruffleHog détecte les chaînes aléatoires (souvent des secrets) par défaut. Vous pouvez ajuster le seuil d’entropie pour réduire les faux positifs.
-
Regex : Définissez vos propres expressions régulières pour scanner des types de secrets particuliers.
-
Exclusion de chemins : Ignorer des répertoires ou fichiers spécifiques avec
--exclude-paths
peut être utile pour les fichiers de test.
Ces options offrent une flexibilité pour des scans précis, en fonction de la nature de vos données.
Lecture et Analyse des Résultats
TruffleHog génère un rapport listant tous les secrets détectés, avec les informations suivantes :
- Chemin et ligne exacte : Emplacement du secret dans le code.
- Type de détection : Indication si le secret a été repéré par entropie ou regex.
Ces détails facilitent l’identification et la correction rapide des secrets exposés, comme la rotation des secrets ou la suppression des informations dans Git.
Intégration de TruffleHog dans un pipeline CI/CD
Pour automatiser les scans avec TruffleHog, intégrez-le dans un pipeline CI/CD, comme dans cet exemple pour GitLab :
Pre-commit
TruffleHog peut être intégré à Git pour exécuter des scans pré-commit.
Bonnes Pratiques et Limites de TruffleHog
TruffleHog est un outil efficace, mais ne doit pas être la seule solution de protection. Voici quelques bonnes pratiques complémentaires :
- Stockage des Secrets : Utilisez des gestionnaires de secrets (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault) pour sécuriser les secrets en dehors du code.
- Rotation des Secrets : Changez régulièrement vos secrets pour limiter les risques en cas d’exposition.
- Gestion des Faux Positifs : L’entropie élevée des chaînes dans certains fichiers peut entraîner des faux positifs ; utilisez des regex ou ajustez les seuils pour affiner la détection.
Alternatives et Outils Complémentaires
En complément de TruffleHog, vous pouvez explorer d’autres outils de détection de secrets comme Gitleaks.
Conclusion
TruffleHog est clairement un outil efficace pour détecter les secrets un peu partout. Comme je viens de le découvrir, il y a quelques jours, je mettrai à jour cette documentation au fil de mes découvertes.