Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Pre-commit Secret Hook

devsecops

Définition

Un Pre-commit Secret Hook (hook pre-commit de détection de secrets) est un script ou outil exécuté automatiquement par Git avant la création d'un commit, dont la mission est de détecter la présence de secrets (clés API, mots de passe, tokens, certificats privés) dans les fichiers en cours d'ajout à l'historique Git. Si des secrets sont détectés, le hook interrompt le commit et alerte le développeur, évitant ainsi l'enregistrement de credentials dans l'historique Git immuable. Le problème adressé par les pre-commit secret hooks est fondamental : une fois qu'un secret est commité dans Git, même s'il est supprimé dans un commit ultérieur, il reste permanent dans l'historique du dépôt et potentiellement dans des forks, des clones, et des sauvegardes. La suppression d'un secret de l'historique Git nécessite une réécriture de l'historique (git filter-branch, BFG Repo Cleaner) qui est perturbatrice pour l'équipe et potentiellement incomplète si des forks existent. La prévention au stade du commit est infiniment plus simple et moins risquée. Les implémentations les plus courantes de pre-commit secret hooks utilisent le framework pre-commit.com (hooks.yaml dans le dépôt) avec des intégrations pour detect-secrets (Yelp), GitLeaks, TruffleHog, ou GitGuardian ggshield. Ces outils s'installent via pip install pre-commit et se configurent via un fichier .pre-commit-config.yaml versionnée dans le dépôt, assurant que tous les développeurs du projet utilisent les mêmes hooks. La gestion des faux positifs est un aspect critique : un hook trop sensible qui bloque des tokens d'exemple, des clés de test publiques, ou des chaînes de haute entropie légitimes (hashes, encodages base64 de données non-sensibles) génère de la frustration et pousse les développeurs à désactiver le hook. Des mécanismes d'exception (inline comments git-crypt-ignore, fichiers .secrets.baseline pour detect-secrets) permettent de marquer les faux positifs pour les exclure des alertes futures sans désactiver le hook.

Configuration avec pre-commit.com et Gitleaks

Fichier .pre-commit-config.yaml avec Gitleaks : repos: - repo: https://github.com/gitleaks/gitleaks rev: v8.21.2 hooks: - id: gitleaks. Installation : pip install pre-commit && pre-commit install. Ce hook s'exécute sur git commit avant la création du commit et bloque si des secrets sont détectés. La configuration .gitleaks.toml dans le dépôt permet de personnaliser les règles et d'ajouter des exceptions spécifiques au projet.

detect-secrets : baseline et gestion des faux positifs

detect-secrets (Yelp) propose un mécanisme de baseline particulièrement utile : detect-secrets scan > .secrets.baseline génère une baseline des "secrets" connus (qui sont en réalité des faux positifs ou des valeurs légitimes), versionée dans Git. Lors des commits ultérieurs, seuls les nouveaux secrets non présents dans la baseline bloquent le commit. detect-secrets audit .secrets.baseline permet d'auditer interactivement les entrées de la baseline pour marquer chaque entrée comme faux positif ou vrai positif.

Déploiement à l'échelle dans une organisation

Pour déployer les pre-commit hooks à l'échelle d'une organisation : créer un dépôt central de templates pre-commit hooks, utiliser pre-commit autoupdate pour maintenir les hooks à jour, et configurer le server-side hook (push protection) comme filet de sécurité si les hooks côté développeur sont désactivés. GitHub Push Protection (niveau enterprise) est la solution server-side complémentaire : même si un développeur passe outre le pre-commit hook (git commit --no-verify), le push vers GitHub est bloqué si des secrets reconnus sont détectés.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis