Ir al contenido
Guide

El gusano Miasma ataca los paquetes npm de Red Hat: detectar, rotar, reemplazar

| 8 min read

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.

Code on a terminal representing an npm supply chain worm incident response
Photo by Growtika on Unsplash

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-client
  • tsc-transform-imports
  • topological-inventory-client
  • sources-client
  • rule-components
  • remediations-client
  • rbac-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.json y .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.