El malware autorreplicable ChainDrop ha comprometido más de 1.300 paquetes del registro npm, con un alcance potencial de unos 2.000 millones de descargas mensuales combinadas. El ataque comenzó después de que un actor de amenazas tomara el control de la cuenta de GitHub del mantenedor de Keyv y se extendió rápidamente a otros proyectos.
Entre los paquetes afectados figuran Keyv y Cacheable, además de flat-cache y file-entry-cache, utilidades de caché mantenidas por la misma persona. La campaña también alcanzó paquetes asociados a Deliveroo, Ornikar, OneReach, Picsart, Qlik y ServiceTitan. Varias empresas de seguridad de aplicaciones identificaron la intrusión y vincularon la actividad con un gusano basado en Shai-Hulud al que denominaron ChainDrop.
Aikido informó de que, al menos, 868 paquetes distribuidos en 1.381 versiones habían sido comprometidos. Los investigadores explican que el atacante introdujo archivos maliciosos directamente en las ramas principales de los proyectos y después generó nuevas versiones de los paquetes. Al utilizar los flujos legítimos de GitHub Actions para compilar y publicar los artefactos, las versiones alteradas conservaron información válida de procedencia.
Los paquetes envenenados incluyen dos archivos principales: setup.mjs, utilizado como descargador, y Math_Symbol.js, que contiene el código para extraer información sensible. También incorporan en package.json la instrucción "preinstall": "node setup.mjs". De este modo, cualquier ejecución de npm install sobre una versión afectada hacía que setup.mjs se ejecutara automáticamente antes de completar la instalación.
El descargador obtiene el runtime de JavaScript Bun desde una versión oficial publicada en GitHub y lo utiliza para ejecutar Math_Symbol.js. Una vez lanzado el código de robo de información, setup.mjs elimina el directorio temporal empleado para almacenar el runtime. BleepingComputer también observó paquetes comprometidos que contenían el script math_init.js, otra variante del código ofuscado.
El infostealer valida cada token en tiempo real contra registry.npmjs[.]org/-/whoami antes de intentar sustraerlo. Su objetivo son estaciones de trabajo de desarrolladores y ejecutores de CI/CD, desde los que busca credenciales que permitan acceder a otros repositorios y paquetes npm. La información recopilada incluye el entorno completo de procesos, archivos locales de configuración y credenciales, tokens PAT y de workflows de GitHub, tokens npm y secretos de GitHub Actions.
El malware también busca credenciales de AWS, valores de SSM Parameter Store y secretos de Secrets Manager, así como secretos de Kubernetes, tokens y secretos KV de HashiCorp Vault, credenciales de bases de datos, claves privadas y credenciales de Stripe, Slack, Twilio, Azure y GCP. Según Wiz, el dominio npm-cache[.]com se utiliza asimismo para exfiltrar datos y debe considerarse un indicador de compromiso relevante.
La carga maliciosa incorpora capacidades de autopropagación. Puede examinar los entornos infectados en busca de credenciales con acceso a código fuente y paquetes de otros mantenedores, lo que permite ampliar la campaña mediante proyectos que ya hayan sido comprometidos. Debido a que el ataque continúa activo, se espera que aumenten tanto el número de paquetes afectados como la relación de versiones maliciosas.
Los administradores deben considerar comprometida cualquier estación de desarrollo o ejecutor de CI/CD donde se haya instalado una versión afectada, incluso si el paquete ya fue eliminado. Las medidas recomendadas incluyen reconstruir los sistemas desde copias seguras o desde cero, rotar todos los tokens accesibles desde el entorno afectado, revisar los registros en busca de accesos no autorizados y comprobar los repositorios para detectar commits o cambios inesperados.
Wiz, StepSecurity, Aikido, Socket y Ox Security han publicado listas de paquetes comprometidos e indicadores de compromiso, incluidos hashes de archivos maliciosos y datos de red. Mientras prosigue la investigación, las organizaciones deben mantener controles de allowlisting de dependencias, comprobaciones de integridad y mecanismos de control de procedencia. Fuente: BleepingComputer.