Paquetes npm maliciosos distribuyen el RAT Overlord y robadores de información mediante hooks ocultos
Ocho paquetes npm maliciosos en la campaña MALFEX han sido descargados más de 40.000 veces, entregando troyanos de acceso remoto y robadores de información a sistemas Windows.
Traducido automáticamente del original en inglés.
Investigadores de ciberseguridad de CloudSEK y Checkmarx han expuesto un ataque persistente a la cadena de suministro dirigido al registro de npm. Denominada MALFEX, esta campaña involucra a un único actor de amenazas que ha publicado múltiples paquetes maliciosos desde agosto de 2023. La operación tiene como objetivo infectar hosts Windows con troyanos de acceso remoto y robadores de datos a través de bibliotecas de código abierto engañosas.
Qué ocurrió
La investigación identificó ocho paquetes maliciosos entre los doce publicados por el actor. Estos paquetes han sido descargados colectivamente 40.767 veces. El contribuyente más significativo a este volumen es un paquete llamado "function-flag", que representa 37.419 de esas descargas. Publicado por primera vez en julio de 2024, su última versión se lanzó el 4 de agosto de 2025. La descripción del proyecto de este paquete incluye un mensaje en portugués que afirma que fue creado con amor por el "equipo Malfex".
El código malicioso opera a través de tres vías de infección distintas. La primera implica paquetes cargadores que despliegan Overlord, un troyano de acceso remoto de código abierto escrito en Go. La segunda vía instala un robador de Node.js llamado movinlike, que apunta a datos sensibles de Discord, navegadores web, Telegram y billeteras de criptomonedas. La tercera vía actúa como un simple descargador para recuperar cargas útiles adicionales desde servidores remotos.
Los investigadores señalaron que el operador parece ser hablante de portugués, con commits de git marcados con la zona horaria -0300 y detalles de GitHub que apuntan a un usuario brasileño. Sin embargo, los analistas enfatizan que esta huella lingüística no significa que Brasil sea el objetivo principal. El mecanismo de entrega a través de npm y Discord es global, y el posterior targeting de las víctimas parece ser oportunista en lugar de geográficamente específico.
Cómo funciona
El ataque depende en gran medida de los hooks del ciclo de vida de npm, específicamente los scripts postinstall, para ejecutar código malicioso automáticamente cuando un desarrollador instala el paquete. Por ejemplo, el paquete "function-flag" contiene un hook postinstall que ejecuta una carga útil JavaScript. Este script descarga cargas útiles adicionales desde diversas ubicaciones remotas dependiendo de la versión del paquete. Otro paquete, "function-color", no contiene malware en sí mismo, pero lista "function-flag" como una dependencia, lo que desencadena indirectamente el proceso de instalación malicioso.
En el caso de los cargadores del RAT Overlord, como "tlxbnhd", "tldriver" y "mxdriver", el código malicioso se activa mediante hooks del ciclo de vida para descargar y ejecutar un ejecutable de Windows. Overlord utiliza transacciones de la blockchain Solana para extraer su dirección de comando y control (C2), dificultando la detección. Otro subconjunto de paquetes, incluyendo "img-to-native", requiere "cdn-img-fetch" para recuperar un ejecutable de Go. Este ejecutable luego obtiene el robador de Node.js capaz de cosechar credenciales y datos de billeteras.
Checkmarx destacó una técnica específica en la versión 1.7.3 de "function-flag". El script postinstall ejecuta un archivo llamado example.js, que llama a una función de arte ASCII utilizando un valor de fuente llamado "Bloody". Este valor de fuente específico activa una rutina oculta que descarga node.exe desde un servicio de hosting brasileño, lo guarda en la carpeta AppData del usuario y lo ejecuta con la ventana oculta para evitar la detección.
Detalles clave
- Se han identificado ocho paquetes npm maliciosos, de los cuales tres siguen activos en el registro: "function-flag", "function-color" y "cdn-img-fetch".
- La campaña ha generado un total de 40.767 descargas, siendo "function-flag" responsable de la gran mayoría con 37.419 descargas.
- El malware entrega el RAT Overlord, que utiliza transacciones de Solana para la comunicación de comando y control, y el robador movinlike.
- Los vectores de infección incluyen hooks del ciclo de vida de npm, cadenas de dependencias y rutinas ocultas activadas por argumentos de función específicos, como nombres de fuentes.
- El actor de amenazas muestra vínculos lingüísticos con Brasil, pero apunta a víctimas globalmente mediante la infección oportunista de sistemas Windows.
- También se ha observado el RAT Overlord en campañas separadas que explotan vulnerabilidades de WordPress y distribuyen instaladores falsos de Zoom para macOS.
Por qué importa
Esta campaña destaca el riesgo continuo de ataques a la cadena de suministro en ecosistemas de código abierto. Los desarrolladores a menudo confían implícitamente en los paquetes de npm, asumiendo que las bibliotecas revisadas por la comunidad son seguras. Sin embargo, el uso de hooks del ciclo de vida permite a los atacantes ejecutar código durante la instalación, evadiendo herramientas de análisis estático que solo escanean el repositorio de código fuente. El alto número de descargas de "function-flag" sugiere que muchos desarrolladores pueden haber comprometido inadvertidamente sus entornos de desarrollo o sistemas de producción.
Para los equipos de ingeniería, las implicaciones van más allá de la eliminación inmediata del malware. El uso de descripciones de proyectos que parecen legítimas y la naturaleza modular del ataque, donde un paquete depende de otro para activar el malware, dificultan la detección. Las herramientas de seguridad ahora deben examinar más profundamente los árboles de dependencias y los comportamientos en tiempo de ejecución durante la instalación, no solo el código almacenado en el control de versiones. La superposición con otros clusters de amenazas, como UNK_DeadDrop, también sugiere que estas tácticas están siendo compartidas o adoptadas por diferentes grupos, aumentando el panorama general de amenazas.
Qué puedes hacer
- Audita inmediatamente las dependencias de tu proyecto para asegurarte de que ninguno de los paquetes maliciosos identificados esté presente en tus archivos lock.
- Configura tu gestor de paquetes para restringir o alertar sobre la ejecución de scripts postinstall y preinstall durante la instalación de paquetes.
- Implementa herramientas de análisis de composición de software que puedan detectar paquetes maliciosos conocidos y patrones de comportamiento sospechosos en las dependencias.
- Monitoriza el tráfico de red desde tus sistemas para detectar conexiones a servicios desconocidos o sospechosos.
- Educa a tu equipo sobre los riesgos de instalar paquetes sin verificar su origen y reputación.



