⚠️ Incidente Pasado — 31 de Marzo, 2026. Si corriste npm install o npm update entre la tarde del 30 de marzo UTC y el 31 de marzo, revisa tus sistemas ahora. Ver pasos de remediación abajo.

✅ Historia Concluida — Atribución resuelta (UNC1069 / Sapphire Sleet — Corea del Norte/BlueNoroff), versiones maliciosas eliminadas, post-mortem del mantenedor publicado, vector de ingeniería social completamente confirmado. No se programan más actualizaciones. Última actualización: 7 de abril, 2026 15:00 UTC.

Actualizaciones

2026-04-07 15:00 UTCCierre Final: Vector de Ingeniería Social Confirmado como Llamada Falsa de Teams; Dependency Cooldown Emerge como Nueva Práctica Recomendada; Historia Concluida

Una semana después del ataque supply chain de axios, no han surgido nuevos incidentes materiales. Esta es la última actualización programada. El ataque está completamente remediado, la atribución está resuelta, y el proyecto axios se comprometió a cambios estructurales de seguridad. El issue #10636 de GitHub técnicamente sigue mostrando “Remediación en progreso” pero no se han divulgado nuevos detalles forenses o técnicos desde el 2 de abril.

  • Vector de ingeniería social completamente confirmado: llamada falsa de Microsoft Teams con señuelo ClickFix. El mecanismo exacto por el cual UNC1069 entregó el RAT a la máquina de jasonsaayman está confirmado vía el propio relato publicado de Saayman. Los atacantes clonaron la identidad de un fundador de empresa real, construyeron un workspace de Slack convincente con perfiles falsos del equipo, y agendaron una reunión en Microsoft Teams. Durante la llamada, Saayman fue solicitado a instalar un “componente de software faltante” — que era el RAT. Saayman confirmó: “Todo estaba muy bien coordinado, parecía legítimo y se hizo de manera profesional.” Este es un señuelo estilo ClickFix — el mismo patrón de ingeniería social documentado en el engagement de IR de FinTech concurrente de GTIG (reunión falsa de Zoom), aplicado vía Teams. Críticamente: el 2FA estaba activo en la cuenta de jasonsaayman y no hizo diferencia. Una vez que el RAT estaba corriendo en el dispositivo, toda autenticación basada en software fue eludida al cosechar credenciales directamente de la máquina — subrayando el hallazgo del post-mortem de que un token clásico npm de larga duración era la superficie de ataque real, no la capa de autenticación.

  • Nueva recomendación defensiva de Datadog: dependency cooldown. Datadog Security Labs introdujo el concepto de “dependency cooldown” en su análisis post-incidente. La mayoría de gestores de paquetes modernos soportan una configuración que omite versiones de paquetes publicadas recientemente por un período configurable (ej. 24–48 horas), dándole tiempo a la comunidad de seguridad para marcar versiones comprometidas antes de que se propaguen a builds de producción. Si un cooldown hubiera estado en su lugar en el ecosistema, la ventana de exposición de 3 horas habría sido efectivamente cero para organizaciones con esta postura. Esto se suma a ignore-scripts=true como defensa estructural clave contra esta clase de ataque.

  • Nota de investigación actualizada de CSA publicada el 3 de abril. La Cloud Security Alliance publicó una nota de investigación expandida: Axios Poisoned: UNC1069’s npm Supply Chain Playbook . Encuadre estratégico clave: la nota destaca que UNC1069 ha deliberadamente cambiado de atacar ejecutivos de criptomonedas directamente a atacar mantenedores de open source — cuyas credenciales de confianza en el registro de paquetes proporcionan acceso escalable y silencioso a pipelines empresariales sin requerir intrusiones separadas en cada organización downstream. El ataque de axios se caracteriza como una evolución táctica, no una anomalía.

  • Grabación del town hall de StepSecurity ahora pública. El briefing comunitario del 1 de abril está archivado y disponible en YouTube: https://youtu.be/3Hku_svFvos .

  • npm todavía no tiene opción de aplicación de solo-OIDC a nivel de registro. Una brecha sistémica clave señalada en el hilo del issue #10636 de GitHub: npm actualmente no ofrece mecanismo para aplicar publicación solo-OIDC a nivel de registro, a diferencia de crates.io. La adopción planificada de OIDC por el proyecto axios aborda el riesgo a nivel de proyecto, pero el modelo de token heredado de npm sigue siendo una vulnerabilidad sistémica para el ecosistema más amplio. No se ha anunciado ningún timeline de npm/GitHub para aplicación a nivel de registro.

  • Sin acción de aplicación de ley. No se han anunciado arrestos, acusaciones, sanciones o acciones diplomáticas relacionadas con UNC1069/Sapphire Sleet hasta el 7 de abril de 2026. El actor de amenaza sigue activo.

  • Sin CVE asignado. El ataque específico de UNC1069 a axios (SILKBELL/WAVESHAPER.V2) sigue sin CVE hasta esta actualización final. Los escáneres de vulnerabilidades basados en CVE no lo detectarán.


2026-04-02 19:00 UTCPost-Mortem Oficial del Mantenedor de Axios Publicado: Ingeniería Social + RAT en la PC del Mantenedor fue la Causa Raíz; Prometidas Releases Inmutables con OIDC

Jason Saayman (jasonsaayman) publicó el esperado post-mortem oficial en GitHub issue #10636 . Esta es la primera declaración formal del mantenedor de axios explicando cómo ocurrió el compromiso.

  • Causa raíz confirmada: ingeniería social dirigida + malware RAT en la PC del mantenedor. El post-mortem indica que el atacante obtuvo acceso a la PC del mantenedor principal a través de una “campaña de ingeniería social dirigida y malware RAT”. Esto les dio acceso a credenciales de cuenta npm en el dispositivo. La campaña de ingeniería social comenzó aproximadamente 2 semanas antes del 31 de marzo.

  • El atacante eliminó activamente los reportes de la comunidad usando la cuenta comprometida. El post-mortem confirma: alrededor de las 01:00 UTC del 31 de marzo, miembros de la comunidad presentaron GitHub issues reportando el compromiso. El atacante, controlando aún la cuenta, eliminó esos issues. Así fue como el ataque retrasó brevemente la respuesta.

  • DigitalBrainJS acreditado como el respondedor clave. El colaborador @DigitalBrainJS abrió el PR #10591 a las 01:38 UTC — actuando a pesar de tener permisos menores que la cuenta comprometida — señaló los issues eliminados a la comunidad, y contactó directamente a npm.

  • Resolución: wipe completo del dispositivo y reset completo de credenciales en todas las plataformas. jasonsaayman confirma que esto incluye todas las cuentas sin importar la plataforma, tanto personales como en otras capacidades.

  • Cambios de seguridad comprometidos por el proyecto axios:

    • Setup de release inmutable — las futuras releases no serán publicables desde cuentas personales
    • Flujo OIDC para publicación en npm — cierra la brecha donde una credencial robada podía eludir el pipeline CI/CD completamente
    • Actualizaciones a todos los GitHub Actions para adoptar mejores prácticas
    • Colaboración con el OpenJS Security Working Group

2026-04-02 16:00 UTCGoogle GTIG Publica Reporte Completo de Capacidades Expandidas de UNC1069: SILENCELIFT, DEEPBREATH, CHROMEPUSH; Señuelos de Deepfake IA en Zoom; Reflexión sobre Seguridad de Dependencias en la Comunidad

  • Tres nuevas familias de malware de UNC1069 nombradas: GTIG/Mandiant nombra formalmente tres nuevas herramientas desplegadas en las últimas operaciones de UNC1069 — SILENCELIFT, DEEPBREATH y CHROMEPUSH — junto al downloader previamente documentado SUGARLOADER.

  • Señuelos deepfake con IA de Zoom confirmados en operaciones activas. El engagement de IR de Mandiant documenta a una víctima siendo presentada con un video deepfake del CEO de una empresa de criptomonedas durante una reunión falsa de Zoom. Luego se usó un señuelo “ClickFix” para ejecutar un ataque de ClickFix — la víctima fue solicitada a correr comandos de “solución de problemas” que iniciaron la cadena de infección.

  • UNC1069 usa activamente Gemini para desarrollo de tooling e investigación operacional. GTIG confirma que UNC1069 usa Google Gemini para asistir con desarrollo de herramientas, reconocimiento e investigación operacional.


2026-04-02 13:00 UTCMicrosoft Atribuye Formalmente a “Sapphire Sleet”; Publicados Hashes SHA-256 Adicionales; Especificada Clave de Registro de Persistencia en Windows

  • Atribución de Microsoft: Sapphire Sleet. El blog de Microsoft confirma que la misma infraestructura es operada por Sapphire Sleet, un actor de estado de Corea del Norte activo desde al menos marzo de 2020.

  • Nuevos hashes SHA-256 publicados por Microsoft:

    • Binario macOS (/Library/Caches/com.apple.act.mond): 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
    • RAT PowerShell Windows (6202033.ps1): ed8560c1ac7ceb6983ba995124d5917dc1a00288912387a6389296637d5f815c y 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101
    • Stage Windows (%PROGRAMDATA%\wt.exe): f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cd
    • RAT Python Linux (/tmp/ld.py): fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
  • Clave de registro de persistencia Windows especificada: Microsoft confirma que el RAT Windows establece persistencia vía HKCU:\Software\Microsoft\Windows\CurrentVersion\Run\MicrosoftUpdate apuntando a %PROGRAMDATA%\system.bat.


2026-04-01 19:00 UTCRecap Post-Briefing de SANS: ~600K Installs Estimados; TeamPCP Pudo Haber Vendido Acceso a UNC1069; Se Advierte que el Fallout de Credenciales Durará “Meses y Más”

  • ~600,000 installs estimados durante la ventana de exposición. SANS estima aproximadamente 600,000 installs de npm ocurrieron entre las 00:00 y ~03:15 UTC del 31 de marzo.

  • Teoría de monetización de TeamPCP: hipótesis de access broker. Josh Wright introdujo una hipótesis de trabajo de que TeamPCP puede estar funcionando como access broker — adquiriendo acceso inicial a infraestructura de toolchain de desarrolladores y luego vendiendo ese acceso a otros grupos de amenaza, incluyendo actores afiliados a UNC1069/DPRK.

  • Ed Skoudis: “Este ataque tiene piernas a largo plazo — meses y más.” El Presidente de SANS Ed Skoudis advirtió: las credenciales robadas — GitHub PATs, claves AWS, tokens Azure, tokens npm, claves SSH — dan acceso a sistemas downstream que aún no han sido descubiertos.


2026-04-01 16:00 UTCAtribución Formal de Google GTIG: UNC1069 (Corea del Norte/BlueNoroff); Malware Nombrado Oficialmente SILKBELL + WAVESHAPER.V2; Ataque de Axios Confirmado Separado de TeamPCP

  • Atribución GTIG: UNC1069 (nexo Corea del Norte, vinculado a BlueNoroff). Google atribuye esta actividad a UNC1069 basándose en: uso de WAVESHAPER.V2, overlaps de infraestructura, y el codename interno del RAT macOS macWebT mapeando directamente al módulo webT de BlueNoroff.

  • El ataque de axios NO es parte de TeamPCP. GTIG explícitamente declara que son un incidente no relacionado.

  • Nombres oficiales de malware ahora asignados:

    • SILKBELL — el dropper ofuscado de postinstall (setup.js) dentro de [email protected]
    • WAVESHAPER.V2 — el RAT multiplataforma desplegado por SILKBELL
  • Vector de compromiso identificado: token de acceso npm clásico de larga duración. El token clásico no requería confirmación de 2FA y no expiraba por defecto.

  • Alcance confirmado de Wiz: Wiz reporta que axios está presente en aproximadamente 80% de los entornos cloud y de código que monitorean. La ejecución observada del paquete malicioso ocurrió en 3% de los entornos afectados.

  • Tiempo de infección de 15 segundos. Desde el trigger de npm install hasta el RAT persistente implantado y el dropper auto-destruido — aproximadamente 15 segundos.


2026-04-01 13:00 UTCElastic Security Labs Publica Análisis Completo del RAT; Claves de Ofuscación del Dropper Reveladas; Persistencia Windows Sobrevive al Comando Kill

  • Ofuscación del dropper completamente decodificada. El esquema de codificación de dos capas en setup.js está confirmado: Capa 1 = reversión de string + decode Base64; Capa 2 = cifrado XOR usando clave OrDeR_7077 con índice dependiente de posición 7 * i² % 10.

  • Lenguajes de implementación de stage-2 confirmados por plataforma:

    • macOS: Binario C++ compilado (dropped a /Library/Caches/com.apple.act.mond)
    • Windows: Script PowerShell (ejecutado vía wt.exe renombrado; .ps1 transitorio en %TEMP%\6202033.ps1)
    • Linux: Script Python (ejecutado en /tmp/ld.py)
  • La persistencia Windows sobrevive al propio comando kill del RAT. El stage-2 Windows instala una clave de registro + archivo batch para persistencia. Cuando el atacante emite un comando kill, los artefactos de persistencia Windows no son eliminados.


2026-03-31 19:00 UTCAtribución de BlueNoroff/Lazarus Disputada; Análisis RE Completo Publicado; Segundo Dominio C2 Descubierto

  • Atribución competidora: BlueNoroff/Lazarus Group (confianza ALTA). El investigador N3mes1s evaluó confianza ALTA de atribución a BlueNoroff basándose en el codename interno macWebT, 9 IPs confirmadas de Lazarus en el mismo ASN, y el RAT macOS clasificado como NukeSped.

  • Segundo dominio C2 descubierto: callnrwise.com. Agrega a tus blocklists inmediatamente.

  • Microsoft creó familia de detección dedicada: Backdoor:Mac/Axios.A.

  • Reglas de detección ahora disponibles (YARA/Sigma/Suricata): 8 reglas YARA (100% de tasa de detección), 8 reglas Sigma, 11 reglas IDS Suricata/Snort. Publicadas en el mismo Gist.


2026-03-31 16:00 UTCAtribución: TeamPCP Confirmado; Huntress Observa 100+ Dispositivos Comprometidos

  • Atribución confirmada: TeamPCP. SANS, Huntress, Phoenix Security, Field Effect y SafeDep han evaluado independientemente este ataque como parte de la campaña supply chain de TeamPCP activa desde al menos el 1 de marzo de 2026.

  • La cadena de ataque precede a axios por semanas. Timeline de la campaña de TeamPCP:

    • 1 mar, 2026: Brecha inicial de la cuenta de servicio de Aqua Security (aqua-bot)
    • 19 mar: Tag malicioso v0.69.4 forzado en Trivy (76 de 77 tags de GitHub Actions envenenados)
    • 20 mar: Tokens npm robados armaron un gusano auto-propagante (CanisterWorm) que infectó 66+ paquetes npm
    • 22 mar: Imágenes Docker maliciosas pusheadas; 44 repositorios de Aqua Security desfigurados
    • 23 mar: Checkmarx KICS y AST GitHub Actions secuestrados
    • 24 mar: LiteLLM comprometido en PyPI (~95M descargas mensuales)
    • 27 mar: Biblioteca de comunicaciones Telnyx comprometida en PyPI
    • 31 mar (hoy): axios comprometido en npm — el objetivo más grande por volumen de descargas
  • C2 en blockchain — un primero mundial. TeamPCP usó un canister de Internet Computer Protocol (ICP) como mecanismo de C2 dead-drop — el primer abuso documentado de infraestructura blockchain descentralizada para command and control.


2026-03-31 13:00 UTCActualización de 6 horas

  • Takedown de npm confirmado completo. [email protected] y [email protected] fueron eliminados del registro aproximadamente a las 03:15 UTC. Ventana de exposición total: ~3 horas 19 minutos.
  • Nuevo IOC — IP C2 confirmada: El C2 resuelve a 142.11.206.73 en el puerto 8000.
  • Paquetes comprometidos adicionales encontrados: Snyk identificó al menos dos otros paquetes npm que enviaron el malicioso [email protected] como dependencia.
  • Avisos Snyk asignados: SNYK-JS-AXIOS-15850650 y SNYK-JS-PLAINCRYPTOJS-15850652.

Axios — el cliente HTTP más ampliamente usado en el ecosistema JavaScript con 100 millones de descargas semanales — fue comprometido hoy en uno de los ataques supply chain más sofisticados jamás documentados en un paquete npm top-10.

¿Qué es Axios?

Axios es el cliente HTTP de facto para JavaScript. Viene en prácticamente cualquier backend Node.js, frontend React y Vue, aplicación Electron, pipeline CI/CD y script de automatización que hace peticiones HTTP. Su ubicuidad es exactamente por qué este ataque importa — los desarrolladores no dudan antes de correr npm install axios. Es confianza a nivel de infraestructura.

Qué Pasó

El Secuestro de la Cuenta del Mantenedor

El atacante comprometió la cuenta npm de jasonsaayman — el mantenedor principal de axios. El primer movimiento fue cambiar el email registrado de la cuenta a [email protected] — una dirección ProtonMail anónima — bloqueando efectivamente al propietario legítimo de la recuperación.

Con credenciales en mano, el atacante eludió completamente el pipeline CI/CD de GitHub Actions de axios. Publicó directamente vía la CLI de npm sin tocar GitHub en absoluto. Sin commits. Sin tags. Sin pull requests.

Este es el insight clave: la seguridad CI/CD no ayuda si un atacante tiene credenciales npm válidas. El pipeline era seguro. La credencial no.

La Operación de Pre-Staging de 18 Horas

Esto no fue improvisado. El ataque fue pre-montado durante aproximadamente 18 horas antes del compromiso de axios:

Tiempo (UTC)Evento
30 mar, 05:57[email protected] publicado por [email protected] — señuelo limpio, copia completa de la fuente legítima de crypto-js, sin código malicioso
30 mar, 23:59[email protected] publicado — hook de postinstall malicioso agregado
31 mar, 00:21[email protected] publicado vía cuenta comprometida de jasonsaayman
31 mar, 01:00[email protected] publicado — inyección idéntica en la rama legacy 0.x

Cómo Funciona el Malware

Mecanismo de Inyección

Ninguna de las dos versiones contiene una sola línea de código malicioso dentro de axios mismo. En cambio, ambas versiones agregan [email protected] como dependencia de runtime — un paquete que nunca es importado en ningún lugar del codebase de axios.

Su único propósito es disparar el lifecycle hook de postinstall de npm: "postinstall": "node setup.js". En el momento en que corres npm install, setup.js se ejecuta a tu nivel de privilegio actual.

El Dropper

El dropper setup.js usa ofuscación de dos capas — cifrado XOR más codificación base64 — para ocultar las direcciones C2 y los strings de payload del análisis estático. En runtime:

  1. Detecta el sistema operativo
  2. Contacta el servidor C2 en sfrclak.com:8000
  3. Descarga un payload de segunda etapa específico por plataforma
  4. Establece persistencia
  5. Auto-destruye — elimina setup.js, reemplaza package.json con un stub limpio

Payloads Específicos por Plataforma

macOS:

  • RAT dropped en /Library/Caches/com.apple.act.mond

Windows:

  • Payload escrito en %PROGRAMDATA%\wt.exe

Linux:

  • Dropper Python ejecutado en /tmp/ld.py vía nohup

Quién Está Afectado

Estás potencialmente afectado si:

  • Corriste npm install, npm update, o npm ci entre ~30 mar 23:59 UTC y la tarde del 31 mar UTC
  • Tu package-lock.json o yarn.lock resuelve a [email protected] o [email protected]
  • Tu pipeline CI/CD instaló dependencias durante esta ventana
  • Tienes plain-crypto-js en algún lugar de tu árbol de dependencias

Remediación Inmediata

Paso 1: Verifica si estás afectado

# Verifica package-lock.json
grep -E "axios.*(1\.14\.1|0\.30\.4)|plain-crypto-js" package-lock.json

# Verifica si el paquete malicioso fue instalado
ls node_modules/plain-crypto-js/ 2>/dev/null

# Verifica yarn.lock
grep -E "axios.*(1\.14\.1|0\.30\.4)" yarn.lock

Paso 2: Verifica artefactos de infección

# macOS
ls /Library/Caches/com.apple.act.mond 2>/dev/null

# Windows (PowerShell)
Test-Path "$env:PROGRAMDATA\wt.exe"

# Linux
ls /tmp/ld.py 2>/dev/null

Paso 3: Verifica logs de red

Busca conexiones salientes a:

  • sfrclak.com (servidor C2)
  • 142.11.206.73 (IP C2 — bloquea esto directamente)
  • Puerto 8000
  • Patrón URL completo: http://sfrclak.com:8000/6202033

Paso 4: Degrada a versiones seguras

# Para usuarios 1.x
npm install [email protected]

# Para usuarios 0.x  
npm install [email protected]

Paso 5: Si encuentras evidencia de compromiso

  • Asume compromiso total del sistema — el RAT tenía ejecución de comandos arbitraria
  • Rota todas las credenciales en o accesibles desde máquinas afectadas: claves API, claves SSH, credenciales cloud, tokens, contraseñas de base de datos
  • Reconstruye los runners CI/CD afectados — no intentes limpiarlos
  • Revisa el historial git por commits inesperados de sistemas CI
  • Audita los logs de acceso por movimiento lateral desde máquinas afectadas
  • Contacta a tu equipo de seguridad si esto es un entorno corporativo

El Panorama General: Confianza en el Supply Chain

Este ataque sigue un patrón que hemos visto repetidamente:

  • SolarWinds (2020): Compromiso del sistema de build
  • XZ Utils (2024): Ingeniería social a largo plazo de un mantenedor
  • Axios (2026): Compromiso de credenciales de un mantenedor de confianza

El hilo común: la confianza en el proceso de release es la superficie de ataque.

Defensas que habrían detectado o limitado esto:

  • Aplicación de 2FA en npm — 2FA obligatorio para publicación de paquetes populares
  • Logs de transparencia de paquetes — attestaciones criptográficas de publicación vinculadas a CI/CD
  • Pinning de dependencias — pinear versiones exactas en package-lock.json
  • Bloqueo de scripts postinstallnpm config set ignore-scripts true
  • Socket / Snyk en CI — Socket detectó esto en 6 minutos

Estado Actual

Al 7 de abril de 2026 15:00 UTC:

  • Versiones maliciosas eliminadas de npm[email protected] y [email protected] despublicados a ~03:15 UTC 31 mar
  • plain-crypto-js completamente eliminado — stub de seguridad publicado a las 04:26 UTC 31 mar
  • Ventana de exposición total: ~3h 19min (versiones axios); ~4h 27min ([email protected] ); ~600,000 installs estimados durante la ventana (SANS)
  • Atribución RESUELTA: UNC1069 / Sapphire Sleet (Corea del Norte / BlueNoroff / Lazarus Group)
  • El ataque de axios NO ESTÁ RELACIONADO con TeamPCP
  • Familias de malware nombradas oficialmente: SILKBELL (dropper) y WAVESHAPER.V2 (RAT)
  • Vector de compromiso: Token de acceso npm clásico de larga duración
  • Post-mortem del mantenedor de axios publicado: jasonsaayman publicó GitHub issue #10636 el 2 de abril
  • Versiones seguras: [email protected] (1.x) y [email protected] (0.x)
  • Dependency cooldown ahora recomendado como defensa estructural
  • Grabación del town hall de StepSecurity: YouTube: https://youtu.be/3Hku_svFvos
  • Historia concluida. No se publicarán más actualizaciones.

Fuentes: Datadog Security Labs · CSA Research Note (3 abr, 2026) · StepSecurity Town Hall (YouTube) · Post-Mortem de jasonsaayman · StepSecurity · Socket · Snyk · The Register · SANS · Elastic Security Labs · Google GTIG — Atribución UNC1069 · Microsoft — Atribución Sapphire Sleet


Sigue @RedTeamGuides para actualizaciones en vivo sobre este incidente y futuras amenazas en el supply chain.