Ingénierie sociale : un hook Git post-checkout utilisé pour exécuter du code malveillant
Un développeur a été la cible d'une attaque exploitant les fonctionnalités natives de Git pour exécuter du code arbitraire sur sa machine. En l'incitant à changer de branche dans un projet transmis sous forme d'archive, les attaquants ont déclenché un script d'automatisation malveillant. Retour sur un mode opératoire discret qui détourne un outil du quotidien.
Fil « Attaque sur les hooks git post-checkout »

Un scénario d'ingénierie sociale bien ficelé
L'attaque a débuté par une prise de contact courante : une demande de devis pour le développement d'une application web. L'attaquant, usurpant l'identité d'un responsable de studio de développement, a transmis à Frank Wiles (fondateur de l'agence REVSYS) un dossier hébergé sur Dropbox. Ce répertoire contenait une documentation projet sous forme de fichiers Markdown, mais dissimulait également un dossier .git (le répertoire masqué qui stocke l'historique et la configuration locale de Git).
Prétextant la nécessité de signer un accord de confidentialité (NDA, pour Non-Disclosure Agreement), l'interlocuteur a invité sa cible à basculer sur une autre branche pour y récupérer le document :
git checkout NDA
Le piège dissimulé dans les scripts d'automatisation
C'est l'exécution de cette commande standard qui déclenchait la charge malveillante. En inspectant le répertoire .git/hooks (le dossier contenant les déclencheurs d'actions automatisées ou hooks), la victime a découvert un script post-checkout actif. Ce déclencheur s'exécute automatiquement après chaque changement de branche réussi.
Le script effectuait les opérations suivantes :
- Interrogation d'un serveur distant de commande (infrastructure dite de command and control) hébergé sur Vercel.
- Téléchargement d'un binaire exécutable ciblant spécifiquement le système d'exploitation de la machine hôte.
- Attribution des droits d'exécution, lancement du binaire puis suppression du fichier téléchargé pour masquer les traces.
Pourquoi cette méthode déjoue la vigilance
Lors d'une opération classique de récupération de code via la commande git clone, le contenu du dossier .git/hooks distant n'est jamais copié sur le poste client par mesure de sécurité. En revanche, lorsque le projet est partagé sous forme d'archive brute ou via un service de stockage de fichiers synchronisé, le dossier .git est transmis dans son intégralité avec ses scripts locaux déjà configurés.
Ils cherchent à exécuter du code arbitraire pour récupérer des accès. Soyez extrêmement vigilants et surveillez vos identifiants.
Cette tentative d'ingénierie sociale (technique de manipulation visant à induire une personne en erreur) rappelle qu'il ne faut jamais exécuter de commandes dans un dépôt Git importé directement depuis une source externe sans avoir préalablement vérifié l'absence de scripts dans le répertoire .git/hooks.