Paquete Popular de npm 'node-ipc' Comprometido en Ataque a la Cadena de Suministro, Robando Credenciales
Un nuevo ataque a la cadena de suministro ha tenido como objetivo el popular paquete **node-ipc**, inyectando malware para robar credenciales en versiones publicadas recientemente. El paquete comprometido, ampliamente utilizado para la comunicación entre procesos, representa un riesgo significativo para los desarrolladores y sus sistemas.
Los hackers han inyectado malware para robar credenciales en versiones recién 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 de Node.js que permite que varios procesos se comuniquen a través de todas las formas de sockets, incluyendo Unix, Windows, UDP, TLS y TCP.
A pesar de que el mantenedor publicó en marzo de 2022 [versiones "armadas"](https://www.bleepingcomputer.com/news/security/big-sabotage-famous-npm-package-deletes-files-to-protest-ukraine-war/) que apuntaban a sistemas basados en Rusia y Bielorrusia con un módulo de sobrescritura de datos, en protesta por la invasión rusa de Ucrania, el paquete todavía tiene más de 690.000 descargas semanales en npm.
### Descubrimiento del Ataque
El reciente ataque a la cadena de suministro fue detectado por múltiples empresas de seguridad de aplicaciones, incluyendo **Socket**, **Ox Security** y **Upwind**, quienes confirmaron las siguientes tres versiones como maliciosas:
* [email protected]
* [email protected]
* [email protected]
El código malicioso se esconde dentro del punto de entrada CommonJS (node-ipc.cjs) y se ejecuta automáticamente cada vez que se cargan las aplicaciones.
El malware está fuertemente ofuscado, identifica los sistemas infectados, recopila variables de entorno y archivos locales sensibles, comprime los datos robados en archivos y los exfiltra a través de consultas TXT de DNS.
El último compromiso parece ser obra de un actor externo que comprometió la cuenta de un mantenedor inactivo llamado 'atiertant'.
### Datos Dirigidos por el Malware
Según los investigadores, el infostealer inyectado en las nuevas versiones de **node-ipc** recopila los siguientes tipos de información de los sistemas comprometidos:
* Credenciales en la nube de **AWS**, **Azure**, **GCP**, **OCI**, **DigitalOcean** y otros
* Claves 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 de CI/CD
* Archivos del llavero de macOS y keyrings de Linux
* Archivos de perfil y base de datos de claves de Firefox (en macOS)
* Almacenamiento local de Microsoft Teams y rutas de IndexedDB
El malware omite archivos de más de 4 MiB y evita escanear los directorios .git y node_modules para aumentar la eficiencia y reducir el ruido operativo en el host.

### Exfiltración vía Registros TXT de DNS
Una característica operativa notable es el uso de consultas TXT de DNS en lugar del tráfico convencional de comando y control (C2) basado en HTTP para la exfiltración de datos. Los atacantes utilizan un dominio falso con temática de Azure (sh[.]azurestaticprovider[.]net:443) como resolvedor de arranque, 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 TXT de DNS, ayudando a que el tráfico se mezcle con la actividad normal de DNS.
Antes de la sumisión, el malware almacena los datos recopilados en archivos temporales comprimidos tar.gz, que se eliminan después de la exfiltración para reducir los rastros forenses.
El malware no establece persistencia ni descarga ningún payload secundario, por lo que la operación parece centrarse en el robo y exfiltración rápida de credenciales.
### Pasos de Mitigación
Los desarrolladores potencialmente afectados deben eliminar inmediatamente las versiones afectadas, rotar los secretos y credenciales expuestos, e inspeccionar los archivos de bloqueo (lockfiles) y las cachés de npm.