Aikido

axios comprometido en npm: cuenta del mantenedor secuestrada, RAT desplegado

Escrito por
Madeline Lawrence

Puntos clave

  • La cuenta npm del mantenedor principal de axios fue secuestrada. Se publicaron dos versiones maliciosas: axios@1.14.1 y axios@0.30.4. npm ha eliminado ambas desde entonces.
  • Cualquiera que haya instalado cualquiera de las versiones antes de su eliminación debe asumir que su sistema está comprometido. Las versiones maliciosas inyectan una dependencia (plain-crypto-js) que despliega un troyano de acceso remoto multiplataforma dirigido a macOS, Windows y Linux.
  • axios tiene aproximadamente 100 millones de descargas semanales. Este es uno de los ataques a la cadena de suministro de npm más impactantes registrados.
  • El malware se autodestruye después de la ejecución, por lo que la inspección post-infección de node_modules no lo revelará. Debe revisar sus archivos de registro.

Crédito a la excelente cobertura de este incidente por parte de:

Cómo comprobar si está afectado por el ataque a axios

Opción 1) Comprobar manualmente

1. Compruebe si hay versiones maliciosas de axios

Escanea sus paquetes instalados y 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. Compruebe si hay un paquete dropper oculto

Incluso si setup.js se autoeliminó, el directorio aún existe. Su sola presencia confirma que el dropper se ejecutó.

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

3. Comprobar artefactos RAT en 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) Utilice Aikido (gratuito)

Conecte sus repositorios a Aikido (https://app.aikido.dev). El Monitor de Malware de Aikido compara sus dependencias con el feed de malware en vivo de Aikido Intel. Si axios@1.14.1, axios@0.30.4, o plain-crypto-js@4.2.1 está presente en cualquiera de sus proyectos, Aikido lo marca inmediatamente. Esto funciona en el nivel gratuito.

Comprueba si tu código está afectado por el ataque a la cadena de suministro de Axios: escanéalo gratis con Aikido

Pasos de remediación

  1. Fije 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ñadir anulaciones 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 de node_modules:
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts
  1. Si se encuentra algún artefacto RAT (com.apple.act.mond, wt.exe, ld.py), no intente limpiar in situ. Reconstruya desde un estado conocido como bueno.
  2. Rote todas las credenciales accesibles en el sistema afectado: tokens de npm, claves de acceso de AWS, claves privadas SSH, secretos de CI/CD, .env valores.
  3. Auditar los logs del pipeline de CI/CD para cualquier ejecución que haya instalado las versiones afectadas. Rotar todos los secretos inyectados.
  4. Ejecuta npm ci --ignore-scripts como política permanente en CI/CD.

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

El atacante comprometió la jasonsaayman cuenta de npm, el mantenedor principal de axios. El correo electrónico de la cuenta se cambió a ifstap@proton.me. El atacante publicó entonces axios@1.14.1 a las 00:21 UTC del 31 de marzo y axios@0.30.4 a las 01:00 UTC. Tanto las ramas 1.x como las legacy 0.x se vieron afectadas en 39 minutos.

Ninguna de las versiones tenía un commit, tag o release correspondiente en el repositorio de GitHub de axios. Los releases legítimos de axios se publican a través de GitHub Actions con el binding OIDC Trusted Publisher. Estos se publicaron manualmente con un token de acceso npm robado.

El único cambio en ambas versiones fue la adición de plain-crypto-js@^4.2.1 como dependencia. Este paquete nunca se importa en ninguna parte del código fuente de axios. Existe únicamente para ejecutar un hook postinstall que despliega un RAT.

La dependencia fue pre-cargada unas 18 horas antes por una cuenta de atacante separada (nrwise, nrwise@proton.me)4.2.0). Una versión de señuelo limpia ( 4.2.1 ) se publicó primero para construir el historial del registro, seguida de la maliciosa

/tmp/ld.py a las 23:59 UTC del 30 de marzo. El dropper de RAT (setup.js) contacta con sfrclak[.]com:8000y entrega payloads específicos de la plataforma: un binario de macOS disfrazado como un demonio de caché de Apple en /Library/Caches/com.apple.act.mond, un script de PowerShell en Windows ejecutado a través de un VBScript oculto con el intérprete copiado a %PROGRAMDATA%\wt.exe, y un script de Python en Linux en package.json . Después de la ejecución, el dropper se elimina a sí mismo y reemplaza su propio

{{cta}}

Indicadores de compromiso (IOCs)

Versiones y dependencias maliciosas de axios:

  • axios@1.14.1 2553649f2322049666871cea80a5d0d6adc700ca con un stub limpio para ocultar la evidencia.)
  • axios@0.30.4 2553649f2322049666871cea80a5d0d6adc700ca (shasum:)
  • plain-crypto-js@4.2.1 2553649f2322049666871cea80a5d0d6adc700ca d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)

Red:

  • C2: 07d889e2dadce6f3910dcbc253317d28ca61c766 / sfrclak[.]com / http://sfrclak[.]com:8000/6202033

Sistema de archivos:

  • 142.11.206[.]73 sfrclak[.]com:8000
    • sha256: 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
  • Windows: %PROGRAMDATA%\wt.exe, %TEMP%\6202033.vbs, %TEMP%\6202033.ps1
    • sha256: 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 (powershell)
  • Linux: %PROGRAMDATA%\wt.exe
    • sha256: fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf

Cuentas del atacante:

Cómo protegerse contra la instalación de malware

Aikido Safe Chain (https://github.com/AikidoSec/safe-chain) es una herramienta de código abierto que se integra con npm, yarn y pnpm. Verifica cada paquete con el feed de malware de Aikido Intel antes de que llegue a su máquina y aplica una edad mínima configurable para los paquetes (48 horas por defecto), suprimiendo las 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 comprometidas de axios lo incluyeran. Solo la verificación de edad de Safe Chain lo habría bloqueado.

Gratis, no se requieren tokens:

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íbete para recibir noticias

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 estás afectado por el ataque a la cadena de suministro de Axios

Gratis, no se requiere tarjeta de crédito

Escanear en busca de 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.