Shai-Hulud 2.0: respuesta actualizada de Elastic sobre la vulneración

A todo el mundo le encanta las secuelas, ¿verdad? Desde el lunes 24 de noviembre, la comunidad de desarrollo de software ha estado lidiando con la noticia de que Shai-Hulud Worm ha regresado y se ha actualizado a 2.0. La comunidad ha estado en modo de respuesta, y Elastic no es una excepción. Si bien los productos Elastic no se envían con Node Package Manager (npm), nuestro software, como muchos, usa npm para recuperar paquetes del registro de paquetes de npmjs.com durante las compilaciones.

En este blog, repasaremos los pasos que Elastic tomó para monitorear y poner en marcha medidas que mitiguen la amenaza que supone el número cada vez mayor de paquetes comprometidos. También compartiremos nuestras reglas de prevención y detección, consultas de búsqueda y recomendaciones en consonancia con esta nueva versión de Shai-Hulud. 

Comprender la amenaza evolucionada: Shai-Hulud 2.0

La enorme escala del ecosistema npm lo convierte en un objetivo principal para actividades maliciosas. En noviembre de 2025, surgió una nueva variante del malicioso gusano npm conocida como Shai-Hulud: The Second Coming debido al marcador de campaña usado en las descripciones del repositorio de GitHub tras el ataque inicial de septiembre de 2025 y está filtrando datos activamente. Comprometió cientos de paquetes, incluidos proyectos populares de AsyncAPI, Zapier, PostHog y Postman.

La similitud con la variante inicial es que los paquetes npm están infectados con malware autorreplicante. Sin embargo, Shai-Hulud 2.0 se diferencia de su primera iteración en que instala bun con el archivo setup_bun.js y luego lo usa para ejecutar bun_environment.js, que contiene el código malicioso. Luego, exfiltra los datos robados creando repositorios de GitHub con nombres aleatorios, a menudo publicando los datos de una víctima en un repositorio asociado con una víctima separada y no afiliada, lo que se conoce como "exfiltración entre víctimas". Los repositorios de GitHub recién creados tienen la descripción Sha1-Hulud: The Second Coming

En última instancia, esto significa que simplemente buscar en tus propios repositorios puede no revelar datos filtrados de tus entornos. Además, Shai-Hulud ya no se limita a infectar 20 paquetes npm; ahora infectará hasta 100 paquetes npm y borrará el directorio personal del usuario si no puede autenticar usando las credenciales de GitHub o npm.

Respuesta de Elastic

Usando las lecciones y los mecanismos implementados después del incidente inicial de Shai-Hulud, Elastic pudo desplegar defensas inmediatas e integrales.

  • Inventario de dependencias: Elastic analiza continuamente nuestros productos empleando herramientas de análisis de composición de software (SCA), lo que nos permite comprender rápidamente qué paquetes se emplean y dónde.

  • Inteligencia de amenazas: emplear múltiples fuentes de inteligencia de amenazas para comprobar la creciente lista de paquetes maliciosos en nuestro inventario de dependencias y activar alertas.

  • Mejores prácticas y restricciones de Npmjs: desde Shai-Hulud 1, en septiembre, los equipos de Elastic se han mudado a Trusted Publisher, lo que permite que sigan publicando; los tokens restantes fueron revocados, lo que previene la capacidad de publicar con un token de larga duración.

  • Edad mínima de dependencia: hemos implementado una edad mínima de lanzamiento del paquete (período de enfriamiento) en nuestra automatización, lo que garantiza que las nuevas versiones de paquetes no se extraigan automáticamente hasta que hayan estado disponibles durante 14 días.

  • Implementar el escaneo de endpoint: empleando la integración de OSQuery para Elastic Agent, implementamos escaneo continuo para detectar los paquetes npm comprometidos instalados en portátiles Elastic.  

  • Reglas de detección listas para usar (OOTB): Elastic Security Labs ya proporciona reglas de detección listas para usar de Elastic Security para ayudar a identificar los sistemas en los que se ha instalado y están ejecutando un paquete comprometido. Hemos incluido más detalles sobre las protecciones que se enumeran a continuación y que puedes usar para tu propia búsqueda de amenazas.

  • Notificar a los desarrolladores de Elastic: se enviaron avisos a los desarrolladores de Elastic, notificándoles de la investigación en curso y prohibiendo la actualización o instalación de nuevos paquetes npm.

La segunda vuelta impacta muy de cerca

A través de nuestro socio, Entro, Elastic fue informado de que una pipeline de integración continua (CI) de Elastic ejecutó el malware Shai-Hulud 2.0 y publicó datos en un repositorio público de GitHub. Esta pipeline se emplea para GitOps, específicamente como orquestador para Elastic Cloud. No se produjo ningún impacto en los sistemas de Elastic Cloud ni en los clientes de Elastic. Se descubrió que el culpable era una dependencia transitiva. Nuestra rápida respuesta y coordinación con nuestros equipos de ingeniería aseguraron que contuviéramos y remediáramos la amenaza antes de una posible explotación.

Contención y remediación rápidas

  • Se eliminó la dependencia open source que contenía el malware de todos los repositorios identificados de Elastic de GitHub

  • Se identificaron las pipelines o los procesos manuales donde podría ejecutarse el malware

  • Se identificaron las ejecuciones de CI y los usuarios afectados

  • Se identificaron los secretos disponibles para estas ejecuciones

  • Se rotaron todos los secretos (no efímeros)

Se confirma que no hubo impacto en los clientes

  • GitHub eliminó rápidamente el repositorio que exponía los datos extraídos de Elastic, que incluía cuatro archivos:

    • cloud.json sin datos

    • contents.json con detalles sobre un corredor de CI, así como un usuario de GitHub no relacionado y el token de GitHub de ese usuario no relacionado

    • truffleSecrets.json con hallazgos falsos positivos de secretos

    • environment.json con variables de entorno asociadas a un runner de CI, incluyendo secretos usados en la compilación. Nota: Elastic se cercioró de que estos secretos fueran revocados.

  • No hay evidencia de que los secretos de Elastic se hayan usado fuera de Elastic.

  • No hay evidencia de que el gusano se haya propagado a un paquete Elastic npm.

  • La pipeline no está asociada a un producto Elastic.

  • No hay impacto para los clientes de Elastic.

Consultas de búsqueda de amenazas

También recomendamos a los clientes de Elastic Security que busquen posibles compromisos en sus propios entornos. Las siguientes consultas KQL se pueden usar para identificar comportamientos asociados con este compromiso de la cadena de suministro:

// IOC for the Github Self-Hosted Actions runner name
process.name:Runner.Listener and process.command_line:*SHA1HULUD*

// IOC - node/bun executing bun_environment.js
process.name:(node or bun) and process.args:*bun_environment.js

// credentials discovery using trufflehog from node/bun or node_modules related working directory 
process.name:("trufflehog" or "trufflehog.exe") and process.args:"filesystem" and process.args:"--json" and (process.parent.name : (node or bun or node.exe or bun.exe) or process.working_directory:*node_modules*)

// curl used to download GH actions runner to victim machine
process.name:(curl or or curl.exe or powershell.exe or wget or wget.exe) and process.command_line:*github.com/actions/runner/releases/download*

//docker escape via mounting the host file system and executing bash commands to tamper with the host file system
process.name:docker and process.args :("--privileged" and run) and process.args :"-v" and process.args :/\:/*  and  process.args :(bash or sh or cp)

Ejemplo de coincidencias:

Detecciones Elastic preconfiguradas

Las siguientes reglas de detección y prevención listas para usar también proporcionan cobertura actualizada para las actividades de Shai-Hulud Worm 2.0:

Compromiso con la seguridad

La seguridad es fundamental para el ciclo de vida de desarrollo y los procesos operativos de Elastic. El nuevo gusano Shai-Hulud destaca la naturaleza persistente y en rápida evolución de las amenazas cibernéticas a las cadenas de suministro de software globales. El incidente en nuestro entorno demuestra la eficacia de nuestros equipos de seguridad y la importancia de una respuesta rápida. Seguimos comprometidos con lo siguiente:

  • Monitorización continua: mantener una monitorización 24/7 de nuestros sistemas y redes para detectar cualquier signo de vulneración.

  • Respuesta rápida: garantizar que nuestros equipos de seguridad estén preparados para responder con rapidez y eficacia a las nuevas amenazas.

  • Transparencia: comunicarnos abiertamente con nuestros usuarios y la comunidad sobre incidentes de seguridad y nuestros esfuerzos de mitigación.

Continuaremos monitoreando la nueva información. Y a medida que sepamos más sobre este evento, actualizaremos esta publicación. Para obtener más información sobre cómo Elastic puede ayudar a proteger tu entorno, visita nuestra página de soluciones de seguridad.

El momento del lanzamiento de cualquiera de las características o funcionalidades descritas en esta publicación queda a exclusivo criterio de Elastic. Es posible que algunas características o funcionalidades que no estén disponibles en este momento no se lancen a tiempo o no se lancen en absoluto.