Ecosistema npm / Cadenas de Suministro — ChainDrop: Gusano npm Autopropagable con Resolución de C2 en Ethereum (N/A)

Fecha de publicación: 6 de agosto de 2026
Categoría: Supply Chain Attacks / Malware Analysis

Introducción

El 6 de agosto de 2026, investigadores de Unit 42 (Palo Alto Networks) revelaron el descubrimiento de ChainDrop, un sofisticado gusano para el ecosistema de paquetes Node Package Manager (npm) capaz de autopropagarse. Este malware logró infectar más de 400 paquetes legítimos —incluyendo dependencias de alta descarga como keyv y cacheable-request— que acumulan cientos de millones de descargas semanales. La amenaza compromete estaciones de trabajo de desarrolladores, entornos de integración continua (CI), infraestructura en nube y usuarios finales, robando credenciales de autenticación, llaves SSH, tokens de GitHub/npm y extrayendo secretos directamente de la memoria de los ejecutores de GitHub Actions para republicar de forma automática versiones maliciosas sin alterar la funcionalidad legítima del software.

¿Qué es ChainDrop? (Análisis General)

ChainDrop no es un simple troyano de descarga estática; opera como un gusano de cadena de suministro con un diseño modular y altamente resiliente. Su propósito principal es cosechar credenciales y propagarse de manera autónoma utilizando los propios tokens de publicación robados de las cuentas de desarrolladores o repositorios comprometidos.

Dado que el ataque opera manipulando scripts de ciclo de vida del gestor de paquetes y aprovechando runtimes portátiles (como Bun) junto con contratos inteligentes en la blockchain de Ethereum para la gestión de infraestructura de Comando y Control (C2), representa una evolución severa en las tácticas de amenazas a la cadena de suministro de software de código abierto.

  • Clasificación CWE (Estimación razonada):
    • CWE-506: Embedded Malicious Code (Código Malicioso Incrustado).
    • CWE-829: Inclusion of Functionality from Untrusted Control Sphere (Inclusión de Funcionalidades desde Esfera de Control No Confiable).
  • Puntuación CVSS v3.1 (Estimación razonada): 9.8 (Crítico)
  • Vector CVSS v3.1 (Estimación razonada): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

¿Cómo funciona? (Análisis Técnico)

El mecanismo de infección y operación de ChainDrop destaca por su complejidad y múltiples fases de ejecución:

  • Flujo Inicial e Infección: El paquete malicioso contiene el código SDK legítimo pero incorpora dos archivos adicionales de nivel superior y un comando preinstall en su archivo package.json. Este comando invoca a setup.mjs, un script que verifica si el runtime de JavaScript Bun está presente en el PATH. Si no se encuentra, descarga la versión 1.3.13 desde el repositorio oficial de Oven (utilizando Bun como un vehículo de ejecución portátil y legítimo). Posteriormente, alimenta a Bun con una carga útil ofuscada de 727 KB (math_init.js) comprimida en dos líneas.
  • Filtros Ambientales y Evasión: Antes de recolectar información, el gusano evalúa si se ejecuta en un entorno de CI (ejecutándose en línea y generando registros visibles) o en una máquina local (desacoplándose a un proceso en segundo plano con _NODE_RUNTIME_INIT=1). Asimismo, incluye un mecanismo de verificación de localización que aborta su ejecución si detecta un host con configuración en idioma ruso.
  • Cosecha Masiva de Datos: El proceso en segundo plano realiza un barrido integral del sistema infectado para extraer credenciales de la nube (consultando endpoints de metadatos de plataformas IAM), herramientas de desarrollo (Docker, Helm, Git, PyPI, RubyGems, Terraform, Vault, llaves SSH), herramientas de asistencia de código por IA y archivos de configuración general (.env, historiales de shell, carteras de criptomonedas).
  • Scraping de Memoria en CI: Mediante un script auxiliar de Python cifrado en la carga útil, el gusano localiza el proceso Runner.Worker en ejecutores de GitHub Actions, abriendo /proc/<pid>/maps y /proc/<pid>/mem para buscar tokens OIDC y secretos de ejecución en tiempo de ejecución en la memoria viva antes de que se escriban o expiren en disco.
  • Persistencia de Doble Vía y Herramientas de IA: ChainDrop establece mecanismos de persistencia cruzada escribiendo un archivo .vscode/tasks.json (que ejecuta el script de configuración al abrir un proyecto en VS Code) y un archivo .claude/settings.json (con un gancho de inicio de sesión para Claude Code). Ambos archivos apuntan al script del otro directorio, enmascarando la actividad como configuración legítima de herramientas de desarrollo.
  • C2 Basado en Blockchain y DGA: El gusano no incluye un dominio de C2 hardcodeado estáticamente; en su lugar, realiza peticiones RPC a la red Ethereum interactuando con un contrato inteligente de tipo StringListStore en la dirección 0xE1f2395ee43e45A1556EC6438a88c31B83493103 para consultar dinámicamente los dominios activos de exfiltración. Asimismo, admite respaldos mediante búsqueda de commits en repositorios de GitHub con marcadores específicos y dominios generados por algoritmos como awqhnjewqjkl[.]icu.

Sistemas / Entornos Afectados

  • Ecosistema de Software: Paquetes del registro npm (incluyendo dependencias ampliamente utilizadas como keyv y cacheable-request, además de paquetes modificados en cuentas de terceros).
  • Entornos de Desarrollo: Estaciones de trabajo de desarrolladores con Node.js y Bun instalados, entornos configurados con Visual Studio Code y Claude Code.
  • Pipelines de Integración Continua (CI/CD): Ejecutores de GitHub Actions auto-hospedados o basados en la nube.
  • Plataformas Cloud y DevOps: Entornos con credenciales de AWS, GCP, Azure, Docker, Kubernetes (tokens de cuentas de servicio y kubeconfigs), Terraform y gestores de secretos como HashiCorp Vault.

Mitigación y Detección

Remediación

  1. Identificación y Eliminación: Localice y elimine las versiones afectadas de los paquetes npm en sus proyectos. Limpie los archivos de bloqueo (package-lock.json, yarn.lock, etc.), cachés y espejos locales que contengan artefactos envenenados.
  2. Rotación Integral de Credenciales: Revoque y rote de inmediato todos los tokens de npm, Personal Access Tokens (PAT) de GitHub, llaves SSH, credenciales de nube IAM, tokens de Vault y claves de automatización accesibles desde los hosts comprometidos.
  3. Limpieza de Mecanismos de Persistencia: Revise y elimine archivos maliciosos asociados como .vscode/tasks.json, .claude/settings.json, .claude/math_init.js, math_init.js, setup.mjs y scripts de monitoreo huérfanos.
  4. Restricción de Red (Egress Filtering): Aplique políticas estrictas de salida de red en los ejecutores de CI/CD para bloquear tráfico hacia dominios de C2 no autorizados, permitiendo únicamente el acceso a registros privados y destinos de despliegue conocidos.

Detección

  • Monitoreo de Comportamiento y Procesos: Utilice herramientas de detección basada en comportamiento (como Cortex XDR) para identificar la ejecución del runtime Bun invocando scripts maliciosos dentro de directorios de módulos de nodos (node_modules) o ejecutando comandos de la CLI de GitHub como gh auth token.

Nota de Inteligencia Defensiva: La presencia de dependencias modificadas con ganchos preinstall que invocan runtimes alternativos o la existencia de commits en repositorios públicos con mensajes que contienen cadenas kilométricas de marcado (como IfYouBlockThisAPIKeyItWillCrash...) son indicadores fehacientes de un compromiso activo de la cadena de suministro.

kql
// Detección de ejecución del payload del gusano Chaindrop mediante el runtime bun
dataset = xdr_data
| filter event_type = ENUM.PROCESS
| filter action_process_image_name in ("bun", "bun.exe") 
  and (action_process_image_command_line contains "Math_Symbol.js" or action_process_image_command_line contains "math_init.js")
| fields agent_hostname, agent_id, causality_actor_process_command_line, actor_process_image_name, action_process_image_command_line

Recapitulando

El incidente de ChainDrop evidencia cómo la infraestructura de código abierto y las herramientas modernas de asistencia al desarrollo (incluyendo entornos de IA como Claude Code e IDEs avanzados) pueden ser instrumentalizadas por actores maliciosos para lograr una persistencia silenciosa y una autopropagación eficiente. Al abusar de mecanismos legítimos de publicación, contratos inteligentes en blockchain para la gestión resiliente de C2 y técnicas avanzadas de scraping en memoria de entornos CI, el gusano redefine los riesgos asociados a la gestión de dependencias. Para mitigar esta amenaza, las organizaciones deben adoptar arquitecturas de credenciales vinculadas a workloads, utilizar ejecutores de CI efímeros y aplicar un control estricto sobre los scripts de ciclo de vida en sus cadenas de suministro de software.

Referencias