Los atacantes lograron interceptar la cuenta del mantenedor y publicar dos lanzamientos maliciosos del paquete NPM axios, que ofrece una implementación de cliente HTTP para navegadores y Node.js. El paquete axios cuenta con más de 100 millones de descargas por semana y es utilizado como dependencia por 174 mil otros paquetes. Los cambios maliciosos fueron integrados en los lanzamientos Axios 1.14.1 y 0.30.4 a través de una dependencia ficticia plain-crypto-js 4.2.1, que contenía código para descargar componentes que reciben comandos desde el servidor de control de los atacantes. Las versiones maliciosas se ofrecieron para descarga el 31 de marzo durante casi 3 horas — desde las 03:21 hasta las 6:15 (MSK).
Las versiones maliciosas fueron publicadas en NPM directamente utilizando las credenciales del mantenedor principal del proyecto axios (‘jasonsaayman’) eludiendo el mecanismo estándar de publicación de nuevos lanzamientos basado en GitHub Actions. Se presume que los atacantes lograron interceptar el token de acceso a NPM del mantenedor, después de lo cual accedieron a la cuenta y cambiaron la vinculación al correo electrónico. No se especifica cómo fue interceptado el token de acceso.
El código malicioso ejecutable estaba alojado en el paquete plain-crypto-js en el archivo setup.js, se activaba tras la instalación del paquete NPM a través del manejador postinstall (‘postinstall: «node setup.js»‘) y se utilizaba para descargar e instalar un troyano que afectaba sistemas Windows, macOS y Linux. Para ocultar su presencia, después de activarse, el componente malicioso eliminaba el archivo setup.js y reemplazaba package.json por una versión sin el gancho postinstall. 
En macOS, el archivo ejecutable malicioso se descargaba como ‘/Library/Caches/com.apple.act.mond’, en Windows como ‘%PROGRAMDATA%\wt.exe’, y en Linux como ‘/tmp/ld.py’. Tras ser activado en Linux y macOS, cada 60 segundos se enviaba una solicitud de comandos al servidor exterior de los atacantes para ejecutarse en el sistema afectado. servidor Los comandos enviados podían ser usados para descargar componentes maliciosos adicionales, ejecutar comandos shell arbitrarios y buscar/enviar ciertos archivos.
La actividad maliciosa en Linux y macOS no estaba diseñada para mantener una presencia después de un reinicio y se enfocaba en la rápida recolección de datos confidenciales, contraseñas, tokens y claves de acceso. En Windows, se creaba un archivo ‘%PROGRAMDATA%\system.bat’, que extraía el componente malicioso de los atacantes con cada inicio de sesión. servidores Los atacantes albergaban su presencia en el sistema con cada inicio de sesión.
Fuente: opennet.ru
