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 los paquetes identificados 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.
- La primera semana de septiembre, un malware basado en IA afectó a 2.180 cuentas de GitHub en lo que se denominó el ataque 's1ngularity'.
- A principios de este mes, los mantenedores de los populares paquetes chalk y debug también fueron víctimas de phishing en un ataque separado, lo que provocó que sus proyectos se vieran comprometidos.
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