Puntos clave
- La cuenta de npm del principal responsable del mantenimiento de Axios fue pirateada. Se publicaron dos versiones maliciosas:
axios@1.14.1yaxios@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_modulesNo lo revelaré. Tienes que consultar tus archivos de registro.
Agradecemos la excelente cobertura de este suceso realizada por:
- StepSecurity (https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan)
- Socket socket)
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 COMPROMETIDOLinux
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.
Pasos de remediación
- 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- 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" }
}- Eliminar
plain-crypto-jsdesde node_modules:
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts- 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. - 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,
.envvalores. - 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.
- Ejecuta
npm ci --ignore-scriptscomo 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
- sha256:
- Windows:
%PROGRAMDATA%\wt.exe, %TEMP%\6202033.vbs, %TEMP%\6202033.ps1- sha256:
617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101(PowerShell)
- sha256:
- Linux:
/tmp/ld.py- sha256:
fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
- sha256:
Cuentas de los atacantes:
- jasonsaayman: mantenedor de Axios afectado por un ataque; su correo electrónico ha cambiado a ifstap@proton.me
- nrwise: creado por el atacante, nrwise@proton.me
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 | shNoticia en desarrollo... Manténgase atento a las actualizaciones.
{{cta}}

