Una de las bibliotecas JavaScript más extendidas para gestionar peticiones HTTP, Axios, fue utilizada recientemente como vector en un ataque a la cadena de suministro de software. Según análisis de Google Threat Intelligence Group (GTIG) y Mandiant, el incidente se ha atribuido al grupo norcoreano UNC1069, conocido por campañas dirigidas al sector de criptomonedas y a desarrolladores.
Ataque a la cadena de suministro en npm: compromiso de Axios y uso de dependencias maliciosas
Los atacantes obtuvieron acceso a la cuenta de un mantenedor en npm y publicaron dos versiones troyanizadas de Axios: 1.14.1 y 0.30.4. En lugar de alterar directamente el código de Axios, añadieron una nueva dependencia llamada plain-crypto-js, que contenía la funcionalidad maliciosa principal.
El elemento clave de la operación fue el uso del script postinstall en el archivo package.json de esa dependencia. En el ecosistema npm, los scripts postinstall se ejecutan automáticamente tras la instalación de un paquete. De este modo, cualquier proyecto que actualizara Axios hacia una versión comprometida desencadenaba de forma transparente la ejecución de código arbitrario, sin necesidad de interacción adicional por parte del desarrollador.
SILKBELL: dropper JavaScript y distribución multiplataforma de malware
El paquete plain-crypto-js actuaba como contenedor de un dropper JavaScript ofuscado identificado como SILKBELL (archivo setup.js). Este componente se conectaba a un servidor remoto de comando y control (C2) y descargaba la siguiente fase de la intrusión en función del sistema operativo detectado: malware en PowerShell para Windows, un binario C++ Mach-O para macOS y un backdoor en Python para Linux.
Una característica avanzada de SILKBELL era su capacidad de autolimpieza. Tras completar la instalación del malware, eliminaba artefactos y sustituía el package.json de plain-crypto-js por una versión “limpia” sin el script postinstall. Esta táctica complica significativamente el análisis forense, ya que los indicios directos de la dependencia maliciosa pueden desaparecer rápidamente de los entornos comprometidos.
UNC1069 y la evolución del backdoor WAVESHAPER.V2
Los análisis de Google GTIG, Mandiant y Elastic Security Labs indican que la carga principal desplegada mediante este supply chain attack corresponde a una nueva variante del backdoor WAVESHAPER, rastreada como WAVESHAPER.V2. Versiones anteriores de este malware ya habían sido asociadas con operaciones de UNC1069 contra organizaciones de criptomonedas.
WAVESHAPER.V2 introduce varias mejoras respecto al original: ahora transmite datos en formato JSON, recopila más información de sistema y soporta un conjunto ampliado de comandos, manteniendo el mismo patrón de comunicación con su C2 mediante consultas periódicas de alrededor de 60 segundos. Tanto la versión previa como la nueva aceptan dinámicamente la dirección del servidor de mando a través de argumentos de línea de comandos, emplean una cadena de User-Agent poco habitual y descargan cargas adicionales en rutas temporales similares, como /Library/Caches/com.apple.act.mond en macOS.
UNC1069 opera al menos desde 2018 y se caracteriza por su orientación a la obtención de beneficio económico, incluida la sustracción de criptomonedas. El desarrollo específico de payloads para Windows, macOS y Linux en esta campaña refleja un alto grado de preparación y un enfoque claro en comprometer de forma masiva entornos de desarrollo y pipelines de CI/CD.
Riesgos para npm, PyPI, NuGet y la cadena de suministro de software
Axios es uno de los clientes HTTP más utilizados en proyectos JavaScript, por lo que su compromiso implica un impacto potencialmente amplio sobre aplicaciones en producción, herramientas internas y cadenas de integración continua. El diseño de la operación —rápida publicación de versiones maliciosas en ramas distintas, cargas multiplataforma y mecanismos de ocultación— indica una campaña escalable, no un incidente aislado.
Este caso se suma a otros ataques a la cadena de suministro, como el incidente del paquete event-stream en npm o el compromiso de SolarWinds en el entorno corporativo. La tendencia es clara: los atacantes desplazan su foco desde los usuarios finales hacia desarrolladores y equipos DevOps, donde comprometer un único paquete puede repercutir en miles de proyectos. Informes recientes también apuntan al riesgo de que técnicas similares se apliquen en PyPI (Python) y NuGet (.NET), ampliando el alcance entre lenguajes y ecosistemas.
Recomendaciones de ciberseguridad para desarrolladores y organizaciones
1. Auditar dependencias y artefactos de compilación. Revisar el árbol de dependencias en busca de las versiones comprometidas de Axios (1.14.1 y 0.30.4) y de la presencia de plain-crypto-js en node_modules. Si se detectan, revertir a versiones conocidas como seguras y reconstruir todos los artefactos.
2. Fijar versiones y gobernar las actualizaciones. Utilizar archivos de bloqueo (package-lock.json, yarn.lock, etc.) para evitar actualizaciones no controladas. Implementar repositorios intermedios o proxies privados con políticas de validación, firma y revisión adicionales para paquetes procedentes de registros públicos.
3. Bloquear la infraestructura de los atacantes. Incluir en listas de bloqueo el dominio sfrclak[.]com y la dirección IP 142.11.206[.]73. Analizar registros de red y de seguridad en busca de conexiones a estos indicadores de compromiso (IoC) y de patrones de tráfico compatibles con C2.
4. Responder al incidente de forma estructurada. Aislar los sistemas potencialmente afectados, finalizar procesos sospechosos, actualizar y escanear de forma completa los entornos de desarrollo y CI/CD. Tratar todas las credenciales accesibles desde máquinas comprometidas (tokens de repositorios, claves de CI, contraseñas de registros de paquetes, etc.) como expuestas y proceder a su rotación inmediata.
5. Reforzar la seguridad de la cadena de suministro de software. Integrar de forma sistemática el análisis de composición de software (SCA), la generación y verificación de SBOM (Software Bill of Materials) y el uso obligatorio de autenticación multifactor en cuentas de npm, PyPI, NuGet y repositorios Git. Aplicar el principio de mínimo privilegio a cuentas técnicas y agentes automatizados, reduciendo el impacto potencial de un compromiso.
El compromiso de Axios demuestra que incluso proyectos open source maduros y ampliamente auditados son vulnerables a ataques sofisticados contra la cadena de suministro de software. Las organizaciones deberían incorporar este riesgo en su estrategia global de ciberseguridad, fortaleciendo las cuentas de mantenedores, monitorizando dependencias de terceros y revisando de forma continua sus procesos de DevSecOps. Invertir en visibilidad temprana, controles preventivos y respuesta coordinada es clave para reducir la superficie de ataque y limitar el alcance de futuras campañas similares.