Investigadores de seguridad han identificado al menos 187 paquetes NPM
comprometidos en un ataque continuo a la cadena de suministro, con una carga
maliciosa que se autopropaga para infectar otros paquetes.
La campaña coordinada de tipo gusano, denominada «Shai-Hulud», comenzó
el lunes con la vulneración del paquete npm @ctrl/tinycolor, que recibe
más de 2 millones de descargas semanales. Desde entonces, la campaña se ha
expandido significativamente y ahora incluye
paquetes publicados bajo el espacio de nombres NPM de CrowdStrike.
Nota de color: el nombre «Shai-Hulud» proviene de los
archivos de flujo de trabajo shai-hulud.yaml utilizados por
el malware encontrado en las versiones comprometidas y es una referencia a los
gusanos de arena gigantes de la serie Dune de Frank Herbert. «Si bien no es una referencia única, su presencia refuerza que el atacante
denominó deliberadamente la campaña ‘Shai-Hulud'», declararon hoy los investigadores de Socket, Kush Pandya y Peter van der Zee.
Desde tinycolor a CrowdStrike
Ayer, Daniel Pereira, ingeniero senior de software,
alertó a la comunidad
sobre un ataque a gran escala a la cadena de suministro de software que afecta
al registro de JavaScript más grande del mundo, npmjs.com, advirtiendo
a todos que se abstuvieran de instalar las últimas versiones del proyecto
@ctrl/tinycolor.
Socket, empresa de seguridad de la cadena de suministro de software, comenzó a
investigar la vulnerabilidad
e identificó al menos 40 paquetes comprometidos en esta campaña. Luego,
investigadores de
Socket y Aikido han identificado paquetes adicionales, lo que eleva el recuento a al menos 187.
StepSecurity también publicó un análisis técnico con fragmentos desofuscados y
diagramas de flujo de ataque, que confirma en gran medida los hallazgos
iniciales de Socket. Los paquetes afectados incluyen varios publicados por la
cuenta npmjs de CrowdStrike:
crowdstrike-publisher.
«Estos paquetes no se utilizan en el sensor Falcon, la plataforma no se ve
afectada y los clientes siguen protegidos. Estamos trabajando con NPM y
llevando a cabo una investigación exhaustiva».
Gusano autopropagador usa TruffleHog para robar secretos.
Las versiones comprometidas incluyen un mecanismo de autopropagación que ataca
otros paquetes del mismo mantenedor. El malware descarga cada paquete,
modifica su package.json, inyecta un script bundle.js (mostrado
a continuación), reempaqueta el archivo y lo republica, lo que permite la
troyanización automática de los paquetes posteriores, según explicaron los
investigadores de Socket.

El script bundle.js utiliza
TruffleHog, un escáner de secretos legítimo que desarrolladores y profesionales de
seguridad pueden usar para encontrar información confidencial filtrada
accidentalmente, como claves API, contraseñas y tokens, dentro de repositorios
de código y otras fuentes de datos. Sin embargo, el script malicioso
abusa de la herramienta para buscar tokens y credenciales de la nube en
el host.
«Valida y utiliza credenciales de desarrollador, crea un flujo de trabajo
de GitHub Actions dentro de los repositorios y exfiltra los resultados a un
webhook codificado
(hxxps://webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7)», explica Socket.
El malware encontrado en paquetes adicionales identificados hoy es idéntico al
tipo anterior que usaba bundle.js para:
-
Descargar y ejecutar la herramienta legítima de escaneo de secretos,
TruffleHog - Buscar secretos como tokens y credenciales de la nube en el host
-
Comprobar si las credenciales de desarrollador y de CI descubiertas son
válidas -
Crear flujos de trabajo de GitHub Actions no autorizados dentro de los
repositorios - Exfiltrar datos confidenciales a un punto final de webhook codificado
El ataque se produce tras dos ataques de alto perfil a la cadena de suministro
ocurridos el mismo mes.
Aunque la causa raíz de este nuevo ataque aún se está investigando, expertos,
incluido Pereira, plantean la hipótesis de que podría haber sido orquestado
por los atacantes responsables de ‘s1ngularity’.
Estos ataques continuos demuestran la fragilidad de la cadena de suministro
de software moderna, donde una sola solicitud de extracción maliciosa o una
cuenta de mantenimiento comprometida puede tener un impacto en cientos de
proyectos.
Los usuarios afectados deben auditar sus entornos y registros para detectar
indicios de vulnerabilidad, rotar todos los secretos y tokens de CI/CD, y
revisar los árboles de dependencias para detectar versiones maliciosas. Fijar
las dependencias a versiones de confianza y limitar el alcance de las
credenciales de publicación son pasos cruciales para reducir la exposición a
vulnerabilidades a nivel de paquete.
Fuente:
BC