Retour
2026/11/11
L’outil de sécurité que vous avez téléchargé est le malware : de faux dépôts GitHub infectent plus de 2 000 PC Windows
Doctor Web a trouvé sur GitHub de faux outils de sécurité qui lancent un malware à la compilation. Fonctionnement du piège et vérifications avant de compiler.
Vous trouvez sur GitHub un petit utilitaire qui nettoie la sortie d’un scanner réseau. Il dispose d’un README, d’un projet Visual Studio et d’instructions de compilation. Vous le clonez et cliquez sur Générer. Rien ne semble anormal, mais avant même que le compilateur démarre, une commande cachée s’est déjà exécutée sur votre poste de travail.
C’est le piège décrit par Doctor Web le 5 novembre 2026. Ses chercheurs ont découvert des dépôts GitHub se faisant passer pour des outils d’automatisation de scans, de tests de sécurité et d’analyse de journaux, et ont recensé plus de 2 000 PC Windows infectés au moment de leurs recherches. Cet article explique le fonctionnement du piège, pourquoi il trompe des ingénieurs expérimentés, et ce qu’il faut vérifier avant de compiler du code que vous venez de cloner.
Points clés
- Les dépôts se présentent comme des outils de sécurité, et la commande malveillante s’exécute pendant la compilation ou au lancement d’un script, sans programme distinct à démarrer.
- Le code se cache dans les fichiers de projet Visual Studio, dans les fichiers
.suoet derrière de longues suites d’espaces dans des sources Python et Go. - Les charges finales sont deux portes dérobées AsyncRAT, un « clipper » qui remplace les adresses de portefeuilles crypto dans le presse-papiers, et un infostealer qui dérobe les données du navigateur, les paramètres VPN et FTP ainsi que les jetons Discord.
- Lisez les fichiers de compilation avant de compiler, et compilez le code inconnu dans une machine virtuelle jetable qui ne contient aucun identifiant.
- Si vous avez déjà compilé l’un de ces projets, considérez le poste comme compromis et changez, depuis un appareil sain, tous les identifiants qu’il contenait.
Ce qu’a découvert Doctor Web
Selon le rapport de Doctor Web, les premiers dépôts infectés sont apparus il y a environ deux ans. Ils visaient alors les utilisateurs de portefeuilles crypto et se présentaient comme des jeux blockchain, des bots de jeu et des outils de triche. Les opérateurs ciblent désormais les professionnels de la sécurité informatique. L’un des faux dépôts contenait un script destiné à analyser, nettoyer et mettre en forme la sortie du scanner réseau Fscan.
Il ne s’agit pas d’une vulnérabilité logicielle et il n’y a aucune CVE à corriger. C’est une campagne d’attaque de la chaîne d’approvisionnement et d’ingénierie sociale : les attaquants publient un projet qui paraît utile et attendent que quelqu’un le compile. Le résumé de BleepingComputer qualifie l’astuce des espaces de technique ancienne qui reste efficace.
Comment fonctionne le piège
Doctor Web a trouvé le code malveillant dans trois types de fichiers. Aucun d’eux n’est celui qu’un relecteur ouvre normalement en premier.
| Où il se cache | Ce qui se passe | Pourquoi il passe facilement inaperçu |
|---|---|---|
Fichier de projet .csproj | Un PreBuildEvent exécute une commande avant la compilation du projet | Les relecteurs lisent le code source, pas le fichier de projet |
Fichier .suo | Le fichier contient une commande PowerShell | C’est un fichier de paramètres binaire que Visual Studio conserve normalement dans un dossier caché |
| Fichiers sources Python et Go | Le code malveillant se trouve derrière un grand nombre d’espaces | La ligne paraît vide, sauf si vous faites défiler loin vers la droite ou activez le retour à la ligne automatique |
À partir de là, la chaîne est toujours la même. Un script PowerShell (le rapport cite C:\Users\Public\Pictures\t.ps1 et L.ps1 comme exemples) demande une chaîne chiffrée aux serveurs des attaquants ou à des services légitimes comme YouTube, Telegram, Google Docs, GitCode et Pastebin. Une fois déchiffrée, cette chaîne est un lien de téléchargement vers une archive décompressée dans C:\ProgramData\Windows.Microsoft.Photos.
Elle contient un chargeur basé sur Electron nommé Microsoft.exe, que Doctor Web détecte sous le nom Trojan.Loader.3261. Le chargeur transmet des informations système via un bot Telegram, tente d’obtenir des privilèges plus élevés et désactive Windows Defender, le contrôle de compte d’utilisateur (UAC), les notifications, la Restauration du système et les clichés instantanés de volume. Il tente aussi de supprimer les produits ESET, McAfee et Malwarebytes, et modifie le fichier hosts pour bloquer les domaines des éditeurs d’antivirus.
Pour passer inaperçu, le chargeur, dans son mode par défaut, fait apparaître explorer.exe comme son processus parent, modifie la valeur de registre VerifiedAndReputablePolicyState pour contourner Smart App Control, restaure le code d’origine de ntdll.dll afin de supprimer les hooks qu’y placent les produits de sécurité, effectue des appels système directs et modifie les fonctions Windows utilisées pour le traçage d’événements et l’analyse de scripts. Il injecte ensuite ses charges dans des processus Windows légitimes comme RegAsm.exe.
Trois charges suivent :
- Deux portes dérobées AsyncRAT. Les fichiers sont identiques mais utilisent des ports réseau différents, ce qui, selon Doctor Web, pourrait permettre à deux opérateurs de contrôler le même appareil en même temps.
- Un clipper. Il remplace les adresses de portefeuilles crypto dans le presse-papiers et envoie à un bot Telegram des captures d’écran, le titre de la fenêtre active, l’identifiant de l’utilisateur et l’adresse IP.
- Un infostealer (JS.Stealer.191). Il vérifie la présence de bacs à sable et de machines virtuelles, puis collecte les données du navigateur, les fichiers de connexion FileZilla, MobaXterm et Total Commander, les paramètres VPN, les fichiers de messageries, les données de comptes de jeux et les jetons Discord, qu’il envoie via un bot Telegram.
Doctor Web a également trouvé un composant inachevé qui installerait un service Windows et téléchargerait de nouveau le chargeur s’il était supprimé. Cela laisse penser que les opérateurs continuent de développer leurs outils.
Pourquoi cela fonctionne sur des professionnels
La campagne repose sur des habitudes généralement considérées comme de bonnes pratiques.
- Compiler à partir des sources semble plus sûr que d’exécuter un téléchargement. Beaucoup d’ingénieurs refusent d’exécuter un binaire inconnu mais compilent volontiers un projet, parce qu’ils peuvent en lire le code. Ici, le code qu’ils lisent est sain, et la commande se trouve dans la configuration de compilation.
- Il n’y a pas de moment « lancer ce programme ». La commande démarre dans le cadre d’une compilation ordinaire, si bien que l’hésitation habituelle avant de lancer un programme inconnu n’intervient jamais.
- GitHub est un endroit de confiance. Un dépôt avec un README soigné et des instructions d’installation ressemble à des milliers de projets honnêtes. Doctor Web note que les attaquants fournissaient même des instructions pour installer Visual Studio et cloner le dépôt.
- Le poste d’un ingénieur détient les clés. Les sessions de navigateur enregistrées, les profils VPN et les fichiers de connexion aux serveurs sont exactement ce que collecte l’infostealer, et ils ouvrent souvent l’accès aux systèmes de production et aux environnements des clients.
Ce qu’il faut vérifier avant de compiler
Ces vérifications prennent quelques minutes et conviennent à tout projet que vous venez de cloner, sous Windows, Linux ou macOS. Exécutez-les dans le dossier du dépôt avant d’ouvrir le projet dans un IDE.
# 1. Build hooks and command execution in project files
grep -rniE 'PreBuildEvent|PostBuildEvent|<Exec |powershell|cmd\.exe' \
--include='*.csproj' --include='*.vbproj' --include='*.vcxproj' \
--include='*.props' --include='*.targets' .
# 2. Visual Studio user-option files that should not be in a repository
find . -name '*.suo'
# 3. Files with very long runs of spaces or tabs on one line
grep -rlE '[[:space:]]{200,}' .
Sous Windows sans shell de type Unix, PowerShell fait le même travail pour la vérification des espaces :
Get-ChildItem -Recurse -File |
Select-String -Pattern '\s{200,}' -List |
Select-Object -ExpandProperty Path
Un résultat n’est pas une preuve de malware. Beaucoup de projets honnêtes utilisent des événements de build, et les fichiers minifiés contiennent de longues lignes. C’est une raison d’ouvrir le fichier et de lire ce que fait la commande avant que quoi que ce soit ne s’exécute.
- Lisez d’abord les fichiers de compilation. Les fichiers de projet, les
Makefile,setup.py, les scripts d’installation de paquets et les fichiers de CI peuvent tous exécuter des commandes. Lisez-les aussi attentivement que les sources. - Supprimez les fichiers
.suoet les dossiers.vsfournis avec un dépôt. Ce sont des paramètres propres à chaque utilisateur, et un projet n’en a pas besoin pour être compilé. - Activez le retour à la ligne automatique ou l’affichage des espaces dans votre éditeur lorsque vous relisez du code inconnu.
- Examinez l’historique du dépôt. Un compte récent, un unique commit volumineux, peu de vrais tickets ou de contributeurs, et un outil qui duplique un projet connu sont autant de raisons d’être plus prudent. Les étoiles et les forks seuls prouvent peu de chose, car ils peuvent être falsifiés.
- Compilez le code inconnu dans un environnement jetable. Utilisez une machine virtuelle ou un conteneur jetable sans mots de passe enregistrés, sans profil VPN et sans clés SSH, puis supprimez-le ensuite.
Conseil : Conservez un instantané de machine virtuelle propre pour essayer des outils. Clonez, compilez et testez dans cet environnement, puis revenez à l’instantané. Si un outil s’avère utile, examinez-le correctement avant qu’il n’approche votre poste de travail quotidien.
Si vous en avez déjà compilé un
Doctor Web a publié des empreintes de fichiers, des domaines, des adresses et des exemples de noms de dépôts dans sa liste d’indicateurs de compromission. Parmi les signes décrits dans le rapport :
- un dossier
C:\ProgramData\Windows.Microsoft.Photosou un programme nomméMicrosoft.exe; t.ps1ouL.ps1dansC:\Users\Public\Pictures;- des exclusions Windows Defender pour
regasm.exeoudwm.exeque vous n’avez pas ajoutées ; - des domaines d’éditeurs d’antivirus dans le fichier
hosts, ou la Restauration du système et les clichés instantanés désactivés ; - un logiciel de sécurité qui a disparu ou ne se met plus à jour.
Si vous constatez l’un de ces signes, ou si vous savez avoir compilé un projet de la liste, agissez comme si tout le contenu de cette machine avait été lu :
- Déconnectez le poste du réseau et prévenez votre équipe de sécurité.
- Depuis un autre appareil sain, changez les mots de passe enregistrés dans le navigateur et fermez les sessions actives, afin que les cookies de session volés ne fonctionnent plus.
- Remplacez les profils VPN ainsi que les mots de passe ou clés stockés dans les clients FTP et terminaux, et vérifiez les serveurs auxquels ils donnaient accès.
- Réinitialisez les sessions Discord et des autres messageries, et transférez vos crypto-actifs vers un portefeuille créé sur un appareil sain.
- Réinstallez le système d’exploitation au lieu de le nettoyer. Le chargeur désactive des fonctions de sécurité et de récupération et installe deux portes dérobées ; un système nettoyé est donc difficile à considérer comme fiable.
Conseil : Vérifiez dans les journaux des serveurs et du VPN les connexions du compte concerné après la date de compilation du projet. Les fichiers de connexion volés sont utilisés depuis les systèmes des attaquants, et non depuis le poste infecté.
Comment LOGIQ peut vous aider
LOGIQ aide les organisations à exploiter des logiciels open source en toute sécurité, de l’enterprise Linux et d’OpenJDK jusqu’aux chaînes de build et de déploiement qui les entourent. Si vous souhaitez un regard extérieur sur la façon dont vos équipes intègrent du code externe dans leur environnement, ou avez besoin d’aide pour séparer les systèmes de build des identifiants sensibles, contactez-nous.
Global
Japan
Korea
China
Taiwan
Vietnam
Thailand
Indonesia
Portugal
Spain
Germany
Egypt
Russia