Los investigadores de ciberseguridad están haciendo sonar la alarma sobre lo que se ha descrito como «actividad maliciosa» en las versiones recientemente publicadas de node-ipc.
Según Socket y StepSecurity, se ha confirmado que tres versiones diferentes del paquete npm son maliciosas:
- nodo-ipc@9.1.6
- nodo-ipc@9.2.3
- nodo-ipc@12.0.1
«Los primeros análisis indican que node-ipc@9.1.6, node-ipc@9.2.3 y node-ipc@12.0.1 contienen comportamientos de ladrón/puerta trasera ofuscados», dijo Socket.
«El malware parece tomar huellas dactilares del entorno del host, enumerar y leer archivos locales, comprimir y fragmentar los datos recopilados, envolver la carga útil en un sobre criptográfico e intentar la filtración a través de un punto final de red seleccionado mediante lógica de direcciones/DNS».
StepSecurity dijo que la carga útil muy ofuscada se activa cuando se requiere el paquete en tiempo de ejecución e intenta filtrar un amplio conjunto de secretos de desarrollador y de la nube a un servidor externo de comando y control (C2).
Esto incluye 90 categorías de credenciales, incluidos Amazon Web Services, Google Cloud, Microsoft Azure, claves SSH, tokens de Kubernetes, configuraciones de GitHub CLI, configuraciones de Claude AI y Kiro IDE, estado de Terraform, contraseñas de bases de datos, historial de shell y más. Luego, los datos recopilados se comprimen en un archivo GZIP y se transmiten al dominio «sh.azurestaticprovider(.)net».
Las tres versiones fueron publicadas por una cuenta llamada «atiertant», que no tiene conexión con el autor original del paquete, «riaevangelist». Aunque «atiertant» aparece en la lista de mantenedores, la cuenta no tiene un historial de publicación anterior en relación con el paquete node-ipc. La actualización anterior del paquete fue en agosto de 2024.
El hecho de que el paquete inactivo de alta descarga se haya visto comprometido después de un intervalo de 21 meses indica que las credenciales «atiertant» fueron comprometidas recientemente o que la cuenta se agregó específicamente como mantenedor para publicar las versiones maliciosas.

Lo notable de la actividad es que no depende de ningún enlace del ciclo de vida de npm, como scripts de preinstalación, instalación o postinstalación, sino que agrega la carga útil maliciosa como una expresión de función invocada inmediatamente (IIFE) al final de «node-ipc.cjs». Esto, a su vez, hace que el malware se active incondicionalmente en cada requisito (‘nodo-ipc’).
La rareza no termina ahí, ya que la carga útil realiza una verificación de huellas dactilares SHA-256 y la compara con un hash codificado ensamblado a partir de ocho fragmentos de tabla ofuscados incrustados en el código, antes de continuar con la enumeración del sistema y la recolección integral de credenciales.
«Esto significa que 12.0.1 es completamente inerte en cualquier máquina cuya ruta del módulo principal no alcance el valor objetivo», dijo el investigador de StepSecurity Sai Likhith. «El atacante sabe exactamente qué proyecto o desarrollador está siendo atacado y precalcula el hash de su punto de entrada antes de publicarlo. Las versiones 9.x no tienen esta puerta y ejecutarán la carga útil completa en cualquier sistema que las cargue».
El malware también incorpora un segundo canal de exfiltración además de emitir un HTTPS POST al dominio falso de Azure que contiene los datos robados comprimidos. Esto implica codificar fragmentos del archivo como un registro DNS TXT después de anular el solucionador de DNS del sistema con Google Public DNS para eludir los controles de seguridad locales basados en DNS.
«Primero resuelve sh.azurestaticprovider.net usando 1.1.1.1 (primario) o 8.8.8.8 (alternativo) para obtener la IP C2», dijo StepSecurity. «Luego redirecciona el solucionador directamente a la IP C2 para todas las consultas de exfiltración».
«El sumidero de DNS directo a C2 es una técnica anti-detección notable. Debido a que las consultas de exfiltración nunca tocan los solucionadores de DNS públicos, no hay actividad bt.node.js observable en los registros de DNS públicos. Las organizaciones que dependen únicamente del registro de DNS a través de solucionadores corporativos no verían este tráfico».
Esta no es la primera vez que el paquete npm incorpora una funcionalidad maliciosa. En marzo de 2022, el responsable del paquete introdujo deliberadamente capacidad destructiva en las versiones 10.1.1 y 10.1.2 sobrescribiendo archivos en sistemas ubicados en Rusia o Bielorrusia como forma de protesta tras la invasión militar rusa de Ucrania.
Dos versiones posteriores, 11.0.0 y 11.1.0, incluyeron la dependencia «peacenotwar», que también fue publicada por el mismo mantenedor como una «protesta no violenta contra la agresión de Rusia».
«El último incidente parece involucrar una republicación sospechosa o reintroducción de código malicioso en versiones de un paquete conocido, en lugar de un intento de typosquatting», dijo Socket.
Se recomienda a los usuarios eliminar las versiones comprometidas de node-ipc y reinstalar una versión limpia conocida (9.2.1 y 12.0.0), asumir el compromiso y rotar las credenciales y secretos, auditar la actividad de publicación de npm para cualquier paquete accesible con los tokens rotados y revisar los registros de ejecución del flujo de trabajo para detectar actividades sospechosas, auditar los registros de la nube para verificar si las identidades de IAM cuyas credenciales estaban disponibles durante la ventana comprometida realizaron acciones no autorizadas y bloquear el tráfico de salida al dominio C2.