⚠️ Incidente Pasado — 31 de Marzo, 2026. Si corriste
npm installonpm updateentre 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 UTC — Cierre 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=truecomo 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 UTC — Post-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 UTC — Google 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 UTC — Microsoft 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):ed8560c1ac7ceb6983ba995124d5917dc1a00288912387a6389296637d5f815cy617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 - Stage Windows (
%PROGRAMDATA%\wt.exe):f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cd - RAT Python Linux (
/tmp/ld.py):fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
- Binario macOS (
Clave de registro de persistencia Windows especificada: Microsoft confirma que el RAT Windows establece persistencia vía
HKCU:\Software\Microsoft\Windows\CurrentVersion\Run\MicrosoftUpdateapuntando a%PROGRAMDATA%\system.bat.
2026-04-01 19:00 UTC — Recap 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 UTC — Atribució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
macWebTmapeando directamente al módulowebTde 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
- SILKBELL — el dropper ofuscado de postinstall (
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 installhasta el RAT persistente implantado y el dropper auto-destruido — aproximadamente 15 segundos.
2026-04-01 13:00 UTC — Elastic 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.jsestá confirmado: Capa 1 = reversión de string + decode Base64; Capa 2 = cifrado XOR usando claveOrDeR_7077con índice dependiente de posición7 * 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.exerenombrado;.ps1transitorio en%TEMP%\6202033.ps1) - Linux: Script Python (ejecutado en
/tmp/ld.py)
- macOS: Binario C++ compilado (dropped a
La persistencia Windows sobrevive al propio comando
killdel RAT. El stage-2 Windows instala una clave de registro + archivo batch para persistencia. Cuando el atacante emite un comandokill, los artefactos de persistencia Windows no son eliminados.
2026-03-31 19:00 UTC — Atribució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 UTC — Atribució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.4forzado 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
- 1 mar, 2026: Brecha inicial de la cuenta de servicio de Aqua Security (
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 UTC — Actualizació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:
- Detecta el sistema operativo
- Contacta el servidor C2 en
sfrclak.com:8000 - Descarga un payload de segunda etapa específico por plataforma
- Establece persistencia
- Auto-destruye — elimina
setup.js, reemplazapackage.jsoncon 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.pyvíanohup
Quién Está Afectado
Estás potencialmente afectado si:
- Corriste
npm install,npm update, onpm cientre ~30 mar 23:59 UTC y la tarde del 31 mar UTC - Tu
package-lock.jsonoyarn.lockresuelve a[email protected]o[email protected] - Tu pipeline CI/CD instaló dependencias durante esta ventana
- Tienes
plain-crypto-jsen 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 postinstall —
npm 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.
