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 como parte de un esfuerzo que probablemente tenga una motivación financiera.
«Los paquetes se publicaron de forma sistemática durante un período prolongado, lo que inundó el registro de npm con paquetes basura que sobrevivieron en el ecosistema durante casi dos años», dijeron Cris Staicu y Kiran Raj, investigadores de Endor Labs. dijo en un informe del martes.
La campaña coordinada ha publicado hasta ahora tantos como 67.579 paquetes , según el investigador de seguridad de SourceCodered, Paul McCarty, quien marcado por primera vez la actividad. El objetivo final es bastante inusual: está diseñado para inundar el registro de npm con paquetes aleatorios en lugar de centrarse en el robo de datos u otros comportamientos maliciosos.
El mecanismo de propagación de la vida de los gusanos y el uso de un esquema de nomenclatura distintivo que se basa en los nombres y términos alimentarios indonesios para los paquetes recién creados le han dado el apodo Gusano alimentario indonesio . Los paquetes falsos se hacen pasar por proyectos de Next.js.
«Lo que hace que esta amenaza sea particularmente preocupante es que los atacantes se tomaron el tiempo para crear un gusano NPM, en lugar de un ataque singular», dijo McCarty. «Y lo que es peor, estos actores de amenazas llevan más de dos años organizando este tipo de ataques».
Algunas señales que apuntan a un esfuerzo sostenido y coordinado incluyen los patrones de nomenclatura consistentes y el hecho de que los paquetes se publican desde una pequeña red de más de una docena de cuentas de npm.
El gusano se encuentra dentro de un único archivo JavaScript (por ejemplo, "auto.js" o "publishScript.js «) en cada paquete y permanece inactivo hasta que un usuario ejecute manualmente el script mediante un comando como «node auto.js». En otras palabras, no se ejecuta automáticamente durante la instalación ni como parte de un enlace «posterior a la instalación».
No está claro por qué alguien se atrevería a ejecutar el archivo JavaScript de forma manual, pero la existencia de más de 43.000 paquetes sugiere que varias víctimas ejecutaron el script (ya sea por accidente o por curiosidad) o que los atacantes lo ejecutaron ellos mismos para inundar el registro, dijo Henrik Plate, jefe de investigación de seguridad de Endor Labs, a The Hacker News.
«No hemos encontrado pruebas de una campaña coordinada de ingeniería social, pero el código se escribió con potencial de ingeniería social. Las posibles víctimas incluyen: publicaciones de blog falsas, tutoriales o entradas README que indican a los usuarios que ejecuten 'node auto.js' para 'completar la configuración' o 'solucionar un problema de compilación', [y] scripts de creación de canalizaciones de CI/CD con comodines, como node *.js, que ejecutan todos los archivos de JavaScript», añadió Raj.
«El diseño inactivo de la carga útil tiene como objetivo evadir la detección automática, al requerir la ejecución manual en lugar de la «ejecución automática», lo que reduce la posibilidad de que los atacantes sean señalados por los escáneres de seguridad y los sistemas de espacio aislado».
La ejecución manual hace que el script inicie una serie de acciones en un bucle infinito , incluida la eliminación de < «privado»: verdadero > del archivo «package.json». Esta configuración se usa normalmente para evitar la publicación accidental de repositorios privados. Luego, crea un nombre de paquete aleatorio utilizando el diccionario interno y le asigna un número de versión aleatorio para evitar la detección de versiones duplicadas por parte de npm.
En la etapa final, el paquete de spam se carga en npm mediante el comando «npm publish». Todo el proceso se repite en un bucle sin fin, lo que hace que se publique un nuevo paquete cada 7 a 10 segundos. Esto se traduce en 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 si los desarrolladores instalan accidentalmente estos paquetes maliciosos», dijo McCarty.
Según Endor Labs, la campaña es parte de un ataque que fue documentado por primera vez por Filo (ahora parte de Veracode) y Tipo de sonda en abril de 2024, que implicó la publicación de miles de paquetes de spam para llevar a cabo una «campaña masiva y automatizada de criptocultivo» mediante el abuso del Protocolo de té .
«Lo que hace que esta campaña sea particularmente insidiosa es su mecanismo de propagación parecido a un gusano», dijeron los investigadores. «El análisis de los archivos 'package.json' revela que estos paquetes de spam no existen de forma aislada; hacen referencia unos a otros como dependencias, lo que crea una red que se autorreplica».
Por lo tanto, cuando un usuario instala uno de los paquetes de spam, hace que npm recupere todo el árbol de dependencias, lo que agota el ancho de banda del registro a medida que se obtienen más dependencias de forma exponencial.
Endor Labs dijo que algunos de los paquetes controlados por los atacantes, como arts-dao y gula-dao, incluyen un archivo tea.yaml con cinco cuentas TEA diferentes. El protocolo Tea es un marco descentralizado que permite a los desarrolladores de código abierto ser premió por sus contribuciones de software.
Es probable que esto indique que los actores de amenazas están utilizando esta campaña como un vector de monetización al obtener fichas TEA al inflar artificialmente sus puntuaciones de impacto. No está claro quién está detrás de la actividad, pero las pistas sobre el código fuente y la infraestructura sugieren que podría tratarse de alguien que opere en Indonesia.
La empresa de seguridad de aplicaciones también ha marcado una segunda variante que emplea un esquema de nomenclatura de paquetes diferente que comprende palabras aleatorias en inglés (por ejemplo, able_crocodile-notthedevs).
Los hallazgos también sirven para poner de relieve un punto ciego de seguridad en los escáneres de seguridad, que son conocidos por marcar los paquetes que ejecutan código malicioso durante la instalación mediante la supervisión de los enlaces del ciclo de vida o la detección de llamadas sospechosas al sistema.
«En este caso, no encontraron nada porque no había nada que encontrar en el momento de la instalación», dijo Endor Labs. «La gran cantidad de paquetes detectados en la campaña actual demuestra que los escáneres de seguridad deberá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, describió a IndonesianFoods como un gusano que se autopublica y opera a gran escala, lo que abruma los sistemas de datos de seguridad en el proceso.
«La sofisticación técnica no es necesariamente mayor (curiosamente, estos paquetes ni siquiera parecen intentar infiltrarse en las máquinas de los desarrolladores), sino que la automatización y la escala están aumentando a un ritmo alarmante», afirma Calpouzos.
«Cada oleada de estos ataques convierte en arma la naturaleza abierta de NPM de formas ligeramente nuevas. Puede que este ataque no robe credenciales ni inyecte código, pero aun así pone a prueba 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, las implicaciones son sorprendentes».
Cuando se le contactó para hacer comentarios, un portavoz de GitHub dijo que la compañía había eliminado los paquetes en cuestión de npm y que se había comprometido a detectar, analizar y eliminar los paquetes y cuentas que vayan en contra de sus políticas.
«Hemos desactivado los paquetes npm maliciosos de acuerdo con Políticas de uso aceptable de GitHub que prohíben publicar contenido que respalde directamente campañas ilegales de ataque activo o malware que estén causando daños técnicos», agregó el portavoz.
«Empleamos revisiones manuales y detecciones a escala que utilizan el aprendizaje automático y evolucionan constantemente para mitigar el uso malintencionado de la plataforma. También alentamos a los clientes y miembros de la comunidad a denunciar el abuso y el spam».