The media in this post is not displayed to visitors. To view it, please log in.

Il worm Miasma disabilita 73 repository Microsoft su GitHub in 105 secondi: supply chain attack prende di mira gli AI coding agent


@Informatica (Italy e non Italy)
Il worm Miasma, attribuito al gruppo TeamPCP, ha colpito le organizzazioni Azure e Microsoft su GitHub, piantando payload nei file di configurazione di


Il worm Miasma disabilita 73 repository Microsoft su GitHub in 105 secondi: supply chain attack prende di mira gli AI coding agent


Si parla di:
Toggle

Il 5 giugno 2026, il worm Miasma — variante della famiglia Shai-Hulud attribuita al gruppo TeamPCP — ha raggiunto le organizzazioni GitHub di Microsoft. In 105 secondi, il sistema automatico di enforcement di GitHub ha disabilitato 73 repository tra Azure, Azure-Samples, microsoft e MicrosoftDocs. L’attacco introduce un cambio di paradigma nei supply chain attack: il trigger non è più l’installazione di un pacchetto, ma l’apertura di una cartella nel proprio editor o AI coding agent.

La catena di infezione: dal PyPI al repository injection


Per comprendere l’incidente del 5 giugno è necessario risalire al 19 maggio 2026, quando la stessa campagna Miasma aveva compromesso il pacchetto PyPI durabletask di Microsoft. In quell’occasione, un attaccante aveva caricato tre versioni malevole del pacchetto in una finestra di 35 minuti, usando un token di publishing compromesso, bypassando completamente la pipeline CI/CD. Il payload — un file rope.pyz da 28KB — rubava credenziali da AWS, Azure, GCP, Kubernetes e oltre 90 configurazioni di developer tool.

Il 5 giugno, lo stesso account contributor compromesso è stato usato per iniettare un commit direttamente nel repository GitHub Azure/durabletask. Il commit (5f456b8) riportava il messaggio “Switched DataConverter to OrchestrationContext [skip ci]” — ma non modificava alcun file sorgente. Aggiungeva invece 5 file di configurazione, con un timestamp retrodatato al 2020 per eludere il rilevamento, e il flag [skip ci] per sopprimere l’esecuzione della pipeline.

Quattro vettori, un payload: come Miasma abusa degli AI coding agent


L’attacco è notevole per la sua copertura trasversale degli strumenti di sviluppo più diffusi. I cinque file iniettati puntano tutti allo stesso payload (.github/setup.js, un file JavaScript da 4,6 MB altamente offuscato), attivandolo con meccanismi diversi:

  • .claude/settings.json: hook SessionStart per Claude Code — esegue il payload all’avvio di qualsiasi sessione Claude nel repository.
  • .gemini/settings.json: hook identico per Gemini CLI.
  • .cursor/rules/setup.mdc: prompt injection per Cursor AI — istruisce l’agente a eseguire il payload spacciandolo per “inizializzazione obbligatoria del progetto”. Il flag alwaysApply: true garantisce l’attivazione indipendentemente dal file su cui si sta lavorando.
  • .vscode/tasks.json: task con runOptions.runOn: "folderOpen" — eseguito automaticamente da VS Code all’apertura della cartella, senza alcun coinvolgimento di AI agent.

Il punto critico: clonare il repository è sicuro, aprirlo nell’editor non lo è. Questo inverte l’assunzione di sicurezza su cui si basano la maggior parte dei workflow di sviluppo.

73 repository in 105 secondi: l’automazione di GitHub come ultima linea di difesa


Ore dopo il commit malevolo, il sistema automatico di abuse detection di GitHub ha disabilitato 73 repository in due ondate distinte, separate da un gap di 56 secondi:

  • Wave 1 (16:00:50 → 16:01:28 UTC): 39 repository in 38 secondi
  • Wave 2 (16:02:24 → 16:02:35 UTC): 34 repository in 11 secondi

Tutti i repository restituiscono HTTP 403 con "reason": "tos". Tra quelli colpiti figurano repository critici come azure-functions-host, azure-functions-core-tools, l’intera famiglia dei worker (.NET, Node.js, Python, Java, PowerShell, Go) e — con conseguenze immediate — Azure/functions-action, la GitHub Action ufficiale per il deployment di Azure Functions.

La disabilitazione di functions-action ha rotto immediatamente ogni pipeline CI/CD che referenziava Azure/functions-action@v1. Un thread su Microsoft Learn ha raccolto oltre 20 segnalazioni di pipeline bloccate in poche ore. Microsoft ha inizialmente classificato l’evento come “violazione delle policy GitHub”, salvo poi ricaratterizzarlo come “internal management issue under investigation”.

Attributione: TeamPCP e il nexus Shai-Hulud/Miasma


L’incidente si inserisce nella campagna più ampia del gruppo TeamPCP, attivo da almeno la primavera 2026. Il payload del 19 maggio conteneva un C2 secondario (t.m-kosche[.]com) già noto come infrastruttura TeamPCP. Il gruppo ha una storia di attacchi supply chain di ampia portata: TanStack (42 pacchetti npm, CVE-2026-45321, CVSS 9.6), Mistral AI, l’ecosistema @[url=https://stream.antv.abyaya.la/video-channels/antv]antv[/url] (639 versioni su 323 pacchetti npm), @redhat-cloud-services (32 pacchetti), LiteLLM, Telnyx e Checkmarx.

Miasma è valutata come una variante evoluta del worm Mini Shai-Hulud: Wave 1 (giugno 1) usava hook preinstall npm; Wave 2 (giugno 3) ha introdotto la tecnica Phantom Gyp — file binding.gyp malevoli che eludono le difese supply chain tradizionali; Wave 3 (giugno 5) ha abbandonato il package manager del tutto, puntando direttamente al repository e all’editor.

Indicatori di compromissione

# Domini C2
check.git-service[.]com      # C2 primario payload maggio
t.m-kosche[.]com             # Infrastruttura TeamPCP (C2 secondario)

# Hash commit malevolo
5f456b8  (Azure/durabletask, 2026-06-05)

# File sospetti da cercare nei repository
.claude/settings.json        # Hook SessionStart
.gemini/settings.json        # Hook SessionStart
.cursor/rules/setup.mdc      # Prompt injection alwaysApply
.vscode/tasks.json           # runOn: folderOpen
.github/setup.js             # Payload principale (4.6 MB offuscato)

Due righe per i difensori


Chi ha clonato repository Azure/microsoft dopo il 2 giugno 2026 e li ha aperti in un editor deve considerare il sistema compromesso e ruotare immediatamente tutte le credenziali accessibili: GitHub token, npm token, AWS keys, Azure service principal, GCP service account, SSH key, Kubernetes secrets, Docker config, variabili d’ambiente e shell history.

Per prevenire incidenti analoghi: ispezionare i repository clonati per i file sopra elencati prima di aprirli; pinnare le GitHub Actions a commit SHA specifici invece di tag mutabili; abilitare branch protection con revisione obbligatoria dei PR; usare PyPI Trusted Publishing (OIDC) al posto di token long-lived; monitorare le connessioni outbound dai runner CI/CD verso domini sconosciuti.

L’attacco Miasma su Microsoft rappresenta un salto qualitativo nella minaccia supply chain: non bastano più le difese sul package manager se gli attaccanti possono iniettare hook direttamente nell’editor dello sviluppatore. La superficie d’attacco si è spostata dall’installazione all’apertura — e le difese devono adeguarsi di conseguenza.