Escanea para descargar la aplicación Gate
qrCode
Más opciones de descarga
No volver a recordar hoy

Análisis de envenenamiento de NPM — Reproducción del ataque Shai-Hulud

Autor: Joker & Ccj

Fondo

Recientemente, la comunidad de NPM ha vuelto a sufrir un gran ataque de envenenamiento de paquetes de NPM. Este incidente está altamente relacionado con el ataque de Shai-Hulud en septiembre de 2025. El código malicioso en los paquetes de NPM roba las claves de los desarrolladores, las claves de API y otras informaciones sensibles como variables de entorno, utilizando estas claves para crear repositorios públicos y cargar esta información sensible robada.

SlowMist( es una herramienta de inteligencia de amenazas Web3 y monitoreo de seguridad dinámica desarrollada de forma independiente. MistEye responde de inmediato, enviando rápidamente información relevante sobre amenazas, proporcionando a los clientes una garantía de seguridad clave.

![])https://img-cdn.gateio.im/social/moments-159684ebd67ca55d47335ddbd42018c3(

![])https://img-cdn.gateio.im/social/moments-bd2aba046f0a86aca7e1abd2b72e9eed(

Al mismo tiempo, el sistema guardará las muestras maliciosas de inmediato y calculará sus valores de características correspondientes como SHA-256.

![])https://img-cdn.gateio.im/webp-social/moments-0c04f20f1376390bdc04bad915d660b6.webp(

Proceso de análisis

Tomando como ejemplo el paquete @asyncapi/php-template@0.1.1, al comparar con la versión anterior @asyncapi/php-template@0.1.0 se puede observar que la versión 0.1.1 ha añadido dos archivos js, que son setup_bun.js y bun_environment.js, que ha sido ofuscado.

![])https://img-cdn.gateio.im/webp-social/moments-45994a147ca5cec569400f4833f14468.webp(

Se ha agregado un script preinstall en package.json, lo que permite que se ejecute automáticamente setup_bun.js antes de la instalación de las dependencias.

![])https://img-cdn.gateio.im/webp-social/moments-45e344c5a0d73a61db9f267eae229bc6.webp(

En setup_bun.js, primero se comprobará si Bun ya está instalado en el sistema. Si no está instalado, se descargará e instalará automáticamente desde el sitio oficial, y se configurarán correctamente las variables de entorno para poder encontrar el archivo ejecutable de Bun.

Finalmente, se utiliza bun para ejecutar el archivo bun_environment.js, que es un archivo malicioso altamente ofuscado.

![])https://img-cdn.gateio.im/webp-social/moments-44505da1b8a0d007a2a0c1cf3b0472ca.webp(

Después de desofuscar parte del código del script malicioso, se puede saber que aL0)( es la función principal de todo el script malicioso. Se puede observar que este script malicioso lleva a cabo el robo de información sensible, primero verificará el entorno de ejecución para ver si existen credenciales de NPM o GitHub. Si detecta estas credenciales, utilizará las credenciales de NPM para la propagación de la cadena de suministro, y toda la información del sistema y los datos sensibles recopilados serán empaquetados y subidos al repositorio de GitHub controlado por el atacante, para su uso posterior.

Robo de credenciales

AWS: Este script malicioso implementa los métodos runSecrets)( y listAndRetrieveAllSecrets)(. El método runSecrets)( recorre todas las credenciales de acceso a la nube que puede encontrar y todas las regiones posibles, maximizando el alcance del escaneo; mientras que listAndRetrieveAllSecrets)( realiza una “minería profunda” dentro de las credenciales y regiones especificadas, enumerando todos los Secret y obteniendo su contenido en texto claro más reciente. Conjuntamente, los atacantes pueden exportar de una sola vez todos los SecretString y SecretBinary accesibles en la cuenta de AWS de la víctima.

![])https://img-cdn.gateio.im/webp-social/moments-3c33d90aa4bd49b2d8304f07d9cf0c78.webp(

El método enumerateValidCredentials)( se utiliza principalmente para recopilar exhaustivamente todas las claves de servicio en la nube que se puedan utilizar. Intentará una por una desde variables de entorno, archivos de configuración, inicio de sesión por CLI y otras fuentes, y todos los credenciales que se validen con éxito serán registrados para su uso posterior al robar secretos en la nube.

![])https://img-cdn.gateio.im/webp-social/moments-18502e3837d4a198101e4f71f742d424.webp(

GCP: Otro método listAndRetrieveAllSecrets)( implementado en este script malicioso está dirigido principalmente al módulo GCP, que primero enumerará todos los secretos bajo el ID del proyecto GCP especificado, luego localizará directamente la última versión de cada secreto y llamará a accessSecretVersion para leer su contenido en texto plano. Finalmente, recogerá uno por uno todos los secretos obtenidos (como API Key, contraseñas de bases de datos, etc.).

![])https://img-cdn.gateio.im/webp-social/moments-bad2067511f01dd442e955c89db61dc9.webp(

Azure: El otro método listAndRetrieveAllSecrets)( implementado en este script malicioso se dirige principalmente al módulo de Azure. Primero escanea toda la suscripción a través de Azure Resource Manager para encontrar todos los Key Vault; luego utiliza las credenciales obtenidas para conectarse uno a uno a cada Vault; finalmente, enumera todos los Secrets en cada uno de ellos y llama a getSecret para obtener el valor en texto plano de cada secreto.

![])https://img-cdn.gateio.im/social/moments-9176712c5d0ed04eeb1ee93411f8af42(

En la implementación del robo de información sensible, también se utilizan herramientas de seguridad legítimas para atacar a las víctimas. En el método extractAndInstall)(, se descomprime y se extrae el archivo binario de TruffleHog, que originalmente se usa para detectar y verificar información confidencial filtrada en repositorios de código, como claves API y credenciales, pero que es utilizado por los atacantes para escanear todo el sistema de archivos de la víctima.

![])https://img-cdn.gateio.im/webp-social/moments-45e2049fa39e4d26acd79661c664ca21.webp(

) NPM cadena de suministro

Este script malicioso implementa una función updatePackage###( para la propagación de la cadena de suministro de NPM. Primero, utiliza un token de NPM robado para descargar el código fuente de paquetes NPM legítimos que la víctima tiene permiso para publicar, luego modifica el archivo package.json, insertando un comando de script malicioso en el campo scripts. Al mismo tiempo, coloca el script malicioso en el paquete, incrementando automáticamente el número de versión del paquete en 1 para activar la actualización automática del usuario, y empuja el paquete NPM con el script malicioso al repositorio oficial de NPM.

![])https://img-cdn.gateio.im/social/moments-f2c1d619c8b8a125a018a4990e47e144(

) puerta trasera y C2

Después de robar la información, el atacante utilizará el GitHub Token robado para crear un repositorio con un nombre aleatorio bajo su cuenta y obtener un token de registro, disfrazando la computadora de la víctima como un GitHub Actions Runner autoalojado de ese repositorio. Luego, el atacante insertará flujos de trabajo maliciosos en el repositorio, de modo que cualquier tarea de Actions que se active se ejecute en la máquina de la víctima, logrando así la ejecución remota de código.

![]###https://img-cdn.gateio.im/webp-social/moments-547cfd5eb9ee4614a975d1f574583495.webp(

Y subir esta información robada, después de ser cifrada en doble base64, al repositorio creado, cuya descripción es “Sha1-Hulud: The Second Coming.”.

![])https://img-cdn.gateio.im/webp-social/moments-6bad80b5f904d7c25fa993600ff2a710.webp(

Después de la decryption, se pueden ver los datos sensibles filtrados del usuario.

![])https://img-cdn.gateio.im/social/moments-73bf3f27df82dfd50c02ff7c42e746af(

![])https://img-cdn.gateio.im/webp-social/moments-aefb641fee19ee0ad471234e3d5aa081.webp(

![])https://img-cdn.gateio.im/social/moments-ea2062526e3489a6cfd6fcbebd94605c(

Resumen

La reciente intoxicación del repositorio NPM combina la persistencia a largo plazo de gusanos y programas autoalojados, y utiliza TruffleHog para llevar a cabo ataques. El equipo de seguridad SlowMist recomienda a los desarrolladores que, al construir y publicar nuevas iteraciones, adopten una estrategia de bloqueo de versiones de paquetes de dependencia. Si hay actualizaciones de seguridad o funcionales necesarias para los paquetes de dependencia, deben ser actualizadas a través de un estricto proceso de auditoría de seguridad interno, y actualizar la versión bloqueada en consecuencia, evitando actualizaciones ciegas que introduzcan nuevos riesgos.

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado
Opera con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)