Popular node-ipc npm package compromised to steal credentials
Hackers han inyectado malware robacredenciales en nuevas versiones publicadas de node-ipc, un popular paquete de comunicación entre procesos, en un nuevo ataque a la cadena de suministro dirigido a npm.
El paquete node-ipc es un módulo Node.js que permite la comunicación entre procesos a través de sockets Unix, Windows, UDP, TLS y TCP. A pesar de que su mantenedor publicó en marzo de 2022 versiones armadas contra sistemas de Rusia y Bielorrusia, el paquete aún tiene más de 690,000 descargas semanales en npm.
El ataque fue detectado por múltiples empresas de seguridad de aplicaciones, incluyendo Socket, Ox Security y Upwind, quienes confirmaron como maliciosas las versiones 9.1.6, 9.2.3 y 12.0.1. El código malicioso se oculta dentro del punto de entrada CommonJS (node-ipc.cjs) y se ejecuta automáticamente al cargarse las aplicaciones.
El malware está fuertemente ofuscado, toma huellas del sistema infectado, recopila variables de entorno y archivos locales sensibles, comprime los datos robados en archivos y los exfiltra mediante consultas DNS TXT. El compromiso parece ser obra de un actor externo que accedió a la cuenta de un mantenedor inactivo llamado 'atiertant'.
El infostealer recopila los siguientes tipos de información: credenciales de la nube (AWS, Azure, GCP, OCI, DigitalOcean, entre otros), claves SSH y configuraciones SSH, credenciales de Kubernetes, Docker, Helm y Terraform, tokens de npm, GitHub, GitLab y Git CLI, archivos .env y credenciales de bases de datos, historiales de shell y secretos CI/CD, archivos de llavero de macOS y keyrings de Linux, perfiles y bases de datos de claves de Firefox (en macOS), y almacenamiento local de Microsoft Teams y rutas IndexedDB.
El malware omite archivos mayores de 4 MiB y evita escanear directorios .git y node_modules para aumentar la eficiencia y reducir el ruido operativo. Una característica notable es el uso de consultas DNS TXT en lugar de tráfico HTTP convencional para la exfiltración de datos. Los atacantes utilizan un dominio falso con temática de Azure (sh[.]azurestaticprovider[.]net:443) como resolvedor bootstrap, transmitiendo los datos a 'bt[.]node[.]js' con prefijos de consulta como xh, xd y xf.
Según Socket, la exfiltración de un archivo comprimido de 500 KB podría generar aproximadamente 29,400 solicitudes DNS TXT, ayudando a que el tráfico se mezcle con la actividad normal de DNS. Antes de la exfiltración, el malware almacena los datos recopilados en archivos tar.gz temporales, que se eliminan después para reducir las huellas forenses.
El malware no establece persistencia ni descarga cargas secundarias, por lo que la operación parece centrada en el robo rápido de credenciales. Los desarrolladores potencialmente afectados deben eliminar inmediatamente las versiones afectadas, rotar secretos y credenciales expuestos, e inspeccionar los archivos lockfile y las cachés de npm.