Cómo Funciona el Ataque a la Cadena de Suministro de Axios NPM y Cómo Proteger Tus Proyectos API

Ashley Innocent

Ashley Innocent

1 April 2026

Cómo Funciona el Ataque a la Cadena de Suministro de Axios NPM y Cómo Proteger Tus Proyectos API

TL;DR

El 31 de marzo de 2026, atacantes comprometieron la cuenta npm del mantenedor principal de Axios, el cliente HTTP de JavaScript más popular con 83 millones de descargas semanales. Publicaron versiones maliciosas (1.14.1 y 0.30.4) que contenían un RAT multiplataforma que roba credenciales, claves SSH y tokens de la nube de las máquinas de los desarrolladores. Desactualice a Axios 1.14.0 inmediatamente, rote todos los secretos y escanee en busca de indicadores de compromiso en su sistema.

Introducción

Axios procesa más solicitudes HTTP que cualquier otra biblioteca de JavaScript. Si ha creado un cliente API, probado puntos finales o conectado una interfaz a una base de datos en los últimos cinco años, probablemente lo haya utilizado.

El 31 de marzo de 2026, a las 00:21 UTC, un actor de amenazas publicó la versión 1.14.1 de Axios a través de una cuenta de mantenedor secuestrada. El paquete parecía idéntico a la versión legítima. La diferencia era quirúrgica: solo package.json cambió en 86 archivos. Pero ese único archivo inyectó una dependencia fantasma llamada plain-crypto-js que desplegó un troyano de acceso remoto en cada máquina que ejecutaba npm install.

Las versiones maliciosas permanecieron activas durante aproximadamente dos o tres horas antes de que npm las retirara. Dos o tres horas en 83 millones de descargas semanales.

💡
Si está creando o probando API, este ataque se dirigió directamente a su cadena de herramientas. El cliente HTTP integrado de Apidog elimina la necesidad de bibliotecas HTTP de terceros en su flujo de trabajo de prueba de API, eliminando toda esta superficie de ataque. Descargue Apidog gratis para seguir los pasos de auditoría de seguridad a continuación.
button

Este artículo desglosa cómo funcionó el ataque, cómo detectar si sus sistemas están comprometidos y qué deberían cambiar los equipos de API en su gestión de dependencias en el futuro.

Cómo se desarrolló el ataque a la cadena de suministro de Axios

La línea de tiempo

El atacante ejecutó esta operación con precisión en una ventana de 18 horas:

Cómo se comprometió la cuenta

El atacante tomó el control de la cuenta npm jasonsaayman, el mantenedor principal de Axios. Cambiaron el correo electrónico registrado a ifstap@proton.me. La evidencia forense clave:

Esta distinción es importante. Si su organización publica paquetes npm, la ausencia de enlace OIDC y la procedencia de CI/CD en una versión es una señal de alerta que vale la pena automatizar para su verificación.

La técnica de inyección de dependencia

Aquí está lo que hizo que este ataque fuera sutil. El atacante no modificó el código fuente de Axios. Cambiaron una línea en package.json para agregar plain-crypto-js@^4.2.1 como una dependencia en tiempo de ejecución. Este paquete nunca fue importado en ninguna parte del código base de Axios. Existía únicamente para activar su hook postinstall durante npm install.

El análisis binario confirmó la precisión quirúrgica: solo package.json difería entre la versión limpia 1.14.0 y la comprometida 1.14.1 en los 86 archivos del paquete.

Qué hace la carga útil maliciosa

El mecanismo del dropper

El hook postinstall en plain-crypto-js ejecutó un archivo ofuscado de 4.2 KB llamado setup.js. Utilizó dos capas de ofuscación:

  1. Capa 1: Cifrado XOR utilizando una clave derivada de la cadena "OrDeR_7077"
  2. Capa 2: Codificación Base64 con inversión de caracteres

Una vez decodificado, el dropper identificó el sistema operativo del host y ejecutó cargas útiles específicas de la plataforma.

Rutas de ataque específicas de la plataforma

macOS:

Escribe AppleScript en /tmp/6202033
Ejecuta vía osascript
Descarga la carga útil en /Library/Caches/com.apple.act.mond

Windows:

Copia PowerShell en %PROGRAMDATA%\wt.exe (artefacto de persistencia)
Ejecuta el dropper VBScript a través de cscript

Linux:

Descarga el RAT de Python a /tmp/ld.py
Ejecuta vía nohup python3

Las tres ramas contactaron un servidor de comando y control con cuerpos POST específicos de la plataforma:

Capacidades del RAT

El troyano de acceso remoto desplegado soporta:

En términos sencillos: el atacante obtiene control remoto completo de su máquina de desarrollo. Pueden leer sus archivos .env, robar sus claves API, copiar sus claves SSH y recolectar tokens de proveedores de la nube.

Antiforense: la carga útil de autolimpieza

Después de la ejecución, el dropper realizó tres pasos de limpieza:

  1. Eliminó setup.js
  2. Eliminó el malicioso package.json
  3. Renombró un package.md preconfigurado (informando la versión 4.2.0) a package.json

Esto creó una capa de engaño donde npm list informaría la versión 4.2.0 en lugar de la 4.2.1 que ejecutó la carga útil. Un desarrollador que verificara sus dependencias después del hecho no vería nada malo.

Quién está detrás de este ataque

El Grupo de Inteligencia de Amenazas de Google atribuyó el ataque de Axios a UNC1069, un presunto actor de amenazas norcoreano. El malware de macOS exhibe una "superposición significativa" con WAVESHAPER, un backdoor de C++ que Mandiant rastreó en febrero de 2026.

Grupos estatales norcoreanos tienen una profunda experiencia en ataques a la cadena de suministro. Históricamente, han utilizado herramientas de desarrollador comprometidas para robar criptomonedas, y esta operación sigue el mismo patrón: comprometer una herramienta de desarrollador ampliamente utilizada para obtener acceso a credenciales e infraestructura en la nube en miles de organizaciones.

El nivel de sofisticación es notable. La inyección de dependencia en dos etapas, el despliegue multiplataforma de RAT y la limpieza antiforense apuntan a una operación con buenos recursos. Esto no es un script kiddie que suelta un criptominero. Es una operación de inteligencia que apunta a las estaciones de trabajo de los desarrolladores.

Cómo verificar si estás afectado

Paso 1: Verifica tu versión de Axios

Ejecuta esto en cada proyecto que use Axios:

npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"

Si esto devuelve resultados, tu proyecto instaló una versión comprometida.

Paso 2: Busca la dependencia maliciosa

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

Aunque el dropper se haya limpiado, la existencia del directorio confirma que la carga útil se ejecutó.

Paso 3: Verifica si hay artefactos RAT en tu sistema

macOS:

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null

Linux:

ls -la /tmp/ld.py 2>/dev/null

Windows (PowerShell):

Test-Path "$env:PROGRAMDATA\wt.exe"

Paso 4: Comprueba los indicadores de red

Bloquea y escanea conexiones a:

Paso 5: Revisa los registros de construcción de CI/CD

Revisa cualquier ejecución de pipeline de CI/CD entre el 31 de marzo a las 00:21 UTC y las 03:15 UTC. Cualquier ejecución de npm install o npm ci durante esta ventana que resolvió Axios podría haber ejecutado el dropper en tu entorno de construcción.

Pasos de remediación inmediata

Si encuentra algún indicador de compromiso, trate el sistema afectado como completamente comprometido. Aquí está la lista de prioridades:

1. Desactualice Axios inmediatamente

npm install axios@1.14.0

O para la rama 0.x:

npm install axios@0.30.3

2. Agregue anulaciones de versión a su package.json

Evitar la resolución transitiva a versiones maliciosas:

{
  "overrides": {
    "axios": "1.14.0"
  }
}

Para Yarn:

{
  "resolutions": {
    "axios": "1.14.0"
  }
}

3. Eliminar el paquete malicioso

rm -rf node_modules/plain-crypto-js

4. Rote todas las credenciales

Si el dropper se ejecutó en su máquina, asuma que lo siguiente está comprometido:

Rótelo todo. No hay forma de saber qué exfiltró el RAT durante su ventana activa.

5. Bloquear C2 a nivel de red

Añadir a su archivo hosts o reglas de firewall:

echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts

6. Si se encuentran artefactos, reconstruya la máquina

Un RAT con ejecución de shell y acceso al sistema de archivos puede modificar cualquier cosa. Si encontró artefactos del Paso 3, no confíe en el sistema. Reconstruya a partir de un estado conocido y bueno.

Defensas a largo plazo para equipos de desarrollo de API

Usar archivos de bloqueo y fijar versiones exactas

El ataque de Axios explotó los rangos semánticos ^. Si tu package.json dice "axios": "^1.14.0", npm resuelve la última versión compatible, que fue 1.14.1 durante la ventana del ataque.

{
  "dependencies": {
    "axios": "1.14.0"
  }
}

Fije las versiones exactas. Siempre confirme su package-lock.json o yarn.lock. Ejecute npm ci en lugar de npm install en CI/CD para forzar la resolución del archivo de bloqueo.

Deshabilitar scripts postinstall en CI/CD

Todo el ataque dependió de la ejecución de los hooks postinstall durante npm install. Puedes deshabilitar esto:

npm ci --ignore-scripts

Esto rompe algunos paquetes que necesitan compilación nativa. Prueba tus compilaciones primero, luego permite selectivamente scripts para los paquetes que los necesitan usando .npmrc:

ignore-scripts=true

Auditar dependencias regularmente

npm audit
npx socket-security/cli audit

Ejecute estos comandos en CI/CD como una puerta. Cualquier vulnerabilidad crítica o alta debe bloquear la compilación.

Reduzca la superficie de dependencia de su cliente HTTP

Aquí está la pregunta más profunda que plantea este ataque: ¿por qué su flujo de trabajo de pruebas de API depende de una biblioteca HTTP de terceros que puede ser comprometida?

Apidog proporciona un cliente HTTP integrado para pruebas, depuración y documentación de API. No necesita Axios, node-fetch o got en su pila de pruebas. El cliente HTTP forma parte de la plataforma, sin dependencias de terceros que comprometer.

Específicamente para las pruebas de API, mover sus solicitudes HTTP a Apidog elimina toda la superficie de ataque:

Pruebe Apidog gratis para ver cómo eliminar las dependencias de la biblioteca HTTP de su flujo de trabajo de API reduce el riesgo de su cadena de suministro.

Verificar la procedencia del paquete

npm ahora admite la procedencia de paquetes a través de Sigstore. Comprueba si los paquetes de los que dependes utilizan esto:

npm audit signatures

Las versiones maliciosas de Axios carecían de la procedencia de OIDC. Las versiones legítimas de las canalizaciones de CI/CD incluyen la certificación criptográfica de su origen de construcción. Si aparece una nueva versión sin procedencia, trátala con sospecha.

Lo que esto significa para el ecosistema JavaScript

El modelo de confianza está roto

El modelo de confianza de npm depende de la seguridad de la cuenta del mantenedor. Una sola credencial comprometida le da a un atacante el control sobre un paquete que 83 millones de proyectos instalan cada semana. La autenticación de dos factores ayuda, pero los tokens de acceso de larga duración aún pueden ser robados de entornos de desarrollo comprometidos.

La comunidad está discutiendo varios cambios estructurales:

Los ataques a la cadena de suministro no están disminuyendo

Este ataque se produjo pocos días después del incidente de la fractura de RubyGems y de las continuas preocupaciones sobre las dependencias de PyPI. Los registros de paquetes en todos los ecosistemas de lenguajes están bajo un ataque sostenido. Los desarrolladores de API deben considerar su árbol de dependencias como una superficie de ataque, no como una conveniencia.

La discusión en Reddit capturó bien el sentimiento: "NPM es la mayor debilidad de Internet hoy en día y aún causará una catástrofe gigante". Esté o no de acuerdo con la hipérbole, el ataque de Axios demuestra que el radio de explosión es real.

Comparación: Enfoques de dependencia del cliente HTTP

Enfoque Riesgo de la cadena de suministro Carga de mantenimiento Capacidad de prueba
Axios + scripts personalizados Alto (dependencia de terceros) Alto (gestión de versiones) Requiere configuración manual
Node.js native fetch Bajo (integrado en el tiempo de ejecución) Bajo Funciones de prueba limitadas
Cliente integrado de Apidog Ninguno (sin dependencia npm) Ninguno (gestionado por la plataforma) Pruebas completas, mocking, documentación
Scripts curl/httpie Bajo (herramienta a nivel de sistema) Medio Automatización limitada

Preguntas Frecuentes

¿Es seguro usar Axios ahora?

Sí. Las versiones 1.14.0 y 0.30.3 están limpias. Las versiones comprometidas (1.14.1 y 0.30.4) fueron retiradas aproximadamente en tres horas. Verifique su versión instalada con npm list axios y revise su lockfile para confirmar que está en una versión segura.

¿Cómo sé si el RAT se ejecutó en mi máquina?

Busque artefactos específicos de la plataforma: /Library/Caches/com.apple.act.mond en macOS, /tmp/ld.py en Linux, o %PROGRAMDATA%\wt.exe en Windows. También verifique si node_modules/plain-crypto-js existe en alguno de sus proyectos. El dropper se limpia a sí mismo, por lo que la ausencia de artefactos no garantiza que esté seguro si instaló la versión comprometida.

¿Debería dejar de usar Axios por completo?

No necesariamente. Axios sigue siendo una biblioteca bien mantenida con un sólido historial. Pero este ataque debería impulsarle a evaluar si realmente necesita un cliente HTTP de terceros. Node.js 18+ incluye fetch nativo. Para pruebas de API, plataformas como Apidog proporcionan clientes HTTP integrados que eliminan esta dependencia.

¿Cómo puedo prevenir ataques a la cadena de suministro en mis proyectos?

Fije versiones exactas de dependencias, haga commit de los lockfiles, ejecute npm ci --ignore-scripts en CI/CD, audite las dependencias regularmente, verifique la procedencia del paquete con npm audit signatures y minimice su árbol de dependencias. Considere mover los flujos de trabajo de pruebas de API a plataformas integradas que no dependan de paquetes npm para la comunicación HTTP.

¿Este ataque estuvo relacionado con la filtración del código fuente de Claude Code?

Ambos eventos ocurrieron el mismo día (31 de marzo de 2026), pero no están relacionados. El ataque a Axios fue un compromiso deliberado de la cadena de suministro por parte de un actor de amenazas patrocinado por el estado. La filtración de Claude Code resultó de un error de la herramienta de construcción Bun que envió mapas de origen en producción. La coincidencia en el tiempo ha impulsado la discusión sobre la seguridad general del registro npm.

¿Quién estuvo detrás del ataque a Axios?

El Grupo de Inteligencia de Amenazas de Google atribuyó el ataque a UNC1069, un presunto actor de amenazas norcoreano. El malware de macOS comparte una superposición significativa con WAVESHAPER, un backdoor rastreado por Mandiant. Los grupos norcoreanos tienen una amplia experiencia en ataques a la cadena de suministro, generalmente dirigidos a credenciales de desarrolladores e infraestructura de criptomonedas.

¿Cuántos desarrolladores se vieron afectados?

Las versiones maliciosas estuvieron activas durante aproximadamente dos o tres horas. Con 83 millones de descargas semanales, la exposición potencial es significativa. npm no ha publicado cifras oficiales de impacto. La detección en tiempo de ejecución de StepSecurity confirmó que el dropper contactó con C2 en 1.1 segundos desde el inicio de npm install, antes de que se completara la resolución de dependencias.

¿Puede Apidog ayudar a prevenir ataques a la cadena de suministro?

Apidog elimina un vector de ataque importante al proporcionar un cliente HTTP integrado para pruebas, depuración y documentación de API. No necesita instalar Axios, node-fetch u otras bibliotecas HTTP en su flujo de trabajo de pruebas. Esto reduce la superficie de dependencia de npm y elimina el riesgo de que los paquetes de clientes HTTP comprometidos afecten su proceso de desarrollo de API.

Conclusiones clave

El ataque de Axios es una llamada de atención. Cada dependencia en su node_modules es una decisión de confianza. Asegúrese de tomar esas decisiones deliberadamente, no por defecto.

button

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs