Des hackers nord-coréens abusent de VS Code pour déployer un malware

Partager
Des hackers nord-coréens abusent de VS Code pour déployer un malware

Alerte Sécurité - Campagne WaterPlum

Une menace active visant les environnements de développement a été identifiée. Des acteurs rattachés au groupe nord-coréen WaterPlum exploitent des projets Visual Studio Code piégés pour déployer le malware StoatWaffle. La technique consiste à inclure des tâches automatisées dans le fichier tasks.json d'un projet, lesquelles exécutent des chargeurs dès l'ouverture du projet dans l'éditeur. Cette campagne est observée depuis décembre 2025 et requiert des mesures immédiates pour limiter une compromission des postes de développement et de la chaîne d'approvisionnement logicielle¹.

Les faits

Identification

Les opérateurs, identifiés sous les alias Contagious Interview et WaterPlum, propagent StoatWaffle via des dépôts contenant un dossier .vscode et un fichier tasks.json configuré pour lancer des commandes shell ou PowerShell au chargement du workspace. Ces tâches peuvent télécharger et exécuter des binaires ou scripts depuis des sources externes, sans interaction complexe de l'utilisateur lorsque l'éditeur ou la configuration système autorise l'exécution automatique. Les premiers signalements publics de cette méthode et de l'utilisation de StoatWaffle datent des reportages techniques publiés en mars 2026¹.

Portée et impact potentiel

Cette méthode vise spécifiquement les environnements de développement mais peut avoir des conséquences systémiques si un poste compromis contient des secrets, tokens CI/CD ou accès à des dépôts. Les risques opérationnels sont multiples : compromission de la machine de développement, exfiltration d'identifiants, pivot vers des serveurs internes, ou injection d'artefacts malveillants dans la chaîne de build et de distribution. Les coûts d'une intrusion de ce type incluent remédiation, analyse forensique, rotation des clés et perte de confiance clients, et peuvent dépasser 500 000 euros par incident selon des études récentes³.

Illustration cybersécurité

Pour comprendre le mécanisme, rappelons que tasks.json est le fichier de configuration des tâches dans Visual Studio Code. Il définit des commandes, des arguments et des environnements d'exécution pour automatiser des actions depuis l'éditeur². Lorsqu'une tâche référencée exécute curl, wget, PowerShell ou un script distant, elle peut devenir un vecteur d'infection si elle est activée par défaut ou autorisée par l'utilisateur.

Mesures urgentes à appliquer

Les décisions doivent être prises sans délai. Voici un plan d'action priorisé avec délais impératifs. Les opérations techniques doivent être pilotées par l'équipe sécurité en coordination avec les responsables IT et les managers d'équipes de développement.

1. Bloquer l'exécution automatique des tâches

  • Deadline: 24 heures
  • Action: Désactiver l'exécution automatique des tâches dans Visual Studio Code sur l'ensemble des postes. Appliquer une configuration centrale via GPO ou solution MDM pour forcer cette option et prévenir toute modification locale non autorisée. Documenter la procédure pour les développeurs afin d'expliquer comment lancer manuellement des tâches approuvées.

2. Restreindre l'ouverture de sources non vérifiées

  • Deadline: 12 heures
  • Action: Interdire le clonage et l'ouverture de projets provenant de sources non vérifiées. Mettre en place une règle simple: tout nouveau dépôt doit être scanné et validé dans un environnement isolé avant d'être importé sur les postes de développement. Pour l'analyse initiale, utiliser des conteneurs ou des machines virtuelles sans accès aux clés ni tokens de production.

3. Renforcer la surveillance et les protections endpoint

  • Deadline: 6 heures
  • Action: Ajuster les règles EDR/HIPS pour détecter et bloquer l'exécution de processus initiés depuis des chemins temporaires (%TEMP% sur Windows et répertoires temporaires sur Linux/macOS). Surveiller les processus qui lancent des connexions réseau inhabituelles et générer des alertes sur tout appel sortant vers des domaines non approuvés. Activer la journalisation détaillée pour les événements de lancement de tâches depuis VS Code et collecter ces logs centralement.

4. Scanner les dépôts et intégrer la détection dans CI/CD

  • Deadline: 48 heures
  • Action: Lancer un scan massif de tous les dépôts entrants pour repérer la présence de .vscode/tasks.json ou de fichiers .code-workspace contenant commandes suspectes. Intégrer une étape obligatoire de vérification dans les pipelines CI/CD qui rejette automatiquement les commits contenant tâches non approuvées ou références à téléchargements externes.

Procédure en cas de compromission

Si une machine est suspectée d'être compromise, appliquer immédiatement ces mesures:

  • Isoler la machine du réseau et suspendre ses accès aux systèmes sensibles.
  • Collecter les logs EDR, historiques de commandes et artefacts pour analyse forensique.
  • Révoquer et renouveler tous les secrets, tokens et clés présents sur l'hôte compromis. Supposer la compromission des credentials qui ont été utilisés depuis ce poste.
  • Scanner les dépôts et pipelines pour détecter toute modification malveillante ou artefact injecté.
  • Suivre la procédure d'incident de l'organisation et notifier les parties prenantes concernées.

Conséquences de l'inaction

Ignorer ces directives augmente fortement le risque d'une compromission étendue. Une chaîne de développement contaminée peut conduire à la diffusion de code compromis dans des livraisons de production, multiplier les coûts de remédiation et porter atteinte à la réputation. Rappelons que des incidents comparables peuvent représenter des coûts importants pour l'organisation et ses clients³. Le respect des délais indiqués réduit significativement la probabilité d'impact grave.

Nous attendons une mise en œuvre rapide et documentée de ces mesures. Les responsables sécurité doivent valider les changements et informer les équipes techniques. Toute dérogation doit être motivée formellement et conditionnée à des contrôles compensatoires stricts.


Questions fréquentes

Qu'est-ce que tasks.json et pourquoi c'est risqué?

tasks.json est le fichier de configuration des tâches dans Visual Studio Code. Il définit des commandes et arguments exécutables depuis l'éditeur. Si une tâche télécharge et exécute un script ou binaire externe, l'ouverture du projet peut déclencher l'exécution de code malveillant si l'autorisation est donnée ou si l'exécution automatique est activée².

Comment détecter une tâche malveillante dans un dépôt?

Scanner le dépôt pour .vscode/tasks.json et .code-workspace. Analyser les champs "command" et "args" pour des appels à curl, wget, PowerShell, npm install avec URLs externes, ou exécutions d'exécutables. Automatiser ce scan dans les pipelines CI/CD et refuser les changements non conformes.

Quelles protections déployer immédiatement pour les développeurs?

Désactiver l'exécution automatique des tâches dans VS Code via GPO/MDM, appliquer des règles réseau restrictives, utiliser EDR/HIPS pour bloquer exécutions depuis les répertoires temporaires, et isoler l'analyse des projets suspects dans des conteneurs ou VM.

StoatWaffle cible-t-il uniquement Windows?

Les observations indiquent une utilisation importante de PowerShell et de commandes Windows, mais la distribution par tasks.json peut toucher tout système supporté par VS Code si la tâche exécute des commandes compatibles. Adopter une défense multi-plateformes.

Que faire si un poste est compromis?

Isoler le poste, collecter les logs pour analyse forensique, révoquer et régénérer tous les secrets et tokens présents, scanner les dépôts et pipelines pour contamination, et suivre la procédure d'incident de l'organisation.

Sources

Lire la suite