El código abierto es una bendición para la industria de TI: ayuda a que los programadores ahorren tiempo y puedan crear productos más rápida y eficientemente al no tener que escribir código común repetitivo. Para hacer más sencillo este intercambio de conocimientos, existen repositorios, plataformas abiertas donde cualquier desarrollador puede publicar sus paquetes con código propio para acelerar el proceso de desarrollo de otras personas.
Estos repositorios satisfacen muchísimas necesidades en la comunidad de TI y se utilizan bastante en el desarrollo de casi cualquier software moderno: aplicaciones web, aplicaciones móviles, dispositivos inteligentes, robots, etc. Los paquetes más populares tienen millones de descargas semanales y dan base a muchas aplicaciones, desde proyectos especiales hasta famosas startups tecnológicas.
De acuerdo con algunas estimaciones, el 97 % del código de las aplicaciones web modernas proviene de un módulo npm. No obstante, esta popularidad, así como la libertad y facilidad de cargar cualquier paquete también atrae, inevitablemente, a los ciberdelincuentes. Por ejemplo, en 2021, atacantes desconocidos comprometieron varias versiones de UAParser.js, una popular biblioteca de JavaScript, al insertar código malicioso. Esta biblioteca era descargada de 6 a 8 millones de veces a la semana. Al infectarla, los ciberdelincuentes pudieron extraer criptomonedas y robar información confidencial, como las cookies del navegador, las contraseñas y datos importantes de los sistemas operativos de los dispositivos infectados.
Ahora un ejemplo más reciente: el 26 de julio de 2022, nuestros investigadores descubrieron una amenaza nueva que apareció en el repositorio npm de código abierto, a la cual bautizaron LofyLife.
Bueno, ¿y qué es LofyLife?
Nuestros investigadores identificaron la campaña maliciosa LofyLife mediante 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 (tokens de Discord y datos de tarjetas de crédito vinculadas incluidos) y espiarlas más tarde.
Los paquetes maliciosos identificados parecían usarse para tareas cotidianas, como formatos de titulares o determinadas funciones en algunos juegos. Las descripciones de dichos paquetes estaban incompletas y, por lo general, parece que los atacantes no emplearon demasiado esfuerzo en ellas. No obstante, el paquete de “formato de titulares” estaba en portugués brasileño con el hashtag #brazil, lo cual sugiere que el objetivo de los atacantes es atacar a los usuarios ubicados en Brasil. Se encontraron otros paquetes en inglés, por lo que también podrían estar detrás de usuarios de otros países.
Sin embargo, estos paquetes, contenían un confuso código malicioso en JavaScript y Python. Esto hizo que al ser subidos al repositorio fueran más difíciles de analizar. El cargamento malicioso se conformaba por un malware escrito en Python denominado Volt Stealer, un script malicioso de código abierto, y un malware de JavaScript denominado Lofy Stealer, cuyas características son numerosas.
Se utilizó Volt Stealer para robar tokens de Discord de los dispositivos infectados junto con las direcciones IP de las víctimas y cargarlos mediante HTTP. Lofy Stealer, la más reciente creación de los atacantes, puede infectar archivos del cliente de Discord y monitorizar las acciones de las víctimas, detectando cuándo el usuario inicia sesión, cambia de correo electrónico registrado o de contraseña, habilita o deshabilita la autenticación multifactor y cuándo introduce un método de pago nuevo (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 necesariamente son del todo seguros. Por ejemplo, los atacantes pueden imitar los paquetes npm más populares al cambiar una o dos letras del nombre para engañar a los usuarios y hacerles creer que están descargando el paquete original. Por tanto, la recomendación es estar alerta y no dar por hecho que los paquetes son confiables.
Por lo general, los entornos de desarrollo o construcción son objetivos ideales para que los atacantes intenten organizar ataques a la cadena de suministro. Esto quiere decir que dichos entornos deben contar con una fuerte protección antimalware como Kaspersky Hybrid Cloud Security. Nuestros productos detectan exitosamente 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 campañas maliciosas más recientes que se propagan mediante 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.