Nombres Alternativos / Aliases
- Miasma Worm (Gusano principal)
- Mini Shai-Hulud (Variante original, código abierto)
- Hades Campaign (Rama PyPI)
- LLM Supply Chain Attack (Por el vector de ataque a herramientas de IA)
- The Spreading Blight (Descripción usada en repositorios exfiltrados)
- TeamPCP Campaign (Por el grupo responsable)
Fecha de Detección / Actividad
- Primera aparición (Shai-Hulud original) : Septiembre de 2025 (ecosistema npm)
- Publicación del código fuente (Mini Shai-Hulud) : Mediados de mayo de 2026
- Compromiso inicial de Microsoft (durabletask) : Mayo de 2026 (primer compromiso)
- Compromiso masivo de Microsoft (73 repos) : 5 de junio de 2026
- Contención por GitHub : 105 segundos después de la detección
- Nueva ola Hades (PyPI) : 6-8 de junio de 2026
- Onda bioinformática/MCP : 8-9 de junio de 2026
- Estado actual: Activa (continúa evolucionando)
Actor de Amenaza (Atribución)
| Categoría
|
Descripción
|
| Nombre del Actor
|
TeamPCP (grupo reconocido)
|
| Vínculo Gubernamental
|
No establecido (ciberdelincuencia)
|
| Tipo de Actor
|
Ciberdelincuencia / Cadena de suministro
|
| Sofisticación
|
ALTA. El grupo demuestra:
|
- Autoreplicación (worm) en ecosistemas npm y PyPI
- Compromiso de cuentas de mantenedores legítimos
- Abuso de tokens OIDC para firmas SLSA válidas
- Ofuscación multi-capa (JavaScript + Bun runtime)
- Técnicas anti-análisis (prompt injection a escáneres IA)
- Capacidad multiplataforma (Linux, macOS, Windows)
- Persistencia a través de credenciales no rotadas | | Motivación | Robo de credenciales (financiera, espionaje industrial) | | Alcance actual | 471 artefactos maliciosos (411 npm, 60 PyPI) | | Propagación | Autoreplicante: usa credenciales robadas para infectar más paquetes |
Resumen Ejecutivo
El ecosistema de código abierto está siendo devastado por Miasma, una familia de gusanos autoreplicantes que ha comprometido 73 repositorios de Microsoft en GitHub, más de 100 paquetes entre npm y PyPI, y un total de 471 artefactos maliciosos. La campaña, operada por el grupo TeamPCP, representa uno de los ataques a la cadena de suministro más significativos y sostenidos observados hasta la fecha.
¿Qué hace a Miasma tan peligroso?
El gusano no explota vulnerabilidades en GitHub o npm. En su lugar, explota el modelo de confianza en el que se basan estas plataformas: asumen que si un paquete está firmado con una clave válida y publicado por un mantenedor autenticado, es seguro. Miasma compromete la clave y el mantenedor, y luego actúa exactamente como un publicador legítimo.
Magnitud del impacto (actualizado al 9 de junio de 2026)
| Métrica
|
Número
|
| Repositorios de Microsoft comprometidos
|
73
|
| Organizaciones de Microsoft afectadas
|
Azure, Azure-Samples, Microsoft, MicrosoftDocs
|
| Artefactos npm maliciosos
|
411 (106 paquetes)
|
| Artefactos PyPI maliciosos
|
60 (37 paquetes)
|
| Total de artefactos
|
471
|
| Repositorios públicos con descripción Miasma/Hades
|
95+ (13 "Hades", 82 "Miasma")
|
Cronología de los eventos
| Fecha
|
Evento
|
| Septiembre 2025
|
Primera aparición de Shai-Hulud en npm
|
| Mayo 2026
|
TeamPCP publica código fuente de Mini Shai-Hulud
|
| Mayo 2026
|
Compromiso inicial de durabletask (PyPI) en Microsoft Azure
|
| 28-30 mayo 2026
|
Compromiso de 32 paquetes npm de Red Hat
|
| 5 junio 2026
|
73 repositorios de Microsoft deshabilitados por GitHub
|
| 6-8 junio 2026
|
Ola Hades: 19 paquetes PyPI (37 wheels)
|
| 8-9 junio 2026
|
Onda bioinformática y MCP: 23 paquetes adicionales
|
Vector de Ataque / Métodos de Distribución
La campaña Miasma emplea tres ramas de entrega principales que evolucionan constantemente.
Rama 1: Envenenamiento de registros (npm / PyPI)
| Fase
|
Descripción
|
| Compromiso de cuenta
|
Credenciales de mantenedor legítimo robadas (ej. empleado de Red Hat, cuenta "LeonOstrez" de gpt-pilot)
|
| Publicación maliciosa
|
El atacante publica nuevas versiones de paquetes legítimos usando las credenciales robadas
|
| Firma SLSA válida
|
Uso de tokens OIDC legítimos → los paquetes tienen provenance SLSA válida
|
| Resultado
|
Los escáneres ven una actualización de rutina de un mantenedor autenticado
|
Rama 2: Compromiso directo de repositorios (GitHub)
El gusano comenzó a saltarse el registro npm por completo y a plantar código malicioso directamente en repositorios públicos:
| Repositorio afectado
|
Descripción
|
icflorescu/mantine-datatable
|
Biblioteca UI popular
|
mantine-contextmenu
|
Relacionado
|
next-server-actions-parallel
|
Next.js
|
mantine-datatable-v6
|
Versión 6
|
mantine-contextmenu-v6
|
Versión 6
|
El commit añadió:
- Un runner de payload de 4.3 MB
- Configuración para ejecución automática a través de 5 herramientas de desarrollo
Rama 3: Paquetes señuelo (typosquatting y temáticos)
El actor crea paquetes nuevos que imitan a populares o apuntan a nichos específicos:
| Tipo
|
Ejemplos
|
| Typosquatting
|
rsquests (suplanta requests), tlask/rlask (suplantan flask)
|
| Temática IA/MCP
|
langchain-core-mcp, openai-mcp, instructor-mcp, ray-mcp-server
|
| Bioinformática
|
embiggen, ensmallen, gpsea, phenopacket-store-toolkit
|
| Cebo general
|
dreamgen, mem8, mflux-streamlit, orchestr8-platform
|
Técnicas, Tácticas y Procedimientos (TTPs) - MITRE ATT&CK
| Táctica (MITRE ATT&CK)
|
Técnica / Subtécnica
|
Descripción / Implementación
|
| Initial Access (TA0001)
|
Valid Accounts (T1078)
|
Compromiso de cuentas de mantenedores legítimos
|
| Initial Access (TA0001)
|
Supply Chain Compromise (T1195)
|
Envenenamiento de paquetes PyPI/npm
|
| Execution (TA0002)
|
User Execution (T1204)
|
Desarrollador abre repositorio infectado en IDE/herramienta IA
|
| Execution (TA0002)
|
Command and Scripting Interpreter (T1059)
|
Ejecución de JavaScript vía Bun runtime
|
| Persistence (TA0003)
|
Server Software Component (T1505)
|
Archivos .pth que ejecutan código al inicio de Python
|
| Defense Evasion (TA0005)
|
Obfuscated Files or Information (T1027)
|
JavaScript fuertemente ofuscado
|
| Defense Evasion (TA0005)
|
Masquerading (T1036)
|
Paquetes typosquatting (rsquests, tlask)
|
| Defense Evasion (TA0005)
|
Trusted Relationship (T1199)
|
Abuso de cuentas de mantenedores legítimos
|
| Defense Evasion (TA0005)
|
LLM Prompt Injection
|
Nuevo: engaña a escáneres basados en IA para clasificar como seguro**
|
| Credential Access (TA0006)
|
Credentials from Password Stores (T1555)
|
Robo de credenciales de navegadores, monederos crypto
|
| Credential Access (TA0006)
|
OS Credential Dumping (T1003)
|
Extracción de secretos de procesos (GitHub Actions Runner)
|
| Discovery (TA0007)
|
Process Discovery (T1057)
|
Escaneo de procesos en ejecución
|
| Lateral Movement (TA0008)
|
Remote Services (T1021)
|
Propagación vía SSH/SCP a redes de desarrolladores
|
| Collection (TA0009)
|
Data from Local System (T1005)
|
Exfiltración de .env, .npmrc, .pypirc, claves SSH
|
| Command and Control (TA0011)
|
Web Protocols (T1071.001)
|
Exfiltración a repositorios públicos de GitHub
|
| Exfiltration (TA0010)
|
Exfiltration Over Web Service (T1567)
|
Repositorios GitHub con descripciones "Miasma: The Spreading Blight"
|
| Impact (TA0040)
|
Data Manipulation (T1565)
|
Infección de paquetes adicionales (propagación)
|
Flujo de Ataque (Cyber Kill Chain)
| Fase
|
Descripción
|
| 1. Reconocimiento
|
Identificación de mantenedores con credenciales débiles o reutilizadas
|
| 2. Armamento
|
- Obtención de credenciales (brechas previas, phishing, fuerza bruta)
- Desarrollo de payload JavaScript ofuscado + cargador Bun
- Configuración de repositorios de exfiltración
|
| 3. Entrega
|
- Publicación de paquetes maliciosos en PyPI/npm
- Push directo a repositorios GitHub
- Compromiso de cuentas de mantenedores
|
| 4. Explotación
|
- Desarrollador instala paquete malicioso
- O abre repositorio infectado en IDE/herramienta IA
|
| 5. Instalación
|
- Ejecución automática vía .pth (Python startup)
- O vía hooks de herramientas IA (Claude Code, Cursor)
- O vía extensión nativa .abi3.so
|
| 6. Comando y Control
|
- Payload descarga Bun runtime desde GitHub
- Ejecuta JavaScript stealer ofuscado
- Exfiltra datos a repositorio GitHub público
|
| 7. Acción sobre Objetivos
|
- Robo de credenciales GitHub, npm, PyPI, AWS, GCP, Azure
- Propagación a otros repositorios usando credenciales robadas
- Infección de paquetes adicionales (autoreplicación)
|
Infraestructura Utilizada
Mecanismo de ejecución (Bun Runtime)
El malware utiliza Bun (runtime JavaScript de alto rendimiento) como capa de ejecución:
| Componente
|
Propósito
|
| Bun
|
Runtime JavaScript descargado dinámicamente desde GitHub
|
| _index.js
|
Payload JavaScript fuertemente ofuscado
|
| Bypass
|
No requiere Node.js instalado → funciona en cualquier sistema
|
Mecanismo de exfiltración (GitHub Dead Drop)
El malware exfiltra credenciales robadas a repositorios públicos de GitHub con descripciones específicas:
| Descripción del repositorio
|
Significado
|
| "Miasma: The Spreading Blight"
|
Rama principal (82 repositorios)
|
| "Miasma : The Spreading Blight"
|
Variante
|
| "Miasma - The Spreading Blight"
|
Variante
|
| "Hades - The End for the Damned"
|
Rama Hades (13 repositorios)
|
| "Hades * The End for the Damned"
|
Variante Hades
|
Mecanismo de anti-detección (LLM Prompt Injection)
El payload _index.js comienza con un bloque de comentario JavaScript masivo que contiene instrucciones falsas diseñadas para:
- Hacer que los escáneres basados en IA clasifiquen el paquete como seguro
- Provocar denegaciones de respuesta en modelos de lenguaje
- Contaminar el contexto antes de que el escáner alcance el malware real
"Esto no es un bypass mágico contra detección estática. Las reglas YARA, verificación de entropía, parsing AST y reglas de comportamiento aún funcionan. Pero es un truco anti-análisis práctico contra sistemas de triaje basados en LLM."
Detalle Técnico - Tres Ramas de Entrega PyPI
Rama 1: Hook .pth (estilo Hades original)
| Componente
|
Descripción
|
| Archivo
|
*-setup.pth
|
| Ejecución
|
Procesado por módulo site de Python durante el inicio del intérprete
|
| Trigger
|
Ocurre sin necesidad de importar el paquete
|
| Payload
|
Descarga Bun, ejecuta _index.js (empaquetado en el wheel)
|
python
# Ejemplo del código .pth (simplificado)
import subprocess, urllib.request
# Descarga Bun desde GitHub
# Ejecuta _index.js con Bun
Rama 2: Extensión nativa .abi3.so (cluster bioinformática)
| Componente
|
Descripción
|
| Archivo
|
ensmallen_haswell.abi3.so, ensmallen_core2.abi3.so
|
| Ejecución
|
Durante dlopen() cuando Python importa el módulo
|
| Ventaja para atacante
|
El código Python visible puede parecer legítimo; el código malicioso está en binario compilado
|
| Payload
|
Igual: ejecuta _index.js vía Bun
|
Rama 3: Loader sin payload (langchain-core-mcp)
| Componente
|
Descripción
|
| Archivo
|
langchain_core-setup.pth
|
| Característica única
|
No incluye _index.js en el wheel
|
| Comportamiento
|
Busca _index.js en sys.path (todo el path de Python)
|
| Flexibilidad
|
Loader y payload pueden estar en paquetes separados
|
| Evasión
|
Escáneres que esperan loader+payload juntos pueden fallar
|
"Esta variante separa el cargador de la carga útil de JavaScript, lo que podría hacer que el paquete parezca menos obviamente malicioso durante el análisis estático."
Capacidades del Payload (JavaScript Stealer)
Credenciales objetivo
| Categoría
|
Tipos específicos
|
| Registros de paquetes
|
npm, PyPI, RubyGems, JFrog
|
| Control de versiones
|
GitHub (tokens PAT, OIDC), Git
|
| CI/CD
|
GitHub Actions, CircleCI
|
| Nube
|
AWS, GCP, Azure, Kubernetes
|
| IA/LLM
|
Anthropic (Claude), OpenAI (Codex), Google Gemini
|
| Locales
|
SSH keys, .env, .npmrc, .pypirc, shell history
|
| Billeteras crypto
|
Varias monedas
|
Capacidades de propagación (autoreplicación)
| Método
|
Descripción
|
| SSH/SCP
|
Propagación lateral a redes de desarrolladores
|
| Publicación de paquetes
|
Desde sistemas comprometidos, usando credenciales OIDC robadas
|
| Push a repositorios
|
Si el token GitHub robado tiene permisos de escritura
|
| Backdoor en workspaces
|
Archivos en .claude/, .gemini/, .cursor/, .vscode/
|
Capacidades destructivas (wiper)
| Disparador
|
Acción
|
| Token GitHub revocado
|
Servicio gh-token-monitor ejecuta rm -rf ~/
|
| Plataforma
|
Método
|
| Linux
|
Lectura de /proc/{pid}/mem de procesos GitHub Actions Runner
|
| macOS
|
Scraper de memoria específico
|
| Windows
|
Scraper de memoria específico
|
Víctimas y Sectores Afectados
Compromiso de Microsoft (73 repositorios)
| Organización GitHub
|
Repositorios afectados
|
| Azure
|
azure-functions-host, azure-search-openai-demo-purviewdatasecurity
|
| Azure-Samples
|
Múltiples repositorios de ejemplo
|
| Microsoft
|
windows-driver-docs, llm-fine-tuning
|
| MicrosoftDocs
|
Documentación técnica
|
Ecosistema Durable Task completo (comprometido en su totalidad):
durabletask (Python, comprometido en mayo)
durabletask-dotnet
durabletask-go
durabletask-js
durabletask-mssql
Compromiso de Red Hat (32 paquetes npm)
| Namespace
|
Descripción
|
@redhat-cloud-services
|
32 paquetes npm comprometidos
|
Paquetes PyPI afectados - Ola Hades (19 paquetes, 37 wheels)
Los paquetes maliciosos identificados incluyen:
| Paquete
|
Versiones afectadas
|
bramin
|
0.0.2-0.0.4
|
cmd2func
|
0.2.2-0.2.3
|
coolbox
|
0.4.1-0.4.2
|
dynamo-release
|
1.5.4
|
executor-engine
|
0.3.4-0.3.5
|
executor-http
|
0.1.3-0.1.4
|
funcdesc
|
0.2.2-0.2.3
|
magique
|
0.6.8-0.6.9
|
magique-ai
|
0.4.4-0.4.5
|
mrbios
|
0.1.1-0.1.2
|
napari-ufish
|
0.0.2-0.0.3
|
nucbox
|
0.1.2-0.1.3
|
okite
|
0.0.7-0.0.8
|
pantheon-agents
|
0.6.1-0.6.2
|
pantheon-toolsets
|
0.5.5-0.5.6
|
spateo-release
|
1.1.2
|
synago
|
0.1.1-0.1.2
|
ufish
|
0.1.2-0.1.3
|
uprobe
|
0.1.3-0.1.4
|
Nueva onda - Bioinformática y MCP (23 paquetes adicionales)
| Categoría
|
Paquetes
|
| Bioinformática
|
embiggen, ensmallen, gpsea, phenopacket-store-toolkit, ppkt2synergy, pyphetools
|
| IA/MCP (Model Context Protocol)
|
instructor-mcp, langchain-core-mcp, openai-mcp, ray-mcp-server, tiktoken-mcp
|
| Typosquatting
|
rsquests, tlask, rlask
|
| Cebo general
|
dreamgen, mem8, mflux-streamlit, orchestr8-platform
|
Otras víctimas de alto perfil
| Organización
|
Detalles
|
| TanStack
|
Paquetes npm comprometidos previamente
|
| Mistral AI
|
Paquetes comprometidos
|
| UiPath
|
Paquetes comprometidos
|
| Pythagora-io/gpt-pilot
|
Cuenta LeonOstrez comprometida
|
Impacto y Riesgo
| Categoría
|
Nivel
|
Descripción
|
| Alcance
|
MASIVO
|
471 artefactos, 95+ repositorios públicos, 73 repos de Microsoft
|
| Autoreplicación
|
SÍ
|
El gusano se propaga automáticamente usando credenciales robadas
|
| Detección por escáneres tradicionales
|
MUY BAJA
|
Paquetes firmados SLSA, cuentas legítimas, tráfico normal
|
| Impacto en ecosistema de IA
|
ALTO
|
Herramientas Claude Code, Cursor, VS Code, Gemini CLI son vectores
|
| Persistencia
|
MUY ALTA
|
Credenciales no rotadas → el mismo repositorio se re-infecta
|
Por qué las defensas tradicionales fallaron
"El gusano no explota una vulnerabilidad en npm o GitHub. Explota el modelo de confianza en el que están construidas esas plataformas: la suposición de que si un paquete está firmado con una clave válida y publicado por un mantenedor autenticado, es seguro. Shai-Hulud compromete la clave y el mantenedor, luego procede a actuar exactamente como un publicador legítimo. Desde la perspectiva del registro, cada evento de publicación malicioso es indistinguible de una actualización de rutina."
— FalconFeeds.io
El problema de la "herida abierta"
"Cuando el repositorio en la raíz del compromiso del mes pasado es el centro del desmantelamiento de este mes, eso no es una coincidencia — es la misma herida reabriéndose. Quien sea que tuviera esas credenciales en mayo plausiblemente nunca las perdió por completo."
— Paul McCarty (investigador)
El durabletask fue comprometido en mayo, y un mes después, todo el ecosistema Durable Task fue desmantelado, indicando que las credenciales nunca fueron rotadas adecuadamente.
Recomendaciones de Mitigación
Para organizaciones que usan paquetes PyPI/npm
1. AUDITORÍA INMEDIATA
| Acción
|
Descripción
|
| Identificar paquetes afectados
|
Revisar las listas de IoCs (ver sección correspondiente)
|
| Escaneo de dependencias
|
Usar pip list y npm list para buscar versiones maliciosas
|
| Preservar evidencia
|
Antes de desinstalar, preservar artefactos para análisis forense
|
2. ROTACIÓN DE CREDENCIALES (ASUMIR EXPOSICIÓN)
| Tipo de credencial
|
Acción
|
| GitHub tokens (PAT)
|
Revocar y regenerar inmediatamente
|
| npm tokens
|
Revocar y regenerar
|
| PyPI tokens
|
Revocar y regenerar
|
| Cloud credentials (AWS, GCP, Azure)
|
Rotar keys y verificar actividad sospechosa
|
| SSH keys
|
Rotar y revisar authorized_keys
|
| CI/CD secrets
|
Rotar todos los secretos de pipelines
|
3. REVISIÓN DE ENTORNOS DE DESARROLLO
| Ubicación
|
Qué buscar
|
Archivos .pth sospechosos
|
En site-packages/
|
Archivos _index.js
|
En rutas de Python
|
Archivos .abi3.so no esperados
|
Especialmente en paquetes de bioinformática
|
| Archivos de configuración de herramientas IA
|
.claude/, .gemini/, .cursor/, .vscode/
|
Para organizaciones afectadas por compromiso de repositorios Microsoft
| Acción
|
Descripción
|
| Verificar estado de repositorios
|
Microsoft ha restaurado todos los repositorios afectados
|
| Revisar pipelines CI/CD
|
Buscar ejecuciones no autorizadas entre mayo y junio
|
| Rotar secrets de GitHub Actions
|
Asumir exposición si se usaron repositorios afectados
|
Estrategia a largo plazo
| Recomendación
|
Descripción
|
| Explicit dependency allowlisting
|
No confiar ciegamente en rangos de versiones
|
| SBOM (Software Bill of Materials)
|
Generar y verificar SBOMs estrictos
|
| Escáneres de comportamiento
|
Soluciones como Socket que detectan .pth hooks, descargas de Bun
|
| Monitoreo de tráfico saliente
|
Alertar sobre descargas desde GitHub de runtimes no esperados
|
| Aislar CI/CD
|
Usar runners efímeros, tokens de corta duración
|
Herramientas de Detección
| Herramienta
|
Capacidad
|
| Socket
|
Detección de paquetes maliciosos, monitoreo de cadena de suministro
|
| StepSecurity
|
Análisis de seguridad de GitHub Actions
|
| Snyk
|
Escaneo de vulnerabilidades en dependencias
|
| OpenSourceMalware
|
Seguimiento de campañas
|
| Auditoría manual
|
Búsqueda de .pth, _index.js, extensión .abi3.so
|
Script de detección (conceptual)
bash
# Buscar archivos .pth sospechosos
find .venv/ -name "*-setup.pth" -exec cat {} \;
# Buscar archivos _index.js
find .venv/ -name "_index.js"
# Buscar extensiones nativas inesperadas
find .venv/ -name "*.abi3.so"
# Buscar descargas de Bun en logs
grep -r "bun-v1.3.13" ~/.cache/
Antecedentes: Evolución de Shai-Hulud a Miasma a Hades
| Fase
|
Fecha
|
Ecosistema
|
Características
|
| Shai-Hulud original
|
Septiembre 2025
|
npm
|
Primer gusano autoreplicante en npm
|
| Mini Shai-Hulud
|
Mediados mayo 2026
|
npm/PyPI
|
Código fuente público por TeamPCP
|
| Miasma
|
Finales mayo 2026
|
npm, GitHub repos
|
Apunta a herramientas IA, compromete Red Hat
|
| Miasma (Microsoft wave)
|
5 junio 2026
|
GitHub repos
|
73 repositorios de Microsoft
|
| Hades
|
6-8 junio 2026
|
PyPI
|
19 paquetes, hooks .pth
|
| Bioinf / MCP wave
|
8-9 junio 2026
|
PyPI
|
Extensiones .abi3.so, paquetes señuelo
|
Opiniones de Expertos
"La campaña Miasma demuestra que tener claves firmadas y cuentas de mantenedor autenticadas ya no son una garantía absoluta de seguridad. Cuando los registros ascendentes y los repositorios están comprometidos, el código público se convierte en una de las formas más fáciles y directas de ser vulnerado."
— Cloudsmith
"La genialidad del gusano y la razón por la que las defensas convencionales fallaron en gran medida es que opera enteramente dentro de canales legítimos. No explota una vulnerabilidad en npm o GitHub. Explota el modelo de confianza en el que esas plataformas están construidas: la suposición de que si un paquete está firmado con una clave válida y publicado por un mantenedor autenticado, es seguro. Shai-Hulud compromete la clave y el mantenedor, luego procede a actuar exactamente como un publicador legítimo. Desde la perspectiva del registro, cada evento de publicación malicioso es indistinguible de una actualización de rutina."
— FalconFeeds.io
"Lo que hace especialmente peligrosa esta campaña es el vector de entrega a través de herramientas de IA. Un desarrollador solo necesita clonar un repositorio afectado y abrirlo en Claude Code, Cursor o VS Code para que el malware se ejecute automáticamente. El gusano está diseñado para la era del desarrollo asistido por IA. Las herramientas que prometen aumentar la productividad de los desarrolladores se están convirtiendo en un vector de ataque privilegiado."
— Fernando Vargas (CiberAnalyst)
"El malware, una variante del gusano Shai-Hulud, fue detenido por un defensor improbable: ruff, un formateador de código Python. El atacante intentó dos veces pasar el código malicioso por CI y falló ambas veces porque su archivo Python inyectado no coincidía con las reglas de formato y linting del proyecto. A veces, las herramientas de calidad de código son la última línea de defensa."
— Ashish Kurmi, cofundador de StepSecurity
Referencias y Fuentes
- Lakshmanan, R. (2026, 9 de junio). Microsoft Restores Some GitHub Repos, Keeps Others Offline as Miasma Investigation Continues. The Hacker News.
- Lakshmanan, R. (2026, 6 de junio). Miasma Worm Hits 73 Microsoft GitHub Repositories in Major Supply Chain Attack. The Hacker News.
- Lakshmanan, R. (2026, 8 de junio). *Hades PyPI Attack: 19 Packages Poisoned to Auto-Run Bun Credential Stealer*. The Hacker News.
- Boychenko, K. (2026, 8 de junio). Mini Shai-Hulud, Miasma, and Hades Worms Target Bioinformatics and MCP Developers. Socket.dev.
- Cloudsmith. (2026, 6 de junio). The Miasma worm's path of destruction. Cloudsmith Blog.
- TNW Staff. (2026, 5 de junio). *Self-replicating Miasma worm hits 73 Microsoft GitHub repositories*. The Next Web.
- Windows Report Staff. (2026, 9 de junio). Microsoft Restores 73 GitHub Repositories After Security Incident. Windows Report.
Historial de Revisiones
| Fecha
|
Versión
|
Autor
|
Cambios Realizados
|
| 2026-06-10
|
1.0
|
Fernando Vargas Hincapié
|
Creación inicial basada en informes de The Hacker News, Socket.dev, Cloudsmith, y múltiples fuentes
|
Indicadores de Compromiso (IOCs)
Hashes de artefactos maliciosos
| Tipo
|
Hash (SHA256)
|
| langchain-core-mcp wheel
|
6d332f814f15f19758d65026bbfd0a8c49671b319ec77b8fa1b27fc48afff7d9
|
| langchain_core-setup.pth
|
6506d31707a39949f89534bf9705bcf889f1ecae3dbc6f4ff88d67a8be3d01b2
|
Repositorios exfiltración (patrón de descripción)
| Descripción del repositorio
|
Cantidad
|
| "Miasma: The Spreading Blight"
|
82 (estimado)
|
| "Hades - The End for the Damned"
|
13 (estimado)
|
Palabras clave para búsqueda en código
| Término
|
Significado
|
thebeautifulmarchoftime
|
Fallback C2 discovery string
|
thebeautifulsnadsoftime
|
Fallback C2 discovery string
|
firedalazer
|
Keyword para fetch de Python dropper
|
TheBeautifulSnadsOfTime
|
Keyword para commits GitHub con payload
|
Rutas de archivo sospechosas
| Ruta
|
Propósito
|
/tmp/.sshu-setup.js
|
SSH propagation file
|
.claude/settings.json
|
Backdoor en Claude Code
|
.gemini/settings.json
|
Backdoor en Gemini CLI
|
.cursor/rules/setup.mdc
|
Backdoor en Cursor
|
.vscode/tasks.json
|
Tarea automática VS Code
|
*-setup.pth
|
Python startup hook
|
_index.js
|
Payload JavaScript
|
*.abi3.so
|
Extensión nativa trojanizada
|
Configuraciones de herramientas IA objetivo
| Herramienta
|
Archivo/mecanismo de trigger
|
| Claude Code
|
.claude/settings.json con SessionStart hook
|
| Gemini CLI
|
.gemini/settings.json con SessionStart hook
|
| Cursor
|
.cursor/rules/setup.mdc con prompt injection
|
| VS Code
|
.vscode/tasks.json con runOn: folderOpen
|
| npm
|
Script test en package.json
|
Paquetes PyPI maliciosos - Lista completa
Ola Hades (19 paquetes) : bramin, cmd2func, coolbox, dynamo-release, executor-engine, executor-http, funcdesc, magique, magique-ai, mrbios, napari-ufish, nucbox, okite, pantheon-agents, pantheon-toolsets, spateo-release, synago, ufish, uprobe
Onda Bioinformática/MCP (23 paquetes) : dreamgen, embiggen, ensmallen, gpsea, instructor-mcp, langchain-core-mcp, mem8, mflux-streamlit, openai-mcp, orchestr8-platform, phenopacket-store-toolkit, ppkt2synergy, pyphetools, ray-mcp-server, rlask, rsquests, tiktoken-mcp, tlask
Preguntas sin respuesta
| Pregunta
|
Estado
|
| ¿Microsoft ha rotado completamente las credenciales comprometidas?
|
No confirmado públicamente
|
| ¿El mismo actor (TeamPCP) opera todas las ramas (Miasma, Hades)?
|
Probable, pero no confirmado al 100%
|
| ¿Cuántos desarrolladores/empresas han sido comprometidos?
|
Desconocido
|
| ¿Las credenciales robadas están siendo activamente utilizadas?
|
Sí (nuevos paquetes continúan apareciendo)
|
| ¿PyPI y npm han eliminado todos los paquetes maliciosos?
|
Parcialmente (algunos aún pueden estar disponibles)
|
Etiquetas / Categorías
text
miasma-worm shai-hulud hades-supply-chain supply-chain-attack microsoft-github-breach pypi-malware npm-malware bun-runtime credential-stealer team-pcp ai-coding-tool-malware claude-code-backdoor cursor-malware vs-code-backdoor open-source-supply-chain self-replicating-worm python-pth-hook abi3-native-extension typosquatting