Aikido

Axios, vulnerable en npm: suplantación de la cuenta del mantenedor y despliegue de un RAT

Escrito por
Madeline Lawrence

Puntos clave

  • La cuenta de npm del principal responsable del mantenimiento de Axios fue pirateada. Se publicaron dos versiones maliciosas: axios@1.14.1 y axios@0.30.4. Desde entonces, npm ha eliminado ambos.
  • Cualquier persona que haya instalado cualquiera de las dos versiones antes de su retirada debe dar por hecho que su sistema está comprometido. Las versiones maliciosas introducen una dependencia (plain-crypto-js) que utiliza un troyano de acceso remoto multiplataforma dirigido a macOS, Windows y Linux.
  • Axios registra alrededor de 100 millones de descargas semanales. Se trata de uno de los ataques a la cadena de suministro de npm más impactantes ataques a la cadena de suministro constancia.
  • El malware se autodestruye tras su ejecución, por lo que la inspección posterior a la infección de node_modules No lo revelaré. Tienes que consultar tus archivos de registro.

Agradecemos la excelente cobertura de este suceso realizada por:

Cómo comprobar si te has visto afectado por el ataque a Axios

Opción 1) Comprobar manualmente

1. Comprueba si hay versiones maliciosas de Axios

Analiza los paquetes instalados y el archivo de bloqueo en busca de 1.14.1 o 0.30.4.

npm list axios 2>/dev/null | grep -E "1.14.1|0.30.4"
grep -A1 '"axios"' package-lock.json | grep -E "1.14.1|0.30.4"

2. Comprueba si hay algún paquete de dropper oculto

Aunque setup.js Aunque se haya eliminado automáticamente, el directorio sigue existiendo. Su mera presencia confirma que el dropper se ejecutó.

ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENCIALMENTE AFECTADO"

3. Comprueba si hay rastros de RAT en el disco

macOS

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "COMPROMETIDO"

Windows

dir "%PROGRAMDATA%\wt.exe" 2>nul && echo COMPROMETIDO

Linux

ls -la /tmp/ld.py 2>/dev/null && echo "COMPROMETIDO"

Opción 2) Utiliza Aikido (gratis)

Conecta tus repositorios a Aikido (https://app.aikido.dev). El monitor de malware de Aikido compara tus dependencias con la base de datos de malware en tiempo real de Aikido Intel. Si axios@1.14.1, axios@0.30.4, o plain-crypto-js@4.2.1 Si aparece en alguno de tus proyectos, Aikido lo señala de inmediato. Esto funciona en el plan gratuito.

Comprueba si tu código se ve afectado por el ataque a la cadena de suministro de Axios: analízalo gratis con Aikido

Pasos de remediación

  1. Fijar a versiones seguras:
npm install axios@1.14.0   # Usuarios de la versión 1.x
npm install axios@0.30.3   # Usuarios de la versión 0.x
  1. Añade reglas de anulación para evitar la resolución transitiva:
{
  "dependencies": { "axios": "1.14.0" },
  "overrides":    { "axios": "1.14.0" },
  "resolutions":  { "axios": "1.14.0" }
}
  1. Eliminar plain-crypto-js desde node_modules:
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts
  1. Si se detecta algún artefacto RAT (com.apple.act.mond, wt.exe, ld.py), no intente realizar una limpieza in situ. Vuelva a compilar a partir de una versión que sepa que funciona correctamente.
  2. Renueva todas las credenciales a las que se puede acceder en el sistema afectado: tokens de npm, claves de acceso de AWS, claves privadas de SSH, secretos de CI/CD, .env valores.
  3. Revisa los registros del proceso de CI/CD para detectar cualquier ejecución en la que se hayan instalado las versiones afectadas. Renueva todos los secretos introducidos.
  4. Ejecuta npm ci --ignore-scripts como política habitual en CI/CD.

¿Qué ocurrió en el ataque a la cadena de suministro de Axios?

El atacante comprometió el jasonsaayman cuenta de npm, el principal responsable del mantenimiento de axios. El correo electrónico de la cuenta se cambió a ifstap@proton.me. A continuación, el atacante publicó axios@1.14.1 a las 00:21 UTC del 31 de marzo y axios@0.30.4 a la 01:00 UTC. Tanto la rama 1.x como la rama heredada 0.x se vieron afectadas en un plazo de 39 minutos.

Ninguna de las dos versiones tenía una confirmación, una etiqueta o una versión correspondiente en el repositorio de GitHub de Axios. Las versiones legítimas de Axios se publican a través de GitHub Actions con la vinculación de OIDC Trusted Publisher. Estas se publicaron manualmente utilizando un token de acceso de npm robado.

El único cambio en ambas versiones fue la incorporación de plain-crypto-js@^4.2.1 como dependencia. Este paquete nunca se importa en ninguna parte del código fuente de Axios. Su única finalidad es ejecutar un gancho de postinstalación que implementa un RAT.

La vulnerabilidad había sido preparada unas 18 horas antes por una cuenta de atacante independiente (por otra parte, nrwise@proton.me). Una versión simplificada (4.2.0) se publicó primero para crear un historial del registro, seguido del malicioso 4.2.1 a las 23:59 UTC del 30 de marzo.

El dropper del RAT (setup.js) se pone en contacto con sfrclak[.]com:8000 y distribuye cargas útiles específicas para cada plataforma: un binario de macOS camuflado como un demonio de caché de Apple en /Library/Caches/com.apple.act.mond, un script de PowerShell en Windows que se ejecuta a través de un VBScript oculto con el intérprete copiado en %PROGRAMDATA%\wt.exe, y un script de Python en Linux en /tmp/ld.py. Tras su ejecución, el dropper se elimina a sí mismo y sustituye su propio package.json con un trozo limpio para ocultar las pruebas.

{{cta}}

Indicadores de compromiso (IOC)

Versiones y dependencias maliciosas de Axios:

  • axios@1.14.1 (shasum: 2553649f2322049666871cea80a5d0d6adc700ca)
  • axios@0.30.4 (shasum: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)
  • plain-crypto-js@4.2.1 (shasum: 07d889e2dadce6f3910dcbc253317d28ca61c766)

Red:

  • C2: sfrclak[.]com / 142.11.206[.]73 / http://sfrclak[.]com:8000/6202033

Sistema de archivos:

  • macOS: /Library/Caches/com.apple.act.mond
    • sha256: 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
  • Windows: %PROGRAMDATA%\wt.exe, %TEMP%\6202033.vbs, %TEMP%\6202033.ps1
    • sha256: 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 (PowerShell)
  • Linux: /tmp/ld.py
    • sha256: fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf

Cuentas de los atacantes:

Cómo protegerse contra la instalación de malware

Cadena de seguridad para aikido (https://github.com/AikidoSec/safe-chain) es una herramienta de código abierto que actúa como envoltura para npm, yarn y pnpm. Comprueba cada paquete con la base de datos de malware de Aikido Intel antes de que llegue a tu equipo y aplica un periodo mínimo de antigüedad configurable para los paquetes (48 horas por defecto), lo que impide la instalación de versiones recién publicadas hasta que hayan sido validadas. En este ataque a Axios, plain-crypto-js@4.2.1 existió durante menos de 24 horas antes de que las versiones vulnerables de Axios lo incorporaran. La comprobación de antigüedad de Safe Chain por sí sola lo habría bloqueado.

Gratis, no se necesitan fichas:

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/latest/download/install-safe-chain.sh | sh

Noticia en desarrollo... Manténgase atento a las actualizaciones.

{{cta}}

Compartir:

https://www.aikido.dev/blog/axios-npm-compromised-maintainer-hijacked-rat

Suscríbase para recibir noticias sobre amenazas.

4.7/5
¿Cansado de los falsos positivos?

Prueba Aikido como otros 100k.
Empiece ahora
Obtenga un recorrido personalizado

Con la confianza de más de 100k equipos

Reservar ahora
Escanee su aplicación en busca de IDORs y rutas de ataque reales

Con la confianza de más de 100k equipos

Empezar a escanear
Vea cómo el pentesting de IA prueba su aplicación

Con la confianza de más de 100k equipos

Empezar a probar
Comprueba si te has visto afectado por el ataque a la cadena de suministro de Axios

Gratis, no se necesita tarjeta de crédito

Buscar malware

Asegura tu plataforma ahora

Protege tu código, la nube y el entorno de ejecución en un único sistema central.
Encuentra y corrije vulnerabilidades de forma rápida y automática.

No se requiere tarjeta de crédito | Resultados del escaneo en 32 segundos.