Unos atacantes desconocidos han comprometido varias versiones de una popular biblioteca JavaScript, UAParser.js, inyectándole código malicioso. De acuerdo con las estadísticas de la página del desarrollador, son muchos los proyectos que utilizan esta biblioteca que cuenta con entre 6 a 8 millones de descargas cada semana.
Los delincuentes han comprometido tres versiones de la biblioteca: 0.7.29, 0.8.0 y 1.0.0. Todos los usuarios y administradores deben actualizar las bibliotecas a las versiones 0.7.30, 0.8.1 y 1.0.1, respectivamente, lo antes posible.
¿Qué es UAParser.js y por qué es tan popular?
Los desarrolladores de JavaScript utilizan la biblioteca UAParser.js para analizar los datos Usuario-Agente que envían los navegadores. Está implementado en muchos sitios web y se utiliza en el proceso de desarrollo del software de varias empresas como Facebook, Apple, Amazon, Microsoft, Slack, IBM, HPE, Dell, Oracle o Mozilla, entre otras. Además, algunos desarrolladores de software utilizan instrumentos de terceros, como el marco Karma para pruebas de códigos, que también depende de esta biblioteca. Esto incrementa la escala del ataque, dado que añade un enlace adicional a la cadena de suministro.
La introducción de código malicioso
Los atacantes insertan scripts maliciosos en la biblioteca para descargar código malicioso y ejecutarlo en los ordenadores de las víctimas, tanto en Linux como en Windows. El propósito de uno de los módulos era minar criptomonedas. Otro (solo para Windows) podía robar información confidencial como cookies del navegador, contraseñas y credenciales del sistema operativo.
Sin embargo, eso podría no ser todo: De acuerdo con la advertencia de la Agencia de Protección de la Infraestructura y Ciberseguridad (CISA) de los Estados Unidos, instalar bibliotecas comprometidas podría dar pie a que los atacantes tomen el control de los sistemas infectados.
De acuerdo con los usuarios de GitHub, el malware crea archivos binarios: jsextension (en Linux) y jsextension.exe (en Windows). La presencia de estos archivos es un indicador claro de que el sistema está comprometido.
Cómo entró el código malicioso en la biblioteca UAParser.js
Faisal Salman, el desarrollador del proyecto UAParser.js, declaró que un atacante no identificado obtuvo acceso a su cuenta en el repositorio npm y publicó tres versiones maliciosas de la biblioteca UAParser.js. De inmediato, el desarrollador agregó una advertencia a los paquetes comprometidos y se puso en contacto con el soporte de npm, quienes rápidamente borraron las versiones peligrosas. Sin embargo, como estos paquetes estaban online, existía la posibilidad de que una buena cantidad de equipos ya los hubieran descargado.
Al parecer, estuvieron online durante poco más de cuatro horas, de las 14:15 a las 18:23 CET el 22 de octubre. Por la tarde, el desarrollador observó actividad inusual de spam en su bandeja de entrada (que dijo que era una alerta de actividad sospechosa) y descubrió el origen del problema. Es difícil saber cuántas veces se han descargado las bibliotecas infectadas durante este tiempo, pero en los tres días posteriores al incidente, las soluciones de seguridad de varias docenas de nuestros clientes corporativos de todo el mundo detectaron su código malicioso.
Qué debes hacer si has descargado bibliotecas infectadas
El primer paso es buscar malware en los ordenadores. Nuestros productos detectan con éxito todos los componentes del malware que se utiliza en el ataque.
Después, actualiza tus bibliotecas a las versiones reparadas: 0.7.30, 0.8.1 y 1.0.1. Sin embargo, esto no es suficiente: de acuerdo con la advertencia, cualquier ordenador en el que se haya instalado o ejecutado una versión infectada debe considerarse completamente comprometido. Por lo tanto, los usuarios y administradores deberán cambiar todas las credenciales que se hayan utilizado en estos equipos.
En general, los entornos de desarrollo o construcción son objetivos convenientes para los atacantes que intentan organizar ataques a la cadena de suministro. Esto significa que dichos entornos requieren una protección antimalware de forma urgente.