Aller au contenu

Un malware caché dans un hook git post-checkout cible les développeurs

Le développeur Frank Wiles dit qu'un faux client lui a envoyé un dépôt dont le hook git post-checkout téléchargeait un malware au changement de branche. Les candidats à l'emploi subissent la même ruse.

Par Tech AI Wire Team

4 min de lecture

XLinkedIn
Screenshot of Frank Wiles' blog post headed 'I got targeted' on FrankWiles.com.

Le développeur Frank Wiles a écrit le 2 octobre 2026 que des attaquants ont tenté de prendre le contrôle de ses comptes avec un dépôt git piégé. Le piège était un hook post-checkout, un script que git exécute chaque fois que vous changez de branche. C'est le dernier cas en date d'une campagne qui frappe les candidats à l'emploi depuis au moins mai. Pour les développeurs, la leçon est que le simple fait de passer sur une branche dans le dépôt de quelqu'un d'autre peut exécuter son code.

Ce qui est arrivé à Frank Wiles

L'attaquant s'est fait passer pour le propriétaire d'une agence de développement, a écrit Wiles sur son blog. Il lui a demandé de relire un NDA, un accord de confidentialité, et a partagé un dépôt via Dropbox. Puis il lui a demandé de passer sur une « branche NDA ».

Ce changement de branche était le déclencheur. Un hook post-checkout se trouvait dans le dossier .git/hooks/ du dépôt. Quand Wiles a changé de branche, le hook a téléchargé un programme conçu pour son système d'exploitation depuis un serveur hébergé sur Vercel. Il a rendu le fichier exécutable, l'a lancé, puis s'est supprimé.

Wiles pense que le but était d'« accéder à mon compte Github et/ou à d'autres accès liés aux clients de REVSYS ». Il note que le hook post-checkout est rarement utilisé, ce qui le rend facile à manquer. Son conseil aux autres développeurs est d'être « extrêmement vigilants et de surveiller vos identifiants comme le lait sur le feu ».

Comment les hooks git deviennent une arme

Les hooks git sont de petits scripts que git exécute automatiquement à des moments précis, par exemple avant un commit ou après un checkout. C'est une fonction normale, utilisée pour des tâches comme lancer un linter. Un git clone normal depuis un serveur ne copie pas les hooks, c'est pourquoi ces attaquants passent par d'autres voies.

Les signalements montrent deux voies :

  • Envoyer le dossier entier. Wiles a reçu son dépôt via Dropbox. Dans un cas qu'Andrii a analysé dans un billet de blog en mai, la cible a reçu une « base de code de démonstration » sur Google Drive. Un dossier partagé ou une archive peut inclure le répertoire caché .git, hooks compris.
  • Demander à la victime d'activer les hooks. OpenSourceMalware décrit des dépôts qui gardent les hooks dans un dossier .githooks. Les victimes semblent les avoir activés avec git config core.hooksPath .githooks sans les lire.

Dans les deux cas, le hook s'exécute pendant le travail ordinaire. Dans le cas analysé par Andrii, il s'est déclenché sur git checkout dev, la commande pour afficher le code principal.

Ce que vole le malware

Les charges utiles diffèrent, mais elles visent les mêmes choses. L'analyse d'Andrii a trouvé un programme qui cherchait des clés SSH comme id_ed25519, des fichiers .env, des portefeuilles de cryptomonnaie et des certificats. Il parcourait les dossiers Desktop, Documents et Downloads et envoyait les fichiers de moins de 10 Mo. Il transmettait aussi le contenu du presse-papiers chaque seconde, et il permettait à l'attaquant d'exécuter des commandes sur la machine.

Un article publié en juillet sur le blog Citizen Dot décrit un piège similaire derrière une fausse offre d'emploi. Un « recruteur » sur LinkedIn proposait un contrat à distance payé « 10 000 à 15 000 dollars par mois ». Le projet à faire chez soi arrivait sous forme de zip sur Google Drive, avec un hook git qui téléchargeait un voleur de portefeuilles de cryptomonnaie.

Qui est derrière

OpenSourceMalware relie la campagne au Lazarus Group, le groupe de pirates nord-coréen. Le site associe la ruse du hook git à la campagne « Contagious Interview » de faux entretiens d'embauche, qui cible surtout des personnes du secteur de la crypto et du web3. Dans les cas étudiés, le malware s'exécutait « la première fois que le candidat essaie de corriger le bug et de faire un commit ». Le site qualifie les hooks post-checkout de variante « encore plus vicieuse », parce qu'ils se déclenchent sur un simple changement de branche.

Le cas que décrit Wiles utilisait un faux client et un NDA, pas une offre d'emploi. La méthode, un hook caché qui télécharge sa charge utile depuis un serveur, est la même.

Ce que cela signifie pour les développeurs

N'ouvrez jamais sur votre propre machine un dépôt reçu sous forme de dossier ou d'archive. Clonez-le plutôt à neuf depuis un hébergeur git, ou ouvrez-le dans une machine virtuelle ou un conteneur jetable. Un clone neuf laisse de côté les hooks de l'expéditeur.

Avant d'exécuter la moindre commande git dans du code partagé, regardez dans .git/hooks/ s'il y a des fichiers sans l'extension .sample. Vérifiez si .git/config contient un réglage hooksPath, et cherchez un dossier .githooks. L'auteur de Citizen Dot conseille d'inspecter les dossiers cachés comme .git et .vscode avant de toucher à du code non fiable.

Vous pouvez aussi désactiver les hooks pour une seule commande. Lancer git -c core.hooksPath=/dev/null checkout <branch> fait pointer git vers un emplacement vide, si bien qu'aucun hook ne s'exécute.

Traitez toute demande de modifier vos réglages git comme un signal d'alarme. Un vrai client ou employeur n'a aucune raison de vous demander d'activer ses hooks. Si vous pensez qu'un hook s'est déjà exécuté, considérez que vos clés SSH, vos jetons et vos secrets .env sont exposés. Renouvelez-les depuis une machine saine, et vérifiez sur votre compte GitHub l'absence de nouvelles clés ou sessions.

Sources

  1. I got targeted: Trying to get your credentials via a git post-checkout hook - Frank Wiles
  2. Be careful with your Git: Investigating malware spreading through Git repositories - andrii.ro
  3. Lazarus Group Uses Git Hooks To Hide Malware - OpenSourceMalware
  4. I Inspected My Take-Home Interview Project. It Was a Trap - Citizen Dot

Articles liés