🔍 Contexte

Analyse publiée le 5 juin 2026 par StepSecurity (Ashish Kurmi). L’article documente une attaque de type supply chain ciblant les organisations GitHub de Microsoft, dans le cadre de la campagne Miasma Worm.

🎯 Incident du 5 juin 2026

Un commit malveillant (hash 5f456b8) a été poussé dans le dépôt Azure/durabletask via un compte contributeur préalablement compromis. Ce même compte avait déjà été utilisé lors de l’attaque PyPI du 19 mai 2026. Le commit présentait plusieurs signaux d’alerte :

  • Message trompeur (« Switched DataConverter to OrchestrationContext »)
  • Flag [skip ci] pour contourner la CI/CD
  • Timestamp backdaté au 2020-03-09 (six ans avant le push réel)
  • Aucune modification de code source, uniquement 5 fichiers de configuration ajoutés

🛠️ Vecteurs d’attaque : 5 fichiers, 4 outils ciblés

Le commit a planté des fichiers de configuration ciblant les outils de développement IA :

  • .claude/settings.json : hook SessionStart exécutant node .github/setup.js au démarrage de Claude Code
  • .gemini/settings.json : structure identique pour Gemini CLI
  • .cursor/rules/setup.mdc : injection de prompt avec alwaysApply: true pour Cursor AI
  • .vscode/tasks.json : tâche auto-run folderOpen pour VS Code
  • .github/setup.js : payload JavaScript obfusqué de 4,6 Mo (credential harvester)

Le déclenchement se produit à l’ouverture du dossier dans l’IDE, sans nécessiter d’installation de package.

💥 Impact : 73 dépôts désactivés en 105 secondes

GitHub a désactivé 73 dépôts répartis sur 4 organisations Microsoft (Azure, microsoft, Azure-Samples, MicrosoftDocs) en deux vagues automatisées :

  • Vague 1 : 16:00:50–16:01:28 UTC (39 dépôts en 38 secondes)
  • Vague 2 : 16:02:24–16:02:35 UTC (34 dépôts en 11 secondes)

La désactivation de Azure/functions-action a provoqué une rupture globale des pipelines CI/CD pour tous les workflows GitHub référençant Azure/functions-action@v1.

🔗 Évolution de l’attaque : 19 mai → 5 juin

Aspect 19 mai (PyPI) 5 juin (GitHub)
Surface Registre PyPI Dépôt GitHub source
Déclencheur import durabletask Ouverture dans IDE/IA
Payload rope.pyz (28 Ko, Python) setup.js (4,6 Mo, JS)
Plateforme Linux uniquement Cross-platform
C2 check.git-service[.]com Aucun (payload embarqué)

🕵️ Attribution

L’infrastructure est liée au groupe TeamPCP via le domaine C2 secondaire t.m-kosche[.]com. Ce groupe a précédemment ciblé TanStack (CVE-2026-45321, CVSS 9.6), Mistral AI, l’écosystème @antv (639 versions compromises), @redhat-cloud-services, LiteLLM, Telnyx et Checkmarx. La campagne Miasma a infecté 113+ dépôts GitHub.

📋 Type d’article

Rapport d’incident forensique détaillé produit par StepSecurity, visant à documenter l’étendue de la compromission, les techniques utilisées et la chronologie de l’attaque.

🧠 TTPs et IOCs détectés

Acteurs de menace

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1078.003 — Valid Accounts: Local Accounts (Defense Evasion)
  • T1059.007 — Command and Scripting Interpreter: JavaScript (Execution)
  • T1036.007 — Masquerading: Double File Extension (Defense Evasion)
  • T1070.006 — Indicator Removal: Timestomp (Defense Evasion)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1528 — Steal Application Access Token (Credential Access)
  • T1553 — Subvert Trust Controls (Defense Evasion)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)

IOC

  • Domaines : check.git-service.comVT · URLhaus · ThreatFox
  • Domaines : t.m-kosche.comVT · URLhaus · ThreatFox
  • Domaines : git-service.comVT · URLhaus · ThreatFox
  • CVEs : CVE-2026-45321NVD · CIRCL
  • Fichiers : setup.js
  • Fichiers : rope.pyz
  • Fichiers : settings.json
  • Fichiers : setup.mdc
  • Fichiers : tasks.json
  • Chemins : .claude/settings.json
  • Chemins : .gemini/settings.json
  • Chemins : .cursor/rules/setup.mdc
  • Chemins : .vscode/tasks.json
  • Chemins : .github/setup.js

Malware / Outils

  • Miasma Worm (other)
  • setup.js credential harvester (stealer)
  • rope.pyz (stealer)

🟢 Indice de vérification factuelle : 70/100 (haute)

  • ⬜ stepsecurity.io — source non référencée (0pts)
  • ✅ 19731 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 14 IOCs (IPs/domaines/CVEs) (10pts)
  • ✅ 3/3 IOCs confirmés (ThreatFox, URLhaus, VirusTotal) (15pts)
  • ✅ 9 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ✅ acteur(s) identifié(s) : TeamPCP (5pts)
  • ⬜ 0/1 CVE(s) confirmée(s) (0pts)

IOCs confirmés externellement :

  • check.git-service.com (domain) → VT (20/91 détections)
  • t.m-kosche.com (domain) → VT (17/92 détections)
  • git-service.com (domain) → VT (20/91 détections)

🔗 Source originale : https://www.stepsecurity.io/blog/miasma-worm-hits-microsoft-again-azure-functions-action-and-72-other-repositories-disabled-after-supply-chain-attack-targeting-ai-coding-agents