Un gusano autorreplicante infectó 187 paquetes en NPM.

El ataque a los paquetes acompañantes en el repositorio NPM ha alcanzado un nuevo nivel. Además de utilizar malware para interceptar pagos e información confidencial, los atacantes han comenzado a inyectar un gusano en paquetes comprometidos para automatizar la inserción de malware en las dependencias. Se ha registrado el uso del gusano después de la comprometición del paquete NPM @ctrl/tinycolor, que tiene 2.2 millones de descargas semanales y es una dependencia directa en 964 paquetes. Como resultado de la actividad del gusano, el ataque abarcó 187 paquetes, para los cuales se formaron versiones maliciosas (477 versiones maliciosas).

Durante un nuevo ataque, después de obtener los parámetros de la cuenta del acompañante mediante phishing, los atacantes publican una versión de un paquete con gusano, que se activa al instalar el paquete comprometido entre las dependencias. Tras la activación, el gusano busca credenciales en el entorno actual, descargando y ejecutando la herramienta TruffleHog. Si se encuentra un token de conexión al directorio de NPM, el gusano publica automáticamente una nueva versión maliciosa y afecta en cadena al árbol de dependencias. Además del token de acceso a NPM, el gusano guarda claves de acceso a GitHub y servicios en la nube como AWS, Azure y GCP (Google Cloud Platform), así como otros datos confidenciales que puede detectar el escáner TruffleHog.

Las versiones maliciosas se generan para los 20 paquetes más populares a los que tiene acceso el token NPM encontrado. La funcionalidad de publicación de versiones se implementa en forma de la función NpmModule.updatePackage, que carga el archivo comprimido original del paquete, modifica el número de versión y añade un postinstall hook al archivo package.json, inserta el manejador bundle.js, vuelve a empaquetar el paquete y lo publica. Se admite el funcionamiento en Linux y macOS.

Al gusano se le ha asignado el nombre en código Shai-Hulud (un gusano gigante mencionado en la novela Dune). Las credenciales encontradas en el sistema se publican en GitHub creando repositories llamados Shai-Hulud (por ejemplo, «B611/Shai-Hulud»), y también se reflejan en forma codificada en los registros de GitHub Actions. En el repositorio creado se coloca un archivo data.json, que contiene una línea con información codificada en base64 sobre el sistema, las variables de entorno y las claves de acceso interceptadas. En el CI basado en GitHub, para transmitir información a un host externo, el gusano crea un manejador de GitHub Actions (.github/workflows/shai-hulud-workflow.yml). Aparentemente, el ataque no se limita a los 187 paquetes mencionados, ya que continúan apareciendo nuevos repositorios en GitHub con el nombre Shai-Hulud y el archivo data.json.

Un gusano autorreplicante infectó 187 paquetes en NPM.

Entre otros, como resultado de la actividad del gusano, 25 paquetes de la empresa CrowdStrike, que desarrolla herramientas para la protección contra ataques a través de dependencias (Supply Chain). Según CrowdStrike, los paquetes comprometidos no fueron utilizados en la plataforma Falcon y el ataque no se propagó a los clientes. También se supo que la pasada ola de publicaciones de versiones maliciosas en NPM, llevada a cabo sin el gusano, afectó al proyecto gemini-cli, desarrollado por la empresa Google.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster