Secuestran un paquete de npm para distribuir criptomineros

Un popular paquete de npm ha sido actualizado de forma no autorizada para incluir un criptominero así como malware de robo de credenciales.

El gestor de paquetes por defecto para el entorno de ejecución Node.js es npm, utilizado por más de 11 millones de desarrolladores de software y con más de 1,3 millones de paquetes publicados en el repositorio principal, llamado npm registry. Uno de los paquetes alojados en este repositorio es UA-parser.js, que permite identificar diversos parámetros que proceden del User-Agent del navegador. Cuenta con unas 8 millones de descargas semanales y numerosos proyectos dependen de él.

Recientemente un atacante secuestró la cuenta npm del desarrollador de esta librería para publicar actualizaciones que incluían malware para descargar y ejecutar un criptominero. El autor de la librería, Faisal Salman, comentó lo siguiente:

Creo que alguien ha secuestrado mi cuenta de npm y ha publicado algunos paquetes comprometidos (0.7.29, 0.8.0, 1.0.0) que probablemente incluyan malware como se puede ver desde este diff.

Metodología del ataque

Cuando la librería comprometida se instala en un dispositivo, un script llamado preinstall.js identificará el sistema operativo. En el caso de ser Linux, se comprobará si el dispositivo no se encuentra en Rusia, Ucrania, Bielorrusia y Kazajistán; tras lo que descargará y ejecutará jsextension -un minero de XMRig Monero– desde la dirección IP 159.148.186.228.

Por su parte, en dispositivos Windows se descargará el mismo minero y adicionalmente un fichero llamado sdd.dll Esta DLL incluye un troyano para robar credenciales almacenadas en el dispositivo, orientada por ejemplo a clientes FTPVNC, software de mensajería, clientes de correo electrónico y navegadores. Finalmente la DLL ejecutará un script de PowerShell para robar credenciales de Windows Credential Manager.

Mitigaciones y conclusiones

Se han publicado actualizaciones para ua-parser-js para eliminar el código malicioso.

Versión vulnerableVersión parcheada
0.7.290.7.30
0.8.00.8.1
1.0.01.0.1

Este incidente de seguridad ha sido considerado de severidad crítica por parte de GitHub, donde se le ha asignado el identificador GHSA-pjwm-rvh2-c87w. Los dispositivos con las versiones maliciosas de ua-parser-js se deben considerar totalmente comprometidos, y se recomienda encarecidamente rotar las credenciales almacenadas en los mismos.

Mantener una adecuada política de actualización de dependencias ayuda a evitar este tipo de ataques en la cadena de suministro. No es la primera vez que npm es utilizado para distribución de malware, poniendo en evidencia la tendencia de estos ataques dirigidos a desarrolladores que pueden tener consecuencias nefastas cuando se almacenan credenciales críticas en un dispositivo.