El código abierto es una bendición para la industria de TI: ayuda a los programadores a ahorrar tiempo y crear productos de forma más rápida y eficiente al no ser necesario escribir código común repetitivo. Para facilitar este intercambio de conocimientos, existen repositorios, plataformas abiertas donde cualquier desarrollador puede publicar sus propios paquetes con su código para acelerar el proceso de desarrollo de otras personas.
Estos repositorios satisfacen innumerables necesidades de la comunidad de TI y son muy utilizados en el desarrollo de prácticamente cualquier software moderno: aplicaciones web, aplicaciones móviles, dispositivos inteligentes, robots, etc. Los paquetes más populares tienen millones de descargas semanales y forman la base de muchas aplicaciones, desde proyectos especiales a famosas startups tecnológicas.
Según algunas estimaciones, el 97 % del código de las aplicaciones web modernas proviene de módulos npm. Sin embargo, su popularidad y la libertad y facilidad de cargar cualquier paquete también atrae de forma inevitable a los ciberdelincuentes. Por ejemplo, en 2021, unos desconocidos atacantes comprometieron varias versiones de una popular biblioteca de JavaScript, UAParser.js, insertando código malicioso. Esta biblioteca se descargaba de 6 a 8 millones de veces por semana. Al infectarla, los ciberdelincuentes pudieron extraer criptomonedas y robar información confidencial, como las cookies del navegador, las contraseñas y credenciales de los sistemas operativos de los dispositivos infectados.
Y aquí va un ejemplo más reciente: el 26 de julio de 2022, nuestros investigadores descubrieron una nueva amenaza que apareció en el repositorio npm de código abierto a la que llamaron LofyLife.
Bueno, ¿y qué es LofyLife?
Nuestros investigadores identificaron la campaña maliciosa LofyLife usando un sistema automatizado interno para monitorizar repositorios de código abierto. La campaña usó cuatro paquetes maliciosos que difundieron el malware Volt Stealer y Lofy Stealer en el repositorio npm para recopilar información diversa de las víctimas (entre la que se incluyen los tokens de Discord y los datos de las tarjetas de crédito vinculadas) y espiarlas después.
Los paquetes maliciosos identificados parecían usarse para tareas ordinarias, como formatos de titulares o ciertas funciones de algunos juegos. Las descripciones de los paquetes estaban incompletas y, por lo general, parece que los atacantes no emplearon demasiado esfuerzo en ellos. Sin embargo, el paquete de “formato de titulares” estaba en portugués brasileño con el hashtag #brazil, lo que sugiere que el objetivo de los atacantes es atacar a los usuarios que se encuentran en Brasil. Se encontraron otros paquetes en inglés, por lo que también podrían estar dirigidos a usuarios de otros países.
Sin embargo, estos paquetes, contenían un confuso código malicioso en JavaScript y Python. Esto hizo que fueran más difíciles de analizar cuando se subían al repositorio. El cargamento malicioso estaba formado por un malware escrito en Python denominado Volt Stealer, un script malicioso de código abierto, y un malware de JavaScript denominado Lofy Stealer, que tiene numerosas características.
Volt Stealer se utilizó para robar tokens de Discord de los dispositivos infectados junto con las direcciones IP de las víctimas y cargarlos mediante HTTP. Lofy Stealer, una nueva creación de los atacantes, puede infectar los archivos del cliente de Discord y monitorizar las acciones de las víctimas, detectando cuándo un usuario inicia sesión, cambia el correo electrónico registrado o la contraseña, habilita o deshabilita la autenticación multifactor y cuándo introduce un nuevo método de pago (en cuyo caso roba los datos completos de la tarjeta de crédito). Y finalmente carga la información recopilada en el endpoint remoto.
Cómo protegerse de los paquetes maliciosos
Los repositorios de código abierto permiten que cualquier persona publique sus propios paquetes, pero no todos son completamente seguros. Por ejemplo, los atacantes pueden imitar los paquetes npm más populares cambiando una o dos letras del nombre para engañar a los usuarios haciéndoles creer que se están descargando el paquete original. Por lo tanto, recomendamos estar alerta y no dar por hecho que los paquetes son de confianza.
En general, los entornos de desarrollo o construcción son objetivos ideales para los atacantes que intentan organizar ataques a la cadena de suministro. Eso significa que dichos entornos deben contar con una fuerte protección antimalware como Kaspersky Hybrid Cloud Security. Nuestros productos detectan con éxito el ataque LofyLife con los fallos HEUR:Trojan.Script.Lofy.gen y Trojan.Python.Lofy.a.
Si quieres ser de los primeros en enterarte de las nuevas campañas maliciosas que se propagan a través del código abierto, suscríbete a las fuentes de información y los informes de inteligencia de amenazas, como los proporcionados a través de la plataforma Threat Intelligence Portal.