MALFEX: la campaña de malware en npm supera 40.000 descargas
Una campaña contra la cadena de suministro dirigida al registro npm lleva más de tres años activa y sus paquetes maliciosos se han descargado más de 40.000 veces, según Checkmarx.
Los investigadores han bautizado la campaña como MALFEX. A través de ella se han distribuido el troyano de acceso remoto (RAT) Overlord y malware de robo de información. El actor de la amenaza publicó su primer paquete en agosto de 2023.
Tres paquetes maliciosos siguen disponibles
El operador ha publicado 12 paquetes en npm, el principal registro de paquetes para desarrolladores de JavaScript y Node.js. Ocho de ellos son maliciosos. Cinco de estos ya se han retirado. A fecha de 1 de octubre, todavía se podían instalar tres: function-flag, function-color y cdn-img-fetch.
Checkmarx ha puesto el foco especialmente en function-flag. El paquete es malicioso desde julio de 2025 y acumula más de 37.000 descargas. A día de hoy, ningún aviso de seguridad lo señala como malicioso.
Otras partes de la campaña sí están documentadas. Open Source Vulnerabilities (OSV), una base de datos pública de avisos de seguridad para paquetes de código abierto, recoge entradas para seis de los paquetes maliciosos: tlxbnhd, tldriver, mxdriver, img-to-native, native-runner y cdn-img-fetch. Aun así, la entrada de cdn-img-fetch solo cubre dos de las cuatro versiones maliciosas de ese paquete.
Tres vías de distribución distintas
Checkmarx ha identificado tres formas independientes con las que la campaña distribuye malware. No comparten infraestructura, pero los investigadores las vinculan todas al mismo actor de la amenaza.
Cargadores del RAT Overlord. La primera vía utiliza scripts ofuscados que se ejecutan durante npm install, junto con cargadores del RAT Overlord. Los scripts pueden arrancar en Windows, macOS y Linux, pero la carga útil solo funciona en Windows.
Una vez instalado, Overlord da al operador amplias capacidades de vigilancia y control sobre el equipo infectado. Entre sus funciones están:
- capturas de pantalla
- registro de pulsaciones de teclado
- monitorización de ventanas
- acceso remoto a la línea de comandos
- búsqueda de archivos
- un escritorio oculto, que permite al atacante trabajar en el sistema sin ser detectado
El ladrón de información movinlike. En la segunda vía, el código malicioso se ejecuta al cargar el paquete y despliega un infostealer de Node.js llamado "movinlike". El malware roba datos de ocho clientes de Discord, siete navegadores populares y monederos de criptomonedas.
Descargadores de function-flag. La tercera vía es la que lleva más tiempo activa. Cada versión maliciosa de function-flag incluye su propio descargador, y cada uno obtiene la carga útil desde una ubicación diferente.
Checkmarx señala que la rutina de infección está escrita para que el paquete se instale igualmente aunque falle la descarga de la carga útil. En macOS y Linux, la rutina falla sin dar ningún aviso, lo que significa que solo se ven afectados los sistemas Windows.
Quién está expuesto
Los paquetes no están muy integrados en el ecosistema general. Según Checkmarx, solo están expuestos los sistemas que instalaron los paquetes maliciosos por su nombre, ya que ninguno de ellos es dependencia de un paquete legítimo.
"Ningún paquete legítimo o de uso extendido depende de ninguno de los paquetes del operador, así que la exposición se limita a los sistemas que instalaron directamente estos paquetes. No hemos encontrado ningún objetivo geográfico ni organizativo concreto; cualquiera que instale el ladrón de información se convierte en objetivo", explica Checkmarx.
Eso limita el alcance de la infección. Pero no hace que las cifras de descargas sean menos preocupantes, sobre todo en el caso de function-flag, que lleva meses disponible y sin ninguna alerta.
El contexto general
Lo más llamativo de MALFEX es cuánto tiempo ha durado. Está activa desde agosto de 2023, y un paquete con más de 37.000 descargas sigue publicado sin ningún aviso. Está claro que la retirada de paquetes y la publicación de avisos no han ido al ritmo del operador. La entrada incompleta de OSV para cdn-img-fetch apunta al mismo problema. Los equipos que se fían únicamente de los feeds de avisos pueden creer que están a salvo cuando no lo están.
Los fallos silenciosos, las cargas útiles alojadas en distintos sitios y la decisión de atacar solo Windows hacen que la campaña sea más difícil de detectar. Estos rasgos encajan con una tendencia más amplia de campañas de malware multiplataforma pensadas para pasar desapercibidas más que para propagarse rápido. El riesgo general para los repositorios de software también ha salido a la luz recientemente con la brecha en el Artifactory de OpenInfra Europe.
Los desarrolladores deberían revisar sus proyectos y sistemas de compilación en busca de los nombres de paquetes mencionados. Cualquier equipo Windows afectado debe darse por comprometido, y las credenciales, los datos del navegador y los monederos almacenados en él deben considerarse robados. También conviene estar atentos a la rapidez con la que npm retira los tres paquetes que quedan y a si llegan avisos para function-flag y function-color.
