Publicación
- 7 min read
Axios Comprometido: Paquete npm con Backdoor instaló un RAT en Más de 100M

Axios Comprometido: Cómo un Paquete npm con Backdoor Depositó un RAT en Más de 100M de Descargas
El ecosistema JavaScript acaba de sufrir uno de los ataques a la cadena de suministro más significativos en la memoria reciente. Axios, la librería HTTP omnipresente descargada más de 100 millones de veces por semana, fue comprometida cuando atacantes lograron acceso a la cuenta de un mantenedor en npm y publicaron versiones maliciosas conteniendo un Troyano de Acceso Remoto (RAT).
Esto no es solo otro titular de seguridad. Si usas Node.js para APIs de backend, builds de frontend, o scripts de DevOps—este incidente te afecta directamente.
Índice
- Qué Sucedió
- Cómo Funcionó el Ataque
- La Línea del Tiempo de los Eventos
- Qué Versiones Fueron Afectadas
- Cómo Verificar si Fuiste Afectado
- Qué Podían Hacer los Atacantes con el RAT
- El Problema del Ecosistema npm
- Cómo Protegerte
- Lecciones Aprendidas
- Conclusión
Qué Sucedió
El 30 de marzo de 2026, investigadores de seguridad de StepSecurity descubrieron que el popular paquete npm axios—usado por millones de desarrolladores para realizar peticiones HTTP en aplicaciones JavaScript y TypeScript—había sido backdoored.
Los atacantes comprometieron una cuenta de mantenedor existente y publicaron versiones maliciosas ([email protected] y [email protected]) que incluían un Troyano de Acceso Remoto. El troyano estaba camuflado dentro del proceso de build del paquete, haciéndolo difícil de detectar mediante métodos de auditoría estándar.
El ataque fue sofisticado: no modificó el código fuente directamente sino que inyectó código malicioso durante la ejecución del script post-install, permitiendo a los atacantes:
- Ejecutar código arbitrario en máquinas de desarrolladores
- Robar variables de entorno (incluyendo claves API y credenciales)
- Establecer acceso remoto persistente
- Moverse lateralmente dentro de entornos CI/CD
Cómo Funcionó el Ataque
Los atacantes aprovecharon una técnica que los equipos de seguridad llaman “confusión de dependencias” combinada con elementos de “typosquatting”. Sin embargo, en este caso, fueron directamente por la cuenta del mantenedor—indicando un compromiso por phishing o un ataque de credential stuffing.
El Vector de Infección
// El código malicioso fue inyectado en scripts postinstall
// camuflado como parte del proceso normal de build
// El RAT se conectó a un servidor externo y esperaba comandos
const net = require('net')
const { exec } = require('child_process')
// Este código corrió silenciosamente durante npm install
// Exfiltrando variables de entorno e información del sistema
Por Qué Esto Fue Efectivo
- Paquete confiable: Axios es usado por frameworks y empresas
- Ejecución silenciosa: El código malicioso se ejecutaba en scripts postinstall
- Alcance amplio: 100M+ descargas semanales significaban potencial de impacto masivo
- Persistencia: El RAT podía sobrevivir intentos de reinstalación
La Línea del Tiempo de los Eventos
| Fecha | Evento |
|---|---|
| 28 de marzo, 2026 | Atacantes comprometen cuenta de mantenedor |
| 29 de marzo, 2026 | Versiones maliciosas publicadas en npm |
| 30 de marzo, 2026 | Investigadores de StepSecurity descubren la brecha |
| 30 de marzo, 2026 | npm elimina versiones maliciosas, notifica usuarios |
| 31 de marzo, 2026 | Divulgación completa y análisis técnico publicado |
El ataque pasó desapercibido por aproximadamente 48 horas antes de ser descubierto y remediado.
Qué Versiones Fueron Afectadas
Según el advisory oficial de seguridad de axios, las siguientes versiones fueron comprometidas:
Cómo Verificar si Fuiste Afectado
Ejecuta estos comandos en el directorio de tu proyecto:
# Verifica tu versión de axios
npm list axios
# Vista detallada del árbol de dependencias
npm ls axios
# Verifica scripts postinstall
grep -r "postinstall" node_modules/axios/package.json
Para Inspección de package.json
// Verifica tu package.json por versiones afectadas
{
"dependencies": {
"axios": "1.14.1" // VULNERABLE
}
}
La Ventaja de GitHub
Si usas Dependabot o GitHub Actions, verifica tu pestaña de advisories de seguridad. GitHub automáticamente marcó proyectos usando versiones vulnerables.
Qué Podían Hacer los Atacantes con el RAT
Una vez instalado en la máquina de un desarrollador, el Troyano de Acceso Remoto tenía capacidades amplias:
Exfiltración de Datos
// El RAT podía robar:
// - Credenciales de AWS/GCP/Azure del entorno
// - Tokens npm y autenticación del registry
// - Claves SSH
// - Strings de conexión a bases de datos
// - Claves API para servicios de terceros
process.env.API_KEYS // Todas las variables de entorno
process.env.AWS_ACCESS_KEY
process.env.NPM_TOKEN
Movimiento Lateral
El RAT no estaba limitado a la máquina del desarrollador. En entornos CI/CD, podía:
- Acceder a credenciales de producción almacenadas en secret managers
- Modificar artefactos de build para inyectar backdoors en software liberado
- Pivotar a redes corporativas internas
- Establecer canales de comando y control para ataques futuros
Escenarios de Impacto Real
- Máquina de desarrollador comprometida → Claves SSH robadas → Servidores de producción accedidos
- Pipeline CI/CD comprometido → Código malicioso inyectado en app → Usuarios descargan software con backdoor
- Token npm robado → Más paquetes comprometidos → Cadena de suministro escala
El Problema del Ecosistema npm
Este incidente resalta una vulnerabilidad sistémica en el ecosistema de paquetes JavaScript. Con más de 2 millones de paquetes y miles de millones de descargas diarias, npm se ha convertido en un objetivo atractivo para atacantes.
Los Números
- 2.1M+ paquetes en el registry de npm
- 100B+ descargas semanales
- 17M desarrolladores usando npm
- 1 hackeo puede afectar millones de proyectos
Por Qué la Seguridad Tradicional Falla
| Medida de Seguridad | Efectividad Contra Este Ataque |
|---|---|
| Code review | ❌ Código malicioso inyectado en tiempo de build |
| npm audit | ❌ RAT estaba ofuscado |
| Lockfiles | ❌ Lockfile garantiza la versión maliciosa |
| Type checking | ❌ Código malicioso en runtime no es detectado |
El Problema de la Cuenta de Mantenedor
La causa raíz es simple: seguridad de cuentas. El modelo de npm depende de que los mantenedores aseguren sus cuentas, pero:
- Sin autenticación 2FA obligatoria (hasta recientemente)
- Reutilización de passwords en filtraciones
- Falta de monitoreo de comportamiento
- Sin requisito de hardware security keys
Cómo Protegerte
Acciones Inmediatas
- Actualiza axios inmediatamente
npm install [email protected]
# o
yarn add [email protected]
-
Rota todas las credenciales que estuvieron presentes durante el período afectado:
- Tokens npm
- Claves de proveedores cloud
- Claves API
- Claves SSH
-
Audita tus variables de entorno por acceso sospechoso
Prácticas de Seguridad a Largo Plazo
Usa npm audit y socket.dev
# Instala socket.dev para análisis mejorado de paquetes
npm install -g @socket.dev/npm
socket npm audit
Implementa Lockfiles Estrictamente
# Asegura que tu CI/CD usa --frozen-lockfile
npm ci --frozen-lockfile
Habilita las Funciones de Seguridad Mejoradas de npm
# Habilita 2FA con security keys
npm profile enable-2fa --security-key
# Usa autenticación basada en tokens
npm token create --readonly
Monitorea Tu Árbol de Dependencias
# Usa herramientas como Socket, Snyk, o GuardDog
npx @socket.dev/npm audit --package axios@>=0.21.0
Lecciones Aprendidas
Para Desarrolladores
- Bloquea tus dependencias: Usa
package-lock.jsonynpm cien CI/CD - Verifica la integridad de paquetes: Usa
npm audity herramientas de terceros - Principio de mínimo privilegio: No des a los paquetes más permisos de los necesarios
- Monitorea tu entorno: Usa herramientas de escaneo de secretos como el secret scanning de GitHub
Para Organizaciones
- Seguridad de cadena de suministro es crítica: Trata las dependencias como preocupaciones de seguridad de primera clase
- Implementa protección en runtime: Usa herramientas como Sysdig, Falco, o similares
- Segmentación de red: Aísla entornos CI/CD de producción
- Planes de respuesta a incidentes: Ten un playbook para ataques a la cadena de suministro
Para el Ecosistema
- 2FA obligatorio: npm debería exigir hardware security keys para paquetes populares
- Firma de código: Implementar attestación de procedencia para paquetes
- Detección automatizada de amenazas: Detección de anomalías basada en AI/ML para comportamiento de paquetes
- Capacitación en seguridad para mantenedores: Educación sobre phishing y seguridad de credenciales
Conclusión
El ataque a la cadena de suministro de Axios es un duro recordatorio de que la seguridad del código abierto es responsabilidad de todos. Mientras que la escala y conveniencia del ecosistema JavaScript son remarkable, esa misma escala lo convierte en un objetivo atractivo para actores maliciosos.
La buena noticia: este ataque fue descubierto y remediado relativamente rápido. Las versiones maliciosas estuvieron disponibles solo por 48 horas antes de que npm las eliminara. Sin embargo, en esa ventana, miles de proyectos pueden haber sido comprometidos.
Acciones inmediatas:
- Actualiza axios a la versión >= 1.14.0
- Rota cualquier credencial que haya sido expuesta
- Implementa las prácticas de seguridad descritas arriba
- Comparte esta información con tu equipo
La seguridad de tus aplicaciones depende no solo de tu código, sino del código en el que confías. Mantente vigilante, audita tus dependencias, y nunca asumas que paquetes populares son automáticamente seguros.
Si encontraste este artículo útil, compártelo con tus compañeros desarrolladores. ¡Hasta el próximo post!