Un grupo de actores desconocidos ha sido descubierto propagando versiones troyanizadas de jQuery en npm, GitHub y jsDelivr en lo que parece ser un ataque a la cadena de suministro «complejo y persistente».
Phylum señaló en un análisis reciente que este ataque se destaca por la alta variabilidad en los paquetes. El atacante ocultó el malware en la función ‘end’ de jQuery, que es llamada por la función ‘fadeTo’ de sus utilidades de animación.
Se han vinculado hasta 68 paquetes con la campaña, publicados en el registro de npm desde el 26 de mayo hasta el 23 de junio de 2024, utilizando nombres como cdnjquery, footersicons, jquertyi, jqueryxxx, logoo y sytlesheets, entre otros.
Hay evidencia que sugiere que cada paquete falso fue ensamblado y publicado manualmente debido a diferencias en convenciones de nombres, la inclusión de archivos personales y el largo período durante el cual fueron subidos.
Esto difiere de otros métodos comunes, donde los atacantes tienden a seguir un patrón predefinido que subraya un elemento de automatización en la creación y publicación de los paquetes.
Los cambios maliciosos, según Phylum, han sido introducidos en una función llamada «end», permitiendo al actor de amenaza extraer datos de formularios del sitio web a una URL remota.
Además, se encontró el archivo jQuery troyanizado alojado en un repositorio de GitHub asociado con una cuenta llamada «indexsc«. También están presentes en el mismo repositorio archivos JavaScript que contienen un script que apunta a la versión modificada de la biblioteca.
Phylum señaló que jsDelivr construye automáticamente estos URLs de GitHub, probablemente como un intento del atacante para hacer que la fuente parezca más legítima o para pasar desapercibido a través de firewalls utilizando jsDelivr en lugar de cargar el código directamente desde GitHub.
En otro desarrollo, Datadog identificó una serie de paquetes en el repositorio del Índice de Paquetes de Python (PyPI) con la capacidad de descargar un binario de segunda etapa desde un servidor controlado por el atacante, dependiendo de la arquitectura de la CPU.
Vía The Hacker News