El gusano Miasma ataca los paquetes npm de Red Hat: detectar, rotar, reemplazar
Un gusano npm que se propaga automáticamente afectó a 7 paquetes de @redhat-cloud-services el 29 de mayo de 2026. Oculta la persistencia dentro de Claude Code y VS Code. Un guión de detección de 60 segundos, un pase de rotación y la corrección estructural.
El 1 de junio de 2026, los investigadores detectaron un gusano npm que se propagaba automáticamente y que había estado activo desde el 29 de mayo.
Su tarjeta de presentación es un mensaje de confirmación: "Miasma: The Spreading Blight". Un Red Hat comprometido
La cuenta de GitHub del empleado envió confirmaciones huérfanas maliciosas directamente a RedHatInsights
repositorios, evitando la revisión de código y siete @redhat-cloud-services paquetes
envió una carga útil de robo de credenciales a todos los que los instalaron.
Dos cosas hacen que Miasma valga la pena tener un nuevo runbook. Se ejecuta en un preinstall gancho, por lo que
incendios antes postinstall e incluso una instalación cancelada puede activarlo. y planta
persistencia dentro de sus herramientas de desarrollador: un gancho SessionStart en Claude Code y un
tasks.json con "runOn": "folderOpen" en proyectos de VS Code. Eliminando
node_modules no les hace nada. Aquí está el manual de detección, rotación y reemplazo.
Los siete paquetes comprometidos
Cada uno está bajo el @redhat-cloud-services alcance:
vulnerabilities-clienttsc-transform-importstopological-inventory-clientsources-clientrule-componentsremediations-clientrbac-client
Paso 1: detecta en menos de 60 segundos
Tres señales: un paquete comprometido en su árbol, un artefacto de persistencia en Claude Code o VS
Código y tráfico de exfiltración disfrazado de llamadas a api.anthropic[.]com:443/v1/api. correr
esto desde cualquier host con npm y git:
Cualquier acierto significa que saltas al paso 2. El gusano termina de cosechar antes de que termines de leer el aviso, por lo que una sola señal es suficiente para comenzar a girar.
El truco de la persistencia es la parte que afecta a los equipos que limpian demasiado rápido. Puedes quitar el
mal paquete, reconstruir node_modules, y todavía tengo un gancho SessionStart en
~/.claude/settings.json que vuelve a ejecutar la carga útil la próxima vez que abras Claude
Code. Auditoría ~/.claude/settings.json, .vscode/tasks.json, y
.github/workflows a mano antes de llamar a un anfitrión limpio.
Paso 2: confirme la ventana de publicación con la API npm
Antes de fijar una versión "segura", verifique cuándo se publicó. Las versiones maliciosas aterrizaron en
29 de mayo, por lo que cualquier publicación fechada ese día o después es sospechosa. El punto final botoi npm devuelve el
marca de tiempo modificada y lista de mantenedores sin una npm install:
UNA modified marca de tiempo en o después 2026-05-29 significa anclar al último conocido
Buen comunicado publicado antes de esa fecha, no el último. La forma GET se almacena en caché en la CDN, por lo que
Puede incorporar esto en una verificación de aprobación de dependencia que se ejecuta en cada solicitud de extracción.
Paso 3: gire y luego frote los troncos
Miasma recopila secretos de GitHub Actions, tokens npm, credenciales de nube, Kubernetes y Vault material, claves SSH y credenciales de Git. Gire en ese orden: los tokens npm detienen nuevas publicaciones, Las PAT de GitHub detienen las escrituras en el repositorio, las claves de IAM en la nube detienen la extracción de datos y luego Vault y SSH. no investigar primero; rotar, luego investigar.
La carga útil descarga esos secretos en registros que fluyen hacia Datadog, Sentry y su emisión de boletos. sistema. Canalice los campos de alto riesgo a través de un detector secreto y cierre el fallo antes de que alcancen un índice consultable:
Paso 4: bloquea la próxima ola con un guardia de CI
Miasma necesita tres cosas en su corredor: una versión comprometida, un gancho de ciclo de vida que se ejecute y un archivo de persistencia que puede escribir. Rompe cualquiera. Esta verificación de GitHub Actions desactiva el ciclo de vida scripts para el trabajo, falla en los marcadores de persistencia de Miasma, marca los paquetes de alcance de Red Hat y requiere procedencia firmada en departamentos de tiempo de ejecución:
Mantener ignore-scripts activado de forma predeterminada y mantenga una breve lista de permitidos para los paquetes que
construir legítimamente (TypeScript, esbuild, Sharp). Un gancho preinstalado que nunca funciona no puede cosechar
cualquier cosa.
Paso 5: reduce la superficie que puede albergar una lombriz
Los paquetes envenenados con mayor frecuencia en las oleadas de 2026 envuelven una única llamada de red: clientes API, ayudantes de validación y pequeñas utilidades. Cada uno es candidato a eliminar y reemplazar con un llamada HTTPS revocable que no ejecuta ningún código local.
| Categoría | Dependencia típica de npm | Reemplazo de HTTP | Radio de explosión si se viola |
|---|---|---|---|
| Escaneo secreto y PII | secretlint, detector de pii | /v1/pii/detect |
Rotar una clave API |
| Metadatos del paquete | Envoltorios del cliente de registro npm | /v1/npm/{package} |
Rotar una clave API |
| Validación de correo electrónico | validador, validador de correo electrónico profundo | /v1/email/validate |
Rotar una clave API |
| control de incumplimiento | paquetes de cliente hipp | /v1/breach/check |
Rotar una clave API |
Conclusiones clave
-
Verifique los archivos de persistencia de la herramienta de desarrollo. Miasma se esconde en
~/.claude/settings.jsony.vscode/tasks.json. Quitar el paquete no quita el gancho. -
Pin por fecha de publicación. Cualquier cosa en los siete paquetes con fecha de o después
2026-05-29 es sospechoso. Usar
/v1/npm/{package}para confirmar. - Gire antes de investigar. tokens npm, PAT de GitHub, claves de nube, Vault, SSH. Exfil se completa en segundos.
- Deshabilite los scripts del ciclo de vida de forma predeterminada. Un gancho de preinstalación que nunca se ejecuta no puede robar cualquier cosa.
- Encoge la superficie. Reemplace los paquetes npm de llamada única con HTTP revocable puntos finales. Una clave violada muere en una solicitud.
exhibiciones de botoi /v1/npm/{package}, /v1/pii/detect,
/v1/breach/checky aproximadamente otros 200 puntos finales de propósito único detrás de una clave API
con 5 req/min gratis. Conéctelos a su runbook de incidentes o conecte el
servidor MCP a claudio
Codifique para que su asistente ejecute el script de detección por usted. Empezar desde el
documentos interactivos.
FAQ
- ¿Qué es el ataque a la cadena de suministro de Miasma?
- Miasma es un gusano npm autopropagante descubierto el 1 de junio de 2026, con su primera confirmación "Miasma: The Spreading Blight" fechada el 29 de mayo de 2026. Una cuenta de GitHub de un empleado de Red Hat comprometida empujó confirmaciones huérfanas maliciosas a los repositorios de RedHatInsights, evitando la revisión de código, y se publicaron siete paquetes npm @redhat-cloud-services con un gancho de preinstalación ofuscado que recopila credenciales y se propaga a nuevos huéspedes.
- ¿Qué paquetes se vieron comprometidos?
- Siete paquetes bajo el alcance de @redhat-cloud-services: cliente de vulnerabilidades, tsc-transform-imports, cliente de inventario topológico, cliente de fuentes, componentes de reglas, cliente de remediaciones y cliente rbac. Si su archivo de bloqueo extrajo alguno de estos después del 29 de mayo de 2026, trate al host como comprometido y rote todas las credenciales que haya tocado.
- ¿En qué se diferencia Miasma de los gusanos npm anteriores?
- Miasma se ejecuta en un gancho de preinstalación, por lo que se activa antes de la postinstalación e incluso una instalación cancelada puede activarlo, y genera persistencia dentro de las herramientas de desarrollo, no solo de CI. Inyecta un gancho SessionStart en Claude Code, escribe un task.json con la carpeta runOnOpen en proyectos de VS Code y genera una carga útil cifrada de forma única por infección para evitar el escaneo de firmas. Eliminar node_modules no lo elimina.
- ¿Qué roba el gusano y adónde lo envía?
- Secretos de GitHub Actions, tokens npm, credenciales de nube, material de Kubernetes y Vault, claves SSH y credenciales de Git. Disfraza la exfiltración como tráfico a api.anthropic[.]com en el puerto 443 y recurre a GitHub como canal secundario, por lo que el filtrado de salida en dominios desconocidos por sí solo no lo detectará.
- ¿Cómo reducen este riesgo las API HTTP de propósito único?
- Un paquete con un gancho de preinstalación ejecuta código arbitrario en cada máquina que lo instala. Una llamada HTTPS a una API de propósito único no ejecuta nada localmente y está controlada por una clave revocable. Si se infringe el proveedor de API, rota una clave. Si se viola un paquete en su árbol, el malware ya se ejecutó. El intercambio tiene un pequeño costo de latencia para un radio de explosión pequeño y una revocación instantánea.
Empieza a construir con botoi
150+ endpoints de API para consultas, procesamiento de texto, generacion de imagenes y utilidades para desarrolladores. Plan gratuito, sin tarjeta de credito.