
Los investigadores de ciberseguridad están haciendo sonar la alarma sobre una supuesta «actividad maliciosa» en una versión recientemente lanzada de node-ipc.
Según Socket y StepSecurity, se ha confirmado que tres versiones diferentes de paquetes npm son maliciosas.
nodo-ipc@9.1.6 nodo-ipc@9.2.3 nodo-ipc@12.0.1
«El análisis inicial indica 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 intentar 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 y exfiltrarla a través de puntos finales de red seleccionados por la lógica de direcciones/DNS».
Según StepSecurity, la carga útil altamente ofuscada se activa cuando el paquete se necesita en tiempo de ejecución e intenta filtrar una amplia gama de información confidencial de desarrolladores y de la nube a servidores externos de comando y control (C2).
Esto incluye credenciales en 90 categorías, incluidos Amazon Web Services, Google Cloud, Microsoft Azure, claves SSH, tokens de Kubernetes, configuración 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. Los datos recopilados se comprimen en un archivo GZIP y se envían al dominio «sh.azurestaticprovider(.)net».
Las tres versiones fueron publicadas por una cuenta llamada ‘atiertant’, que no tiene relación con el autor original de este paquete, ‘riaevangelist’. La lista de mantenedores muestra ‘atiertant’, pero esta cuenta no tiene un historial de publicaciones anterior relacionado con el paquete node-ipc. El paquete se actualizó por última vez en agosto de 2024.
El hecho de que un paquete inactivo y muy descargado se haya visto comprometido después de una pausa de 21 meses indica que las credenciales del «attietant» se vieron comprometidas recientemente o que la cuenta se agregó como mantenedor específicamente para publicar la versión maliciosa.

Lo notable de esta actividad es que no depende de los ganchos del ciclo de vida de npm, como los scripts de preinstalación, instalación o posinstalación, sino que agrega la carga útil maliciosa como una expresión de función invocada inmediata (IIFE) al final de ‘node-ipc.cjs’. Esto hace que el malware se inicie incondicionalmente en cada requisito (‘node-ipc’).
Esto no es lo único extraño. 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 comenzar a enumerar el sistema y recopilar credenciales completas.
«Esto significa que 12.0.1 es completamente inerte en máquinas donde la ruta del módulo principal no tiene el valor objetivo», dijo el investigador de StepSecurity Sai Likhith. «El atacante sabe exactamente qué proyectos y desarrolladores están siendo atacados y calcula previamente el hash del punto de entrada antes de publicarlo. Las versiones 9.x no tienen esta puerta y la carga útil completa se ejecuta en el sistema que las carga».
Además de emitir un HTTPS POST a un dominio falso de Azure que contiene datos comprimidos robados, el malware también incorpora un segundo canal de exfiltración. Esto implica anular el solucionador de DNS del sistema con el DNS público de Google para eludir los controles de seguridad locales basados en DNS y luego codificar fragmentos del archivo como registros DNS TXT.
«Primero, resuelva sh.azurestaticprovider.net usando 1.1.1.1 (primario) o 8.8.8.8 (alternativo) para obtener la IP C2», dice StepSecurity. «Luego redirigimos el solucionador directamente a la IP C2 para todas las consultas de extracción».
«El hundimiento directo de DNS al C2 es una técnica anti-detección notable. No hay actividad bt.node.js observable en los registros de DNS públicos porque las consultas de extracción nunca afectan a los solucionadores de DNS públicos. Las organizaciones que dependen únicamente de los registros de DNS a través de solucionadores corporativos no verán este tráfico».
Esta no es la primera vez que los paquetes npm incluyen funciones maliciosas. En marzo de 2022, los mantenedores del paquete introdujeron intencionalmente una funcionalidad destructiva en las versiones 10.1.1 y 10.1.2 sobrescribiendo archivos en sistemas ubicados en Rusia o Bielorrusia como parte de una protesta contra 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 rusa».
«Este incidente parece estar relacionado con la reedición sospechosa o la reintroducción de código malicioso en una versión conocida del paquete, en lugar de un intento de typosquatting», dijo Socket.
Se recomienda a los usuarios eliminar las versiones IPC de los nodos comprometidos, reinstalar las versiones limpias conocidas (9.2.1 y 12.0.0), rotar las credenciales y los secretos que fueron comprometidos, auditar la actividad de publicación de npm para paquetes accesibles con tokens rotados, revisar los registros de ejecución del flujo de trabajo para detectar actividades sospechosas y verificar si las identidades de IAM cuyas credenciales estuvieron disponibles durante el período comprometido realizaron acciones no autorizadas. Le recomendamos que audite y revise sus registros y bloquee el tráfico saliente. Dominio C2.
Source link
