Los investigadores de ciberseguridad están llamando la atención sobre una campaña de spam a gran escala que ha inundado el registro de NPM con miles de paquetes falsos desde principios de 2024 en lo que probablemente sea una operación con motivación financiera.
“Los paquetes se lanzaron sistemáticamente durante un período prolongado de tiempo, inundando el registro de NPM con paquetes basura que sobrevivieron en el ecosistema durante casi dos años”, dijeron los investigadores de Endor Labs Cris Staicu y Kiran Raj en un informe el martes.
La campaña coordinada ha liberado hasta 67.579 paquetes hasta ahora, según el investigador de seguridad de SourceCodeRED, Paul McCarty, quien fue el primero en informar sobre la actividad. El objetivo final es bastante inusual: pretende inundar el registro npm con paquetes aleatorios, en lugar de centrarse en el robo de datos u otro comportamiento malicioso.
El mecanismo para propagar la vida de los gusanos y el uso de un esquema de denominación especial basado en nombres y términos alimentarios indonesios para los paquetes recién creados le valieron el apodo. Gusano alimentario indonesio. Los paquetes falsos se disfrazan de proyectos Next.js.
“Lo que hace que esta amenaza sea particularmente preocupante es que los atacantes se tomaron el tiempo para desarrollar un gusano NPM, en lugar de un solo ataque”, dijo McCarty. “Lo peor es que estos actores de amenazas han estado orquestando esto durante más de dos años”.
Las señales que apuntan a un esfuerzo sostenido y coordinado incluyen los patrones de nombres consistentes y el hecho de que los paquetes se publican desde una pequeña red de más de una docena de cuentas npm.
El gusano reside en un único archivo JavaScript (por ejemplo, auto.js o PublishScript.js) en cada paquete y permanece inactivo hasta que un usuario ejecuta manualmente el script usando un comando como node auto.js. En otras palabras, no se ejecuta automáticamente durante la instalación ni como parte de un enlace “postinstalación”.
No está claro por qué alguien iría tan lejos como para ejecutar manualmente el archivo JavaScript, pero la existencia de más de 43.000 paquetes sugiere que varias víctimas ejecutaron el script, ya sea por error o por curiosidad, o que los atacantes lo ejecutaron ellos mismos para inundar el registro, dijo a The Hacker News Henrik Plate, jefe de investigación de seguridad de Endor Labs.

“No encontramos evidencia de una campaña coordinada de ingeniería social, pero el código fue escrito con potencial de ingeniería social. Los posibles escenarios de víctimas incluyen: publicaciones de blog falsas, tutoriales o entradas README que instruyen a los usuarios a ejecutar node auto.js para completar la configuración o solucionar un problema de compilación, (y) scripts de compilación de canalización CI/CD comodín, como Node *.js, todos los cuales ejecutan archivos JavaScript”, agregó Raj.
“El diseño inactivo de la carga útil tiene como objetivo evadir la detección automática al requerir una ejecución manual en lugar de una 'ejecución automática'. Esto reduce las posibilidades de que los atacantes sean detectados por escáneres de seguridad y sistemas sandbox”.
La ejecución manual hace que el script inicie una serie de acciones en un bucle infinito, incluida la eliminación <"private": true> del archivo package.json. Esta configuración se utiliza normalmente para evitar la publicación accidental de repositorios privados. Luego crea un nombre de paquete aleatorio usando el diccionario interno y le asigna un número de versión aleatorio para evitar la detección de versiones duplicadas de npm.
El último paso es cargar el paquete de spam en npm usando el comando “npm Publish”. Todo el proceso se repite en un bucle sin fin, de modo que se envía un nuevo paquete cada 7 a 10 segundos. Esto equivale a unos 12 paquetes por minuto, 720 por hora o 17.000 por día.
“Esto inunda el registro de NPM con paquetes basura, desperdicia recursos de infraestructura, contamina los resultados de búsqueda y crea riesgos en la cadena de suministro cuando los desarrolladores instalan accidentalmente estos paquetes maliciosos”, dijo McCarty.
Según Endor Labs, la campaña es parte de un ataque documentado por primera vez en abril de 2024 por Phylum (ahora parte de Veracode) y Sonatype, que implicó la liberación de miles de paquetes de spam para llevar a cabo una “campaña masiva de criptocultivo automatizado” abusando del protocolo Tea.
“Lo que hace que esta campaña sea particularmente insidiosa es su mecanismo de propagación similar a un gusano”, dijeron los investigadores. “El análisis de los archivos 'package.json' muestra que estos paquetes de spam no existen de forma aislada; se refieren entre sí como dependencias, creando una red autorreplicante”.
Cuando un usuario instala uno de los paquetes de spam, esto hace que npm busque todo el árbol de dependencias, lo que ejerce presión sobre el ancho de banda del registro a medida que se recuperan exponencialmente más dependencias.
Según Endor Labs, algunos de los paquetes controlados por el atacante, como arts-dao y gula-dao, contienen un archivo tea.yaml que enumera cinco cuentas TEA diferentes. El Tea Protocol es un marco descentralizado que permite a los desarrolladores de código abierto ser recompensados por sus contribuciones de software.
Esto probablemente indica que los actores de amenazas están utilizando esta campaña como vector de monetización, ganando tokens TEA al aumentar artificialmente sus valores de impacto. No está claro quién está detrás de la actividad, pero el código fuente y las pistas de infraestructura sugieren que podría ser alguien que opera desde Indonesia.
La empresa de seguridad de aplicaciones también informó sobre una segunda variante que utiliza un esquema de nomenclatura de paquetes diferente con palabras aleatorias en inglés (por ejemplo, able_crocodile-notthedevs).
JFrog, que rastrea la campaña como Big Red, dijo que el malware reutiliza las credenciales NPM guardadas de un usuario víctima para publicar continuamente paquetes recién generados en el repositorio.
“El código es una fábrica de paquetes NPM simple pero eficaz”, dijo el investigador de JFrog Andrii Polkovnychenko. “El resultado es un bucle cerrado y totalmente automatizado que puede inundar el ecosistema NPM con una gran cantidad de paquetes superficialmente legítimos, todos derivados de la misma plantilla de código y diferenciados sólo por metadatos aleatorios”.
Los hallazgos también sirven para resaltar una vulnerabilidad en los escáneres de seguridad conocidos por marcar paquetes que ejecutan código malicioso durante la instalación al monitorear los enlaces del ciclo de vida o detectar llamadas sospechosas al sistema.
“En este caso, no encontraron nada porque no se encontró nada en el momento de la instalación”, dijo Endor Labs. “La gran cantidad de paquetes reportados en la campaña actual muestra que los escáneres de seguridad necesitarán analizar estas señales en el futuro”.

Garrett Calpouzos, investigador principal de seguridad de la empresa de seguridad de la cadena de suministro de software Sonatype, caracterizó a IndonesianFoods como un gusano de autoedición que opera a escala y abruma los sistemas de datos de seguridad.
“La sofisticación técnica no es necesariamente mayor; curiosamente, estos paquetes ni siquiera parecen estar intentando infiltrarse en las máquinas de los desarrolladores; es la automatización y la escala lo que está aumentando a un ritmo alarmante”, dijo Calpouzos.
“Cada ola de estos ataques convierte la apertura de npm en un arma de formas ligeramente nuevas. Si bien este ataque no roba credenciales ni inyecta código, todavía ejerce presión sobre el ecosistema y demuestra lo trivial que es interrumpir la cadena de suministro de software más grande del mundo. Si bien la motivación no está clara, el impacto es sorprendente”.
Cuando se contactó con él para hacer comentarios, un portavoz de GitHub dijo que la compañía eliminó los paquetes en cuestión de npm y está comprometida a detectar, analizar y eliminar paquetes y cuentas que violen sus políticas.
“Hemos desactivado los paquetes NPM maliciosos de acuerdo con las pautas de uso aceptable de GitHub, que prohíben publicar contenido que respalde directamente ataques activos ilegales o campañas de malware que causen daños técnicos”, añadió el portavoz.
“Utilizamos revisiones manuales y detecciones a gran escala que aprovechan el aprendizaje automático y evolucionan constantemente para mitigar el uso malicioso de la plataforma. También alentamos a los clientes y miembros de la comunidad a denunciar abusos y spam”.
Más de 150.000 paquetes de spam relacionados con la campaña
Amazon Web Services dijo en un informe publicado el jueves que su equipo de Amazon Inspector identificó e informó más de 150.000 paquetes vinculados a una campaña coordinada de cultivo de tokens TEA en el registro NPM que se originó en una primera ola descubierta en abril de 2024.
“Esta es una de las mayores inundaciones de paquetes en la historia de los registros de código abierto y representa un momento crucial para la seguridad de la cadena de suministro”, dijeron los investigadores Chi Tran y Charlie Bacon. “Los actores de amenazas generan y publican automáticamente paquetes para ganar recompensas en criptomonedas sin que el usuario se dé cuenta. Esto muestra cómo la campaña se ha expandido exponencialmente desde que se identificó por primera vez”.
La actividad consiste esencialmente en activar un mecanismo de automatización autorreplicante que crea paquetes sin funcionalidad legítima y los publica en el registro npm, ganando tokens TEA al inflar artificialmente las métricas de los paquetes a través de replicación automatizada y cadenas de dependencia.
El gigante tecnológico dijo que si bien el incidente no fue de naturaleza abiertamente maliciosa, pone de relieve cómo los incentivos financieros pueden fomentar el abuso a gran escala de un repositorio de paquetes y su infraestructura y contaminar el ecosistema con paquetes de baja calidad y que no funcionan, lo que puede socavar la confianza en la cadena de suministro de software.
“Incluso los paquetes que parecen inofensivos pueden agregar dependencias innecesarias, lo que podría provocar comportamientos inesperados o causar confusión en la resolución de dependencias”, agregaron los investigadores.
(La historia se actualizó después de la publicación para incluir información de Amazon).