Axios: ataque a la cadena de suministro por cuenta de NPM comprometida ~ Segu-Info

El popular cliente HTTP conocido como Axios sufrió un ataque a la cadena de suministro después de que dos versiones recientemente publicadas del paquete NPM introdujeran una dependencia maliciosa que instala un troyano capaz de atacar sistemas Windows, macOS y Linux.

Con más de 83 millones de descargas semanales, Axios es uno de los clientes HTTP más utilizados en el ecosistema JavaScript en frameworks de frontend, servicios backend y aplicaciones empresariales.

Se ha descubierto que las versiones 1.14.1 y 0.30.4 de Axios inyectan la versión 4.2.1 de «plain-crypto-js« como una dependencia falsa. El axios real tiene sólo tres dependencias (follow-redirects, form-data, proxy-from-env). La adición de plain-crypto-js es una manipulación inequívoca.

Según StepSecurity, las dos versiones se publicaron utilizando las credenciales NPM comprometidas del mantenedor principal de Axios («jasonsaayman»), lo que permitió a los atacantes eludir la canalización CI/CD de GitHub Actions del proyecto.

«Su único propósito es ejecutar un script posterior a la instalación que actúa como un troyano de acceso remoto multiplataforma (RAT), dirigido a macOS, Windows y Linux», dijo el investigador de seguridad Ashish Kurmi. «El dropper contacta con un servidor de comando y control en vivo y entrega cargas útiles de segunda etapa específicas de la plataforma. Después de la ejecución, el malware se elimina y reemplaza su propio package.json con una versión limpia para evadir la detección forense».

Los usuarios que tengan instaladas las versiones 1.14.1 o 0.30.4 de Axios deben rotar sus secretos y credenciales con efecto inmediato y bajar a una versión segura (1.14.0 o 0.30.3). Las versiones maliciosas, así como «plain-crypto-js», ya no están disponibles para descargar desde NPM.

«Esto no fue oportunista», añadió Kurmi. «La dependencia maliciosa se organizó con 18 horas de anticipación. Se preconstruyeron tres cargas útiles separadas para tres sistemas operativos. Ambas ramas de lanzamiento fueron atacadas en 39 minutos. Cada rastro fue diseñado para autodestruirse».

Según StepSecurity, se dice que el actor de amenazas detrás de la campaña comprometió la cuenta NPM de «jasonsaayman» y cambió su dirección de correo electrónico registrada a una dirección de Proton Mail bajo su control («[email protected]«). El «plain-crypto-js» fue publicado por un usuario de NPM llamado «nrwise» con la dirección de correo electrónico «[email protected]«.

Se cree que el atacante obtuvo un token de acceso NPM clásico de larga duración para que la cuenta tomara el control y publicara directamente versiones envenenadas de Axios en el registro.

El malware incrustado, por su parte, se lanza a través de un dropper ofuscado de Node.js («setup.js») y está diseñado para ramificarse en una de las tres rutas de ataque basadas en el sistema operativo:

  • En macOS, ejecuta una carga útil AppleScript para recuperar un binario troyano de un servidor externo («sfrclak[.].com:8000»), guardarlo como «/Library/Caches/com.apple.act.mond», cambiar sus permisos para hacerlo ejecutable y ejecutarlo en segundo plano a través de /bin/zsh. El archivo AppleScript se elimina después de la ejecución para cubrir las pistas.
  • En Windows, localiza la ruta binaria de PowerShell, la copia en «%PROGRAMDATA%\wt.exe» (disfrazándola de la aplicación Terminal de Windows), escribe un script de Visual Basic en el directorio temporal y lo ejecuta. VBScript se pone en contacto con el mismo servidor para buscar un script PowerShell RAT y ejecutarlo. Luego se elimina el archivo descargado.
  • En otras plataformas (por ejemplo, Linux), el dropper ejecuta un comando de shell a través de execSync de Node.js para recuperar un script Python RAT del mismo servidor, guardarlo en «/tmp/ld.py» y ejecutarlo en segundo plano usando el comando nohup.

«Cada plataforma envía un cuerpo POST distinto a la misma URL. Esto permite que el servidor C2 proporcione una carga útil apropiada para la plataforma en respuesta a un único punto final».

El binario de segunda etapa descargado para macOS es un RAT C++ que toma huellas digitales del sistema y envía señales a un servidor remoto cada 60 segundos para recuperar comandos para su posterior ejecución. Admite capacidades para ejecutar cargas útiles adicionales, ejecutar comandos de shell, enumerar el sistema de archivos y finalizar la RAT.

El análisis de SafeDep del RAT de Linux ha revelado que admite los mismos comandos que su homólogo de macOS. La ausencia de un mecanismo de persistencia significa que el malware no sobrevive tras los reinicios. Esto indica que el ataque está orientado a una rápida filtración de datos o aprovecha la capacidad del RAT para ejecutar binarios y comandos de shell para implementar persistencia.

«El ataque se destaca por su moderación. No se modificó ningún archivo fuente de Axios, lo que hace que sea menos probable que la revisión del código tradicional basada en diferencias lo detecte», dijo SafeDep. «El comportamiento malicioso vive completamente en una dependencia transitiva, activada automáticamente por el ciclo de vida posterior a la instalación de npm».

El PowerShell RAT dirigido a Windows no es diferente en el sentido de que también facilita la misma funcionalidad para ejecutar archivos DLL arbitrarios en la memoria, ejecutar comandos de PowerShell, enumerar directorios con metadatos de archivos y suprimirse elegantemente. A diferencia de las variantes de macOS y Linux, RAT crea «%PROGRAMDATA%\system.bat» con una base de descarga que recupera el malware del servidor en cada inicio de sesión y agrega una clave de ejecución del registro que apunta al script por lotes.

«En cada host comprometido, el RAT realizó un reconocimiento inmediato del sistema: enumeró directorios de usuarios, raíces de unidades del sistema de archivos y procesos en ejecución, y transmitió estos datos al C2», dijo el investigador de Huntress, John Hammond. «El RAT mantuvo un bucle de baliza de 60 segundos, lista para aceptar más comandos, incluida la ejecución de scripts arbitrarios y la inyección binaria en memoria».

Como señaló Elastic Security Labs, el ataque utiliza tres implementaciones paralelas del mismo RAT (PowerShell para Windows, C++ compilado para macOS, Python para Linux) que comparten un protocolo C2, un conjunto de comandos, un formato de mensaje y un comportamiento operativo idénticos. «La coherencia indica claramente que un único desarrollador o un equipo estrechamente coordinado trabaja a partir de un documento de diseño compartido», dijo la compañía.

Una vez que se inicia la carga útil principal, el malware Node.js también toma medidas para realizar tres pasos de limpieza forense: eliminando el script postinstalación del directorio del paquete instalado, eliminando el «package.json».

«Ninguna versión maliciosa contiene una sola línea de código malicioso dentro del propio Axios», dijo StepSecurity. «En cambio, ambos inyectan una dependencia falsa, [email protected], un paquete que nunca se importa a ninguna parte del código fuente de Axios, cuyo único propósito es ejecutar un script posterior a la instalación que implementa un troyano de acceso remoto multiplataforma (RAT)».

Actualmente no se sabe quién está detrás del compromiso de la cadena de suministro, pero Elastic dijo que el binario macOS Mach-O entregado por el gancho postinstalación «plain-crypto-js» muestra una superposición significativa con WAVESHAPER, una puerta trasera de C++ rastreada por Mandiant, propiedad de Google, el mes pasado y atribuida a un actor de amenazas norcoreano conocido como UNC1069.

Se recomienda a los usuarios que realicen las siguientes acciones para determinar el compromiso:

  • Busque las versiones maliciosas de Axios.
  • Compruebe si hay artefactos RAT: «/Library/Caches/com.apple.act.mond» (macOS), «%PROGRAMDATA%\wt.exe» (Windows) y «/tmp/ld.py» (Linux).
  • Cambie a las versiones 1.14.0 o 0.30.3 de Axios.
  • Elimine «plain-crypto-js» del directorio «node_modules».
  • Si se detectan artefactos RAT, asuma un compromiso y rote todas las credenciales en el sistema.
  • Audite las canalizaciones de CI/CD en busca de ejecuciones que instalaron las versiones afectadas.
  • Bloquear el tráfico de salida al dominio de comando y control («sfrclak[.]com»)

Socket, en su propio análisis del ataque, dijo que identificó dos paquetes adicionales que distribuyen el mismo malware a través de dependencias proporcionadas:

  • @shadanai/openclaw (versiones 2026.3.28-2, 2026.3.28-3, 2026.3.31-1 y 2026.3.31-2)
  • @qqbrowser/openclaw-qbot (versión 0.0.130)

Fuente: THN


Ver fuente

Related Post