JA_NPM

Estudio de caso de inundaciones del MNP: “Por la madriguera del conejo en busca de un té”

At xygeni, hemos estado ocupados durante el año pasado implementando un sistema integral que monitorea los registros públicos de paquetes de código abierto en busca de actividades sospechosas o códigos inherentemente maliciosos.

Esta infraestructura nos permite analizar en tiempo real todos los paquetes publicados diariamente. Además, nos permite monitorear comportamientos anómalos de los usuarios.

Si bien es bien conocida la presencia de código malicioso en los registros de paquetes, existen otros comportamientos extraños o inusuales que pasan completamente desapercibidos para los usuarios habituales de estos registros. Incluso para aquellos de nosotros que los vigilamos de cerca, no es fácil encontrar una razón o explicación para tal comportamiento.

Lo que caracteriza al equipo de Xygeni es nuestra perseverancia ante un problema, por eso profundizamos en esto.

Todo empezó con un aumento en las estadísticas.

Como mencioné anteriormente, como parte de nuestra infraestructura, monitoreamos muchas métricas de actividad en registros públicos de paquetes de código abierto.

A finales de marzo, mi compañera de trabajo Carmen dio la voz de alarma. Empezamos a observar una desviación sustancial en el número de paquetes publicados en NPM. Después de una revisión inicial, descubrimos que esta desviación se debía principalmente a un número relativamente pequeño de usuarios cuya tasa de publicación de paquetes se había disparado repentinamente.

Esto nos impulsó a revisar nuestro proceso y sus datos asociados dentro de la plataforma. Afortunadamente, nuestra revisión determinó que los datos parecían ser correctos, ¡pero esto también fue algo desconcertante!

Tras una inspección más detallada, descubrimos que estos paquetes compartían varias características comunes:

  • Los editores eran usuarios de nueva creación, con no más de uno o dos meses de antigüedad como máximo.
  • Los paquetes tenían nombres aparentemente aleatorios, probablemente generados mediante el uso de un diccionario. Podemos encontrar nombres de paquetes que tienen nombres extraños como enorme_mite-sonrisa, erick-mangut94-sukiwir, exotic_reptile-appteadev or obvio_tuna-appteadev. Incluiremos un apéndice con algunos ejemplos de los activos que hemos encontrado.
  • El contenido de estos paquetes era muy similar, a menudo el mismo.

En este contexto, observamos que uno de los paquetes incluía un script en Python, posiblemente por accidente, que parece usarse para publicar los paquetes automáticamente.

npm

Desentrañando la red

La actividad de publicación de algunas de estas editoriales en el último mes se ha llevado a cabo según el siguiente cronograma:

 

ataque npm

Aquí están las estadísticas completas relacionadas con este evento que podemos compartir:

verificación de NPM

No surgió nada relevante de la revisión individual de algunos de los paquetes asociados con estos usuarios. Esto nos llevó a analizar el panorama general de todos ellos, buscando patrones que pudieran proporcionar pistas sobre este éxito.

Al fin y al cabo, tenemos un buen puñado de paquetes para analizar:

ataque npm 2

Estos son los puntos clave que podemos destacar del análisis:

  • Muchos de los paquetes de NPM están interrelacionados. Se hace referencia a algunos como dependencias de otros.
  • A pesar de ser paquetes extraños y probablemente nadie sepa de su existencia, algunos tienen muchas descargas semanales. Es difícil aceptar que un usuario normal quiera descargar paquetes como 0mc03esisd
  • Algunos tienen repositorios asociados. A veces, los propietarios de estos repositorios parecen ser cuentas ficticias, similares a las de npm.

Nota: Los usuarios cargan paquetes adicionales en oleadas, por lo que los datos proporcionados pueden variar ligeramente.

ataque npm 2

Este es un ejemplo de uno de los repositorios relacionados. Contiene el código de algunos de los paquetes publicados. También algunos otros archivos, como un té.yaml .

Conociendo al actor(es)

Es difícil determinar si se trata del trabajo de un solo autor o de varios colaboradores. Sin embargo, sí tenemos algunas evidencias que acotan el origen de esta actividad:

  • Idioma: Ciertos comentarios en el código están en indonesio.
ataque npm 3
  • Ubicación: Ciertos propietarios de los repositorios asociados indican su ubicación en Indonesia.
  • La ubicación que podemos identificar a través de los metadatos de actividad en GitHub también apunta a Indonesia.
NPM_JA

El te de las cinco

Dado que Indonesia era una colonia británica, aquí sería perfecto para tomar el té. Sin embargo, en este caso se trata de un tipo de té bastante especial.

Te acuerdas de la té.yaml archivos que vimos al principio? En ese momento no mostramos su contenido, pero se veía así:

ataque npm 4

Estos archivos parecen estar relacionados con el Protocolo del té. ¿Pero qué es exactamente? Alcanzamos https://tea.xyz/blog/250k-grant-for-open-source-developers, que habla del propósito:

Tea está revolucionando el mundo digital al abordar el problema de larga data de la compensación inadecuada para los desarrolladores de código abierto. Resolver este problema es más urgente que nunca, por lo que hemos decidido asignar 250 dólares en subvenciones antes del lanzamiento del protocolo. Esta etapa inicial tiene como objetivo apoyar a los mantenedores de proyectos de código abierto que tienen un impacto material en el ecosistema de software de código abierto y un teaRank superior a 30 por delante del Testnet incentivado del Protocolo del té”.

Según los documentos del protocolo del té: 

"Para que un proyecto se registre en el Protocolo del té, se requiere un archivo tea.yaml que sirve como constitución del proyecto para regular su número de contribuyentes y el número de votos necesarios para llevar a cabo determinadas acciones".

 

Después de acceder a la red de té, intentamos encontrar uno de los paquetes que sospechamos que está inflando su reputación. Lo encontramos:

Esto parece explicar lo que está sucediendo aquí: ciertos usuarios inflan sus proyectos de código abierto con una popularidad ficticia para secuestrar el teaRank y obtener los beneficios proporcionados por la asociación del té. Después de todo, el dinero es el motor más antiguo, junto con el sexo. 

Conclusión y reflexiones finales

Aunque no se ha encontrado evidencia de código malicioso en estos paquetes de NPM, y probablemente no tenían la intención de que nadie los usara, podrían violar varios Términos de servicio (TOS) de NPM, GitHub o la asociación de té. Sin embargo, esto queda fuera del alcance de nuestro trabajo (aunque ya han sido notificados y se tomarán las acciones que estimen oportunas). El uso abusivo de estas plataformas nos afectará a nosotros y a nuestras organizaciones de alguna manera.

Lo que está claro es que cualquier paquete de código abierto aparentemente inofensivo puede albergar comportamientos difíciles de entender sin información contextual completa.

Como desarrollador, me resulta difícil controlar manualmente todos los paquetes de código abierto utilizados en las aplicaciones que desarrollamos y mantenemos con un cierto nivel de seguridad. Sin la ayuda de una herramienta que automatice este control, la tarea podría consumir innumerables horas de nuestros equipos.

Siempre existe la opción de mirar para otro lado, confiando en que los ámbitos del código abierto son lugares seguros. Afortunadamente, creo que esta mentalidad no está muy extendida hoy en día; Este caso ha sido prácticamente inofensivo, pero recientemente hemos vivido un incidente mucho más grave con el Puerta trasera XZ, y no ha sido el único.

Si has leído hasta aquí, espero que hayas disfrutado de todos los entresijos de este curioso evento. No olvide dedicar unos minutos a revisar lo que Xygeni puede aportar a la seguridad de su organización.

Apéndice: Lista de activos relacionados para incluir en el artículo final

Usuarios más relevantes de NPM según la cantidad de paquetes publicados: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Una pequeña muestra de sus paquetes relacionados: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Algunos de los repositorios de GitHub relacionados que contienen archivos tea.yml:

sca-tools-software-herramientas-de-analisis-de-composicion
Priorice, solucione y proteja sus riesgos de software
Además, te ofrecemos una prueba gratuita de 7 días de nuestra Business Edition para que puedas explorar las funciones avanzadas de la plataforma SecurityScorecard.
No se requiere tarjeta de crédito

Asegure el desarrollo y entrega de software

con la suite de productos Xygeni