OpenCodex Blog

Publicación

- 7 min read

Axios Comprometido: Paquete npm con Backdoor instaló un RAT en Más de 100M

img of 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ó

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

  1. Paquete confiable: Axios es usado por frameworks y empresas
  2. Ejecución silenciosa: El código malicioso se ejecutaba en scripts postinstall
  3. Alcance amplio: 100M+ descargas semanales significaban potencial de impacto masivo
  4. Persistencia: El RAT podía sobrevivir intentos de reinstalación

La Línea del Tiempo de los Eventos

FechaEvento
28 de marzo, 2026Atacantes comprometen cuenta de mantenedor
29 de marzo, 2026Versiones maliciosas publicadas en npm
30 de marzo, 2026Investigadores de StepSecurity descubren la brecha
30 de marzo, 2026npm elimina versiones maliciosas, notifica usuarios
31 de marzo, 2026Divulgació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

  1. Máquina de desarrollador comprometida → Claves SSH robadas → Servidores de producción accedidos
  2. Pipeline CI/CD comprometido → Código malicioso inyectado en app → Usuarios descargan software con backdoor
  3. 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 SeguridadEfectividad 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

  1. Actualiza axios inmediatamente
   npm install [email protected]
# o
yarn add [email protected]
  1. Rota todas las credenciales que estuvieron presentes durante el período afectado:

    • Tokens npm
    • Claves de proveedores cloud
    • Claves API
    • Claves SSH
  2. 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

  1. Bloquea tus dependencias: Usa package-lock.json y npm ci en CI/CD
  2. Verifica la integridad de paquetes: Usa npm audit y herramientas de terceros
  3. Principio de mínimo privilegio: No des a los paquetes más permisos de los necesarios
  4. Monitorea tu entorno: Usa herramientas de escaneo de secretos como el secret scanning de GitHub

Para Organizaciones

  1. Seguridad de cadena de suministro es crítica: Trata las dependencias como preocupaciones de seguridad de primera clase
  2. Implementa protección en runtime: Usa herramientas como Sysdig, Falco, o similares
  3. Segmentación de red: Aísla entornos CI/CD de producción
  4. Planes de respuesta a incidentes: Ten un playbook para ataques a la cadena de suministro

Para el Ecosistema

  1. 2FA obligatorio: npm debería exigir hardware security keys para paquetes populares
  2. Firma de código: Implementar attestación de procedencia para paquetes
  3. Detección automatizada de amenazas: Detección de anomalías basada en AI/ML para comportamiento de paquetes
  4. 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!