Ataque Supply Chain a Axios: Cómo protegerte del malware en npm
El 31 de Marzo de 2026, dos versiones maliciosas de axios fueron publicadas en npm. Te explicamos qué pasó y cómo protegerte.
Si usas axios en tus proyectos, esto te interesa. El 31 de Marzo de 2026, el ecosistema JavaScript sufrió un nuevo ataque a la cadena de suministro (supply chain attack). Dos versiones maliciosas de axios fueron publicadas directamente en npm, el registry más grande del mundo de paquetes JavaScript.
¿Qué pasó exactamente?
Un atacante logró hackear las credenciales de un mantenedor principal de axios y publicó dos versiones comprometidas directamente al registry de npm: 1.14.1 y 0.30.4. Lo preocupante es que axios se descarga entre 100 y 300 millones de veces por semana, lo que convierte a este paquete en uno de los más críticos del ecosistema JavaScript.
A diferencia de otros ataques que modifican el código fuente directamente, estas versiones maliciosas no contienen código peligroso en sí mismas. En su lugar, inyectan una dependencia falsa llamada plain-crypto-js que ejecuta un script postinstall.
Cómo funcionó el ataque
- Credenciales comprometidas: El atacante hackeó las credenciales npm de un mantenedor principal y publicó las versiones fuera del flujo normal de seguridad.
- Dependencia falsa inyectada: Las versiones maliciosas incluyen una dependencia fantasma llamada
plain-crypto-jsque no tiene relación con ninguna librería legítima. - Script postinstall malicioso: El script postinstall de esta dependencia falsa descarga un payload de segunda etapa desde un servidor C2 en sfrclak.com:8000.
- Auto-eliminación: El malware se auto-elimina después de ejecutarse, lo que dificulta enormemente la detección forense y el análisis posterior.
⚠️ ¿Estás usando axios?
Si tienes proyectos con axios, revisa inmediatamente si tienes las versiones 1.14.1 o 0.30.4 instaladas. En ese caso, actúa YA.
Qué hacer inmediatamente
- Busca en lockfiles y node_modules: Verifica si tienes axios@1.14.1, axios@0.30.4 o plain-crypto-js en tu proyecto.
- Haz pin a versiones seguras: Actualiza inmediatamente a axios@1.14.0 o axios@0.30.3.
- Rota todas las credenciales: Si tuviste estas versiones instaladas, asume que tus secretos pueden estar comprometidos. Rota TODOS los API keys, tokens, y contraseñas en entornos de build afectados.
- Redeploy proyectos: Despliega nuevamente todos los proyectos que puedan haber sido afectados.
- Bloquea scripts en CI: Añade
--ignore-scriptsa todas las instalaciones npm en tus pipelines de CI/CD como medida preventiva.
Lecciones para el ecosistema
Este ataque demuestra que el modelo de seguridad de npm tiene vulnerabilidades significativas. La publicación de paquetes por mantenedores con acceso comprometido pasa desapercibida sin verificación adicional.
Como desarrolladores, debemos asumir que cualquier paquete puede ser comprometido y tomar medidas preventivas:
- Usar lockfiles y revisarlos antes de cada install
- Implementar verificaciones de integridad con checksum
- Configurar npm para no ejecutar scripts automáticamente
- Monitorear las dependencias de tus proyectos activamente
- Considerar herramientas como Socket.dev o Snyk para análisis de seguridad
Este ataque fue detectado rápidamente por la comunidad y las versiones maliciosas ya fueron eliminadas de npm. Sin embargo, sirve como recordatorio de que la seguridad en el desarrollo de software es responsabilidad de todos.
Compartir artículo
Escrito por
Oscar Vargas
Apasionado por el desarrollo web, las herramientas modernas y compartir lo que aprende en el camino. Más artículos abajo.
Siguiente artículo →
Tu CQRS en banca tiene dos verdades y nadie las reconcilia
Artículos relacionados
El Costo Oculto de useEffect: Por Qué tu App Sigue Re-renderizando en 2026
Hay un enemigo invisible en tus componentes de React que está quemando performance sin que lo notes. Y no, no es useEffect. Pero está más cerca de lo que crees.
Oxlint: El linter que es hasta 100 veces más rápido que ESLint
¿Es hora de abandonar ESLint? Oxlint, escrito en Rust, promete ser 50-100 veces más rápido. Una guía completa sobre migración y beneficios.
Tu CQRS en banca tiene dos verdades y nadie las reconcilia
El comando pasó, el evento llegó a SQS y la pantalla mostró un saldo falso. El bug no estaba en el command side, sino en el lado que nadie mira.