Confirmado un ataque masivo a paquetes en el repositorio NPM, llevado a cabo mediante un nuevo gusano autorreplicante llamado ChainDrop, que inyecta malware en las dependencias. Como resultado del ataque, se publicaron 2212 versiones maliciosas para 444 paquetes. Los paquetes más populares comprometidos, keyv, flat-cache y file-entry-cache, tienen 154, 149.9 y 147.6 millones de descargas por semana, respectivamente.
El cargador de gusanos se encontraba en los archivos setup.mjs y Math_Symbol.js, que se ejecutaban a través de un manejador preinstall ("preinstall": "node setup.mjs"), invocado al instalar el paquete afectado. Los scripts mencionados descargaban un tiempo de ejecución Bun legítimo y un código ofuscado del gusano, que tiene un tamaño de 710 KB. Tras su activación, el gusano buscaba en el sistema y en las variables de entorno tokens de NPM, PyPI, CircleCI, AWS, GCP, Docker, Azure, HashiCorp, KubernetesK8s y otros servicios (se analizaron más de 140 rutas de archivos, como ~\ .npmrc), así como exploraba la memoria (a través de /proc//mem) del entorno de GitHub Actions en busca de tokens y credenciales.
Si se encontraba un token para acceder al directorio NPM, el gusano publicaba automáticamente nuevas versiones maliciosas para los paquetes en desarrollo en el entorno actual, infectando el árbol de dependencias. A diferencia del gusano previamente detectado, Shai-Hulud 2.0 en ChainDrop se implementó la técnica EtherHiding para recibir comandos de control a través de la cadena de bloques pública de Ethereum, utilizando cifrado para ocultar la información confidencial transmitida al servidor del atacante y asegurando la inserción en los archivos de configuración de Claude Code, VS Code y GitHub Copilot para consolidar la presencia en el sistema.
El ataque comenzó con la compromisión del proceso de creación de versiones basado en GitHub Actions para el paquete keyv, que tiene 154 millones de descargas por semana y se utiliza como dependencia en 1703 paquetes. Los atacantes crearon una nueva versión 6.0.0, inyectándole código malicioso, y la publicaron utilizando el mecanismo de"Trusted Publishers"y una adecuada certificación SLSA.Después de la publicación, el gusano infectó muchos de los paquetes dependientes de keyv, y a su vez comenzó a afectar dependencias indirectas.
Entre los paquetes más populares que fueron infectados por el gusano, que publicó versiones maliciosas para ellos, están:
- flat-cache 6.1.24 (149.8 millones de descargas por semana);
- file-entry-cache 11.1.6 (147.5 millones);
- cacheable-request 13.0.20 (33.9 millones);
- @cacheable/utils 2.5.1 (8.7 millones);
- cacheable 2.5.1 (7.8 millones);
- @cacheable/memory 2.2.1 (7.1 millones);
- cache-manager 7.2.10 (4.2 millones);
- @cacheable/node-cache 3.1.2 (1.5 millones).
Fuente: linux.org.ru
