Diferencia entre revisiones de «Campaña plain-crypto-js»
(Descripción de la Campaña plain-crypto-js) |
Sin resumen de edición |
||
| Línea 268: | Línea 268: | ||
=== Etiquetas / Categorías === | === Etiquetas / Categorías === | ||
<code>axios</code> <code>npm</code> <code>cadena-de-suministro</code> <code>plain-crypto-js</code> <code>rat</code> <code>multiplataforma</code> <code>bluenoroff</code> <code>unc1069</code> <code>corea-del-norte</code> <code>sfrclak</code> <code>t1195</code> <code>t1078</code> <code>t1059</code> <code>t1027</code> <code>t1547</code> <code>seguridad-en-desarrollo</code> <code>javascript</code> <code>nodejs</code> <code>ci/cd</code> <code>dropper</code> <code>post-install</code> | <code>axios</code> <code>npm</code> <code>cadena-de-suministro</code> <code>plain-crypto-js</code> <code>rat</code> <code>multiplataforma</code> <code>bluenoroff</code> <code>unc1069</code> <code>corea-del-norte</code> <code>sfrclak</code> <code>t1195</code> <code>t1078</code> <code>t1059</code> <code>t1027</code> <code>t1547</code> <code>seguridad-en-desarrollo</code> <code>javascript</code> <code>nodejs</code> <code>ci/cd</code> <code>dropper</code> <code>post-install</code> | ||
[[Categoría:CAMPAÑAS|CAMPAÑAS]] | |||
Revisión actual - 18:36 1 abr 2026
Campaña plain-crypto-js; es el nombre que recibe un ataque a la cadena de suministro de software ocurrido el 31 de marzo de 2026, en el que actores maliciosos publicaron dos versiones envenenadas del popular paquete Axios en el registro npm. El incidente es significativo por la enorme base de usuarios del paquete Axios (más de 100 millones de descargas semanales), la sofisticación de la técnica utilizada (inyección de una dependencia fraudulenta con scripts post-install), y su capacidad para desplegar un RAT (Remote Access Trojan) multiplataforma en sistemas Windows, macOS y Linux. El ataque destaca además por la posible atribución a un actor vinculado a Corea del Norte (BlueNoroff/UNC1069) y por las implicaciones de seguridad en entornos de CI/CD.
Nombres Alternativos / Aliases
- Ataque a la Cadena de Suministro de Axios (Nombre mediático)
- Compromiso de npm de Axios (Por el repositorio afectado)
- Compromiso del Paquete Axios en npm (2026)
- Infección RAT multiplataforma en Axios (Por el payload)
Fecha de Detección / Actividad
- Publicación de Versiones Maliciosas: 31 de marzo de 2026.
axios@1.14.1: 00:21 UTCaxios@0.30.4: 01:00 UTC
- Ventana de Exposición: Aproximadamente 3 horas.
- Detección y Eliminación: 31 de marzo de 2026 (tras reportes de múltiples firmas de seguridad).
- Divulgación Pública: 31 de marzo de 2026 (reportes de Endor Labs, Socket, Aikido, StepSecurity, BleepingComputer, Hispasec).
- Estado: Contenido. Las versiones maliciosas han sido eliminadas del registro npm. Se recomienda a los usuarios auditar sus entornos y rotar credenciales.
Actor de Amenaza (Atribución)
- Nombre del Grupo: No hay atribución definitiva. Se investigan dos líneas:
- BlueNoroff (UNC1069): John Hultquist, de Google Threat Intelligence Group (GTIG), señala que detrás del ataque podría estar un actor norcoreano (UNC1069) que tradicionalmente ha atacado exchanges de criptomonedas, desarrolladores en instituciones financieras y empresas de alta tecnología. El nombre del RAT en macOS (
macWebT) coincide con malware utilizado por BlueNoroff en campañas de 2023. - No es TeamPCP: Investigadores de seguridad descartan la autoría de TeamPCP, ya que las técnicas y el objetivo no coinciden con las campañas previas de ese grupo (enfocadas en robo de credenciales en CI/CD con dominios typosquat).
- BlueNoroff (UNC1069): John Hultquist, de Google Threat Intelligence Group (GTIG), señala que detrás del ataque podría estar un actor norcoreano (UNC1069) que tradicionalmente ha atacado exchanges de criptomonedas, desarrolladores en instituciones financieras y empresas de alta tecnología. El nombre del RAT en macOS (
- Tipo de Actor: Posible grupo de cibercriminales con motivación financiera (robo de criptomonedas, acceso a sistemas financieros) y posible respaldo estatal (Corea del Norte).
- Motivación: Financiera. El despliegue de un RAT sugiere el objetivo de mantener acceso persistente a sistemas de desarrolladores y entornos de CI/CD para posterior robo de secretos, tokens de despliegue, o acceso a infraestructura crítica.
- Sofisticación: Alta. El ataque demostró planificación (la dependencia maliciosa fue preparada 18 horas antes), conocimiento del ecosistema npm, técnicas de evasión (autodestrucción del dropper, restauración del package.json limpio), y compatibilidad multiplataforma.
Resumen Ejecutivo
El ataque al paquete Axios comenzó con el compromiso de la cuenta npm de Jason Saayman, el mantenedor principal de Axios. Los atacantes también habrían obtenido control de su cuenta de GitHub, cambiando el correo electrónico asociado a ifstap@proton.me y eliminando reportes sobre el incidente.
Una vez con acceso a la cuenta, los atacantes publicaron dos versiones maliciosas de Axios (1.14.1 y 0.30.4) en el registro npm. En lugar de modificar directamente el código de Axios, inyectaron una dependencia fraudulenta en el archivo package.json: plain-crypto-js@^4.2.1. Esta dependencia no tenía código malicioso visible en su superficie, sino que ejecutaba un script post-install al ser instalada.
El script post-install lanzaba un dropper ofuscado (setup.js) que contactaba con un servidor de comando y control (C2) en el dominio sfrclak.com. Dependiendo del sistema operativo detectado, el dropper descargaba e instalaba una carga útil específica:
- Windows: Utilizaba VBScript y PowerShell para copiar PowerShell a
%PROGRAMDATA%\wt.exe(evasión y persistencia) y ejecutar un script malicioso. - macOS: Empleaba AppleScript para descargar un binario a
/Library/Caches/com.apple.act.mond, hacerlo ejecutable y lanzarlo en segundo plano. - Linux: Descargaba un payload en Python a
/tmp/ld.pyy lo ejecutaba connohuppara que corra desacoplado.
En todos los casos, el payload final era un RAT (Remote Access Trojan) con capacidades de ejecución remota de comandos, enumeración de directorios, descarga y ejecución de binarios codificados en base64, y persistencia en el sistema.
Para dificultar el análisis forense, el dropper se autodestruía tras la infección y reemplazaba el package.json modificado por una copia limpia, dejando pocos rastros visibles. La ventana de exposición fue de aproximadamente tres horas, pero dada la popularidad de Axios (más de 100 millones de descargas semanales), el número de sistemas comprometidos podría ser significativo, especialmente en entornos de CI/CD que instalan dependencias automáticamente.
Vectores de Ataque
- Compromiso de Cuenta de Mantenedor (T1078): El punto de entrada fue la cuenta npm de Jason Saayman, principal mantenedor de Axios. Los atacantes obtuvieron acceso a sus credenciales (probablemente mediante phishing, reutilización de contraseñas o robo de sesión) y también comprometieron su cuenta de GitHub asociada.
- Envenenamiento de Dependencias (T1195.001): En lugar de modificar el código de Axios, los atacantes añadieron una dependencia maliciosa (
plain-crypto-js) alpackage.json. Esta técnica es más sutil que modificar el código principal y puede evadir revisiones superficiales. - Scripts Post-Install (T1059): El paquete
plain-crypto-jscontenía un scriptpost-installque se ejecuta automáticamente durante la instalación sin requerir interacción del usuario. - Oficuscación y Autodestrucción (T1027, T1070): El dropper estaba ofuscado y se eliminaba a sí mismo tras la infección, restaurando el
package.jsonoriginal para complicar la detección posterior.
Técnicas, Tácticas y Procedimientos (TTPs)
| Táctica (MITRE ATT&CK) | Técnica | Descripción / Implementación |
|---|---|---|
| Acceso Inicial (TA0001) | Valid Accounts (T1078) | Compromiso de la cuenta npm y GitHub del mantenedor Jason Saayman. |
| Acceso Inicial (TA0001) | Supply Chain Compromise (T1195.001) | Publicación de versiones maliciosas de Axios en npm con dependencia fraudulenta. |
| Ejecución (TA0002) | Command and Scripting Interpreter (T1059) | Script post-install de plain-crypto-js ejecuta dropper ofuscado. En Windows: PowerShell y VBScript; en macOS: AppleScript; en Linux: Python.
|
| Persistencia (TA0003) | Boot or Logon Autostart Execution (T1547) | Windows: Copia de PowerShell a wt.exe en %PROGRAMDATA%. macOS: Binario en /Library/Caches/.
|
| Evasión de Defensas (TA0005) | Obfuscated Files or Information (T1027) | Dropper ofuscado; payloads entregados en base64. |
| Evasión de Defensas (TA0005) | Indicator Removal on Host (T1070) | Autodestrucción del dropper y restauración del package.json original tras la infección.
|
| Defensa en Evasión (TA0005) | Masquerading (T1036) | El binario en Windows se disfraza como wt.exe (Windows Terminal) para evadir sospechas.
|
| Command and Control (TA0011) | Application Layer Protocol (T1071) | Comunicación con C2 sfrclak.com vía HTTP para descargar payloads.
|
| Collection (TA0009) | Data from Local System (T1005) | RAT con capacidad de enumerar directorios y robar información del sistema. |
| Command and Control (TA0011) | Remote Access Software (T1219) | Despliegue de RAT multiplataforma con capacidades de ejecución remota de comandos. |
Flujo de Ataque (Kill Chain)
- Reconocimiento e Inteligencia: Los atacantes identifican a Jason Saayman como mantenedor principal de Axios y preparan la infraestructura maliciosa (dominio C2
sfrclak.com, paqueteplain-crypto-jspreparado 18 horas antes). - Compromiso de Cuenta: Obtienen acceso a la cuenta npm y GitHub de Saayman mediante robo de credenciales.
- Publicación de Paquetes Maliciosos: Publican
axios@1.14.1yaxios@0.30.4en npm, conplain-crypto-jsañadido como dependencia. - Infección de Usuarios: Desarrolladores y pipelines de CI/CD que instalan estas versiones de Axios ejecutan el script
post-installde la dependencia maliciosa. - Dropping y Fingerprinting: El dropper (
setup.js) se ejecuta, detecta el sistema operativo y contacta al C2. - Descarga de Payload Específico: Según el SO, descarga el RAT correspondiente (Windows: PowerShell script; macOS: binario; Linux: Python script).
- Despliegue del RAT: El payload se instala, establece persistencia y abre un canal de comunicación con el atacante.
- Autodestrucción: El dropper se elimina y restaura el
package.jsonlimpio para dificultar la detección forense. - Acciones Posteriores: El atacante utiliza el RAT para ejecutar comandos, enumerar sistemas, robar secretos y potencialmente moverse lateralmente.
Infraestructura Utilizada
| Tipo | Ejemplos / Características | Propósito |
|---|---|---|
| Registro de Paquetes | npm (Node Package Manager) | Distribución de las versiones maliciosas de Axios. |
| Dominio C2 | sfrclak.com
|
Servidor de comando y control para entregar los payloads del RAT. |
| Paquete Malicioso | plain-crypto-js@^4.2.1
|
Dependencia fraudulenta que contenía el script post-install. |
| Cuentas Comprometidas | Jason Saayman (npm, GitHub) | Cuentas utilizadas para publicar las versiones maliciosas. |
Objetivos y Sectores Atacados
- Objetivo Principal: Desarrolladores y equipos de DevOps que utilizan Axios en sus proyectos Node.js, así como entornos de CI/CD que instalan dependencias automáticamente.
- Sectores Afectados: Organizaciones de todos los sectores que utilizan Axios (prácticamente cualquier proyecto JavaScript moderno). Especialmente crítico para empresas tecnológicas, instituciones financieras, exchanges de criptomonedas (históricamente objetivo de BlueNoroff), y cualquier organización con pipelines de despliegue automatizados.
- Sistemas Afectados: Estaciones de trabajo de desarrolladores (Windows, macOS, Linux) y servidores de CI/CD que ejecutaron las versiones comprometidas.
Impacto y Riesgo
- Nivel de Riesgo: Crítico para cualquier sistema que instaló las versiones maliciosas de Axios durante la ventana de exposición.
- Impacto en la Confidencialidad: Alto. El RAT tiene capacidad de enumerar archivos, robar secretos (tokens, claves SSH, credenciales en la nube) y exfiltrarlos al atacante.
- Impacto en la Integridad: Alto. El atacante puede ejecutar comandos arbitrarios en los sistemas comprometidos, modificar configuraciones, inyectar código en pipelines de CI/CD, o alterar artefactos de build.
- Impacto en la Disponibilidad: Potencial. El atacante podría utilizar el acceso para desplegar ransomware o causar interrupciones.
- Impacto Financiero: Robo de criptomonedas si se comprometen exchanges o wallets, costos de respuesta a incidentes, rotación masiva de secretos, y pérdida de confianza en la cadena de suministro.
Recomendaciones de Mitigación
Recomendaciones Técnicas (Mitigación Inmediata)
- Auditoría de Dependencias: Revisar archivos
package-lock.json,yarn.lockypnpm-lock.yamlen busca de las versiones maliciosas:axios@1.14.1axios@0.30.4plain-crypto-js@4.2.1o cualquier versión de este paquete.
- Actualizar a Versiones Limpias: Si se detectan las versiones afectadas, actualizar inmediatamente a:
axios@1.14.0(para la rama 1.x)axios@0.30.3(para la rama 0.x)- O a cualquier versión posterior confirmada como segura.
- Asumir Compromiso y Rotar Credenciales: En sistemas donde se ejecutaron las versiones maliciosas, asumir que todos los secretos accesibles (tokens de GitHub, credenciales de nube, claves SSH, variables de entorno) están comprometidos. Rotar todos ellos inmediatamente.
- Búsqueda de Artefactos Maliciosos:
- Windows: Buscar
wt.exeen%PROGRAMDATA%. Verificar procesos PowerShell y VBScript anómalos. - macOS: Buscar
/Library/Caches/com.apple.act.mond. Revisar ejecuciones de AppleScript no autorizadas. - Linux: Buscar
/tmp/ld.pyy procesos Python connohup.
- Windows: Buscar
- Bloqueo de Red: Bloquear el tráfico hacia
sfrclak.comy monitorear conexiones salientes a este dominio. - Revisión de Logs de CI/CD: Analizar logs de instalación de dependencias entre el 31 de marzo a las 00:21 UTC y la eliminación del paquete, en busca de referencias a las versiones afectadas.
Recomendaciones Preventivas
- Fijar Versiones: Utilizar versiones específicas de paquetes en lugar de rangos (
^o~). Usar lockfiles (package-lock.json) y auditar cambios en ellos. - Verificación de Procedencia: Exigir publicación de paquetes con OIDC (OpenID Connect) y verificar que exista correspondencia con commits en GitHub. Las versiones maliciosas de Axios no tenían OIDC ni commits coincidentes, lo que debería haber activado alertas.
- Análisis de Scripts Post-Install: Monitorear y restringir la ejecución de scripts
post-installen entornos de CI/CD. Considerar el uso denpm install --ignore-scriptsen pipelines donde sea seguro. - Principio de Mínimo Privilegio: Los tokens utilizados en CI/CD deben tener los permisos mínimos necesarios y ser rotados frecuentemente.
- Detección en Tiempo de Ejecución: Implementar herramientas que detecten comportamientos anómalos en los runners de CI, como ejecución de scripts PowerShell no esperados o conexiones a dominios recién registrados.
Herramientas de Detección
- SCA (Software Composition Analysis): Herramientas como Snyk, Socket, Endor Labs, y Aikido detectan y alertan sobre versiones maliciosas conocidas en dependencias.
- Análisis de Lockfiles: Revisar cambios en
package-lock.jsonpara detectar la introducción de dependencias no esperadas comoplain-crypto-js. - EDR (Endpoint Detection and Response): Soluciones EDR pueden detectar la creación de
wt.exeen%PROGRAMDATA%, la ejecución deAppleScriptno autorizada, o la presencia de scripts Python en/tmp/. - NDR (Network Detection and Response): Monitorear conexiones salientes a
sfrclak.como patrones de tráfico anómalos desde runners de CI.
Indicadores de Compromiso (IOCs)
Paquetes y Versiones
| Tipo | Indicador |
|---|---|
| Paquete npm | axios@1.14.1 (malicioso)
|
| Paquete npm | axios@0.30.4 (malicioso)
|
| Dependencia Maliciosa | plain-crypto-js@^4.2.1 (cualquier versión)
|
Dominios e IPs
| Tipo | Indicador |
|---|---|
| Dominio C2 | sfrclak.com
|
Artefactos en Sistema
| Sistema | Ruta / Artefacto |
|---|---|
| Windows | %PROGRAMDATA%\wt.exe
|
| Windows | Procesos: VBScript y PowerShell anómalos |
| macOS | /Library/Caches/com.apple.act.mond
|
| macOS | Procesos: AppleScript no autorizado |
| Linux | /tmp/ld.py
|
| Linux | Procesos: Python con nohup
|
Cuentas Comprometidas
| Plataforma | Cuenta |
|---|---|
| npm | Jason Saayman (mantenedor de Axios) |
| GitHub | Jason Saayman (correo cambiado a ifstap@proton.me)
|
Referencias y Fuentes
- Hispasec / Una Al Día. (2026, Marzo 31). Versiones maliciosas de Axios en npm distribuyen un RAT multiplataforma mediante una dependencia fraudulenta.
- BleepingComputer. (2026, Marzo 31). Hackers compromise Axios npm package to drop cross-platform malware. (Bill Toulas).
- Endor Labs. (2026, Marzo 31). Axios npm Package Compromise Analysis.
- Socket. (2026, Marzo 31). Axios Supply Chain Attack: plain-crypto-js Dependency.
- Aikido Security. (2026, Marzo 31). Malicious axios versions 1.14.1 and 0.30.4 on npm.
- StepSecurity. (2026, Marzo 31). Axios npm Package Compromise Report.
- OpenSourceMalware Research Community. (2026, Marzo 31). Axios npm account compromise.
- MITRE ATT&CK Framework: Mapeo de TTPs (T1195, T1078, T1059, T1547, T1027, T1070).
Historial de Revisiones
| Fecha | Versión | Autor | Cambios Realizados |
|---|---|---|---|
| 2026-04-01 | 1.0 | Análisis Colectivo | Creación inicial de la entrada basada en reportes de Hispasec, BleepingComputer, Endor Labs, Socket, Aikido y StepSecurity sobre el compromiso del paquete Axios en npm. |
Etiquetas / Categorías
axios npm cadena-de-suministro plain-crypto-js rat multiplataforma bluenoroff unc1069 corea-del-norte sfrclak t1195 t1078 t1059 t1027 t1547 seguridad-en-desarrollo javascript nodejs ci/cd dropper post-install