lunes, diciembre 1, 2025

Más de 67.000 paquetes npm falsos inundan el registro en un ataque de spam similar a un gusano

TecnologíaMás de 67.000 paquetes npm falsos inundan el registro en un ataque de spam similar a un gusano

Los investigadores de ciberseguridad están llamando la atención sobre una campaña de spam a gran escala que ha inundado el registro npm con miles de paquetes falsos desde principios de 2024 como parte de un esfuerzo probablemente motivado por motivos financieros.

«Los paquetes se publicaron sistemáticamente durante un período prolongado, inundando el registro 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 del martes.

La campaña coordinada ha publicado hasta ahora hasta 67.579 paquetes, según el investigador de seguridad de SourceCodeRED, Paul McCarty, quien fue el primero en señalar la actividad. El objetivo final es bastante inusual: está diseñado para inundar el registro 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 nombres y términos alimentarios indonesios para los paquetes recién creados le han dado el apodo. Gusano de los alimentos indonesios. 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. «Peor aún, estos actores de amenazas han estado organizando esto durante más de dos años».

Algunas 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 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 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 llegaría al extremo de ejecutar el archivo JavaScript manualmente, 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 a The Hacker News Henrik Plate, jefe de investigación de seguridad de Endor Labs.

«No hemos encontrado 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 con comodines, algo así como el nodo *.js que ejecuta todos los archivos JavaScript», agregó Raj.

«El diseño inactivo de la carga útil tiene como objetivo evadir la detección automatizada, al requerir la ejecución manual en lugar de ‘ejecución automática’, los atacantes reducen la posibilidad de ser detectados por escáneres de seguridad y 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 «private»: true> del archivo «package.json». Esta configuración se utiliza normalmente para evitar la publicación accidental de repositorios privados. Luego procede a crear 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 versión duplicada de npm.

En la etapa final, el paquete de spam se carga en npm usando el comando «npm Publish». Todo el proceso se repite en un bucle sin fin, lo que provoca que se expulse 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 Phylum (ahora parte de Veracode) y Sonatype en abril de 2024 y que implicó la publicació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’ revela que estos paquetes de spam no existen de forma aislada; se refieren entre sí como dependencias, creando una red autorreplicante».

Por lo tanto, cuando un usuario instala uno de los paquetes de spam, hace que npm busque todo el árbol de dependencias, lo que sobrecarga el ancho de banda del registro a medida que se recuperan más dependencias de manera exponencial.

Endor Labs dijo que algunos de los paquetes controlados por el atacante, como arts-dao y gula-dao, incluyen un archivo tea.yaml que enumera cinco cuentas TEA diferentes. El protocolo Tea 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 un vector de monetización al ganar tokens TEA al inflar artificialmente sus puntajes 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 ha señalado una segunda variante que emplea un esquema de nomenclatura de paquetes diferente que comprende palabras aleatorias en inglés (por ejemplo, able_crocodile-notthedevs).

JFrog, que sigue la campaña como Big Red, dijo que el malware reutiliza las credenciales npm almacenadas de un usuario víctima para publicar paquetes recién generados sin descanso en el repositorio.

«El código es una fábrica de paquetes npm simple pero efectiva», 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 un punto ciego de seguridad en los escáneres de seguridad, que son 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 había nada que encontrar en el momento de la instalación», dijo Endor Labs. «La gran cantidad de paquetes señalados en la campaña actual muestra que los escáneres de seguridad deben analizar estas señales en el futuro».

Garrett Calpouzos, investigador principal de seguridad de la firma de seguridad de la cadena de suministro de software Sonatype, caracterizó a IndonesianFoods como un gusano de autoedición que opera a escala masiva, abrumando 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; es la automatización y la escala las que están aumentando a un ritmo alarmante», dijo Calpouzos.

«Cada ola de estos ataques convierte la naturaleza abierta de npm en un arma de maneras ligeramente nuevas. Puede que éste no robe credenciales ni inyecte código, pero aún así ejerce presión sobre el ecosistema y demuestra lo trivial que es alterar 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 eliminó los paquetes en cuestión de npm y que está comprometida a detectar, analizar y eliminar paquetes y cuentas que vayan en contra de sus políticas.

«Hemos desactivado los paquetes npm maliciosos de acuerdo con las Políticas 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», agregó el portavoz.

«Empleamos revisiones manuales y detecciones a escala que utilizan 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 vinculados a la campaña

Amazon Web Services, en un informe publicado el jueves, dijo que su equipo de inspectores de Amazon 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 tiene su origen en una ola inicial que se detectó en abril de 2024.

«Este es uno de los incidentes de inundación de paquetes más grandes en la historia del registro de código abierto y representa un momento decisivo en 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, lo que revela cómo la campaña se ha expandido exponencialmente desde su identificación inicial».

Básicamente, la actividad implica activar un mecanismo de automatización autorreplicante que crea paquetes sin funcionalidad legítima y los publica en el registro npm y gana 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 el incidente, si bien no es de naturaleza abiertamente maliciosa, ilustra cómo los incentivos financieros pueden alimentar el abuso de un repositorio de paquetes y su infraestructura a escala, contaminando el ecosistema con paquetes no funcionales y de baja calidad que pueden socavar la confianza en la cadena de suministro de software.

«Incluso los paquetes que parecen benignos pueden agregar dependencias innecesarias, introduciendo potencialmente comportamientos inesperados o creando 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).

Artículos más populares