Volver al inicio

CanisterWorm en npm: ataque después de Trivy

CanisterWorm — un nuevo gusano de auto-propagación que usa contenedores ICP para C2 después del ataque a Trivy. Infecta paquetes npm vía postinstall y robo de tokens, asegurando persistencia en systemd. Análisis de mecanismos y comparación con Shai-Hulud.

El gusano CanisterWorm infecta npm después de Trivy
Advertisement 728x90

## CanisterWorm: Gusano de autopropagación en la cadena de suministro de npm tras el ataque a Trivy

Los atacantes, tras el compromiso de Trivy, desplegaron el gusano CanisterWorm, que infectó docenas de paquetes de npm. El malware utiliza canisters de ICP en la blockchain Internet Computer para un servidor C2 resistente. Se trata del primer abuso documentado de ICP para la recuperación de payloads, lo que proporciona resistencia descentralizada a los derribos.

Mecanismo de Infección y Propagación

La cadena de ataque comienza con un hook de postinstall en los paquetes comprometidos. El hook lanza un loader que instala una backdoor de Python. La backdoor se conecta a un canister de ICP para recuperar la URL del siguiente payload.

El canister de ICP implementa los métodos get_latest_link, http_request y update_link. Este último permite al controlador cambiar la URL en tiempo real, actualizando archivos ejecutables en todos los hosts infectados sin interrumpir las operaciones.

Google AdInline article slot

La backdoor consulta el canister cada 50 minutos con un User-Agent falso. Si la URL contiene youtube.com, el implante entra en modo inactivo. La activación ocurre al cambiar al verdadero payload; los procesos antiguos continúan ejecutándose en paralelo.

La persistencia se asegura mediante un servicio de systemd llamado "pgmon", haciéndose pasar por monitoreo de PostgreSQL. La directiva Restart=always reinicia la backdoor 5 segundos después de la terminación.

Paquetes afectados:

Google AdInline article slot
  • 28 en el ámbito @EmilGroup;
  • 16 en el ámbito @opengov;
  • @teale.io/eslint-config;
  • @airtm/uuid-base32;
  • @pypestream/floating-ui-dom.

Socket detectó 141 artefactos maliciosos en más de 66 paquetes únicos.

Evolución de CanisterWorm hacia la Automatización Completa

En las versiones 1.8.11–1.8.12 de @teale.io/eslint-config, una variante mutada integra el robo de tokens de npm en index.js. La función findNpmTokens() escanea el entorno durante postinstall y lanza deploy.js como proceso en segundo plano para la autopropagación.

Deploy.js publica versiones maliciosas en todos los paquetes accesibles utilizando los tokens robados. El gusano, presumiblemente generado por IA mediante tecnología Vibe, no ofusca su código.

Google AdInline article slot

El payload actual en ICP es la cadena de prueba "hello123", lo que indica una fase de verificación de la cadena antes de un ataque completo.

Un mecanismo similar con verificación de youtube.com se encontró en Trivy 0.69.4 troyanizado mediante sysmon.py, que hace referencia al mismo canister de ICP.

Comparación con Campañas Anteriores

CanisterWorm sigue el patrón de Shai-Hulud (septiembre): el compromiso de tinycolor se extendió a más de 40 paquetes, luego el gusano infectó a más de 300 mediante NpmModule.updatePackage y TruffleHog para la validación de credenciales.

Sha1-Hulud (noviembre) afectó a más de 25.000 repositorios: el script preinstall setup_bun.js detectó el entorno Bun, lanzando bun_environment.js para el robo de datos.

| Campaña | Paquetes Afectados | Mecanismo de Propagación | Herramientas de Robo |

|-------------|--------------------|-----------------------------------|----------------------|

| Shai-Hulud | 300+ | NpmModule.updatePackage | TruffleHog |

| Sha1-Hulud | 25.000+ | preinstall/setup_bun.js | bun_environment |

| CanisterWorm| 66+ | postinstall/deploy.js + ICP C2 | findNpmTokens |

Lecciones Clave

  • Primer uso de canisters de ICP para C2 en malware: la descentralización dificulta los derribos.
  • Propagación automática: robo de tokens + deploy.js convierte las instalaciones en vectores de infección para CI/CD y máquinas de desarrollo.
  • Resiliencia: systemd con Restart=always + procesos en paralelo + update_link dinámico.
  • Disfraz: servicios camuflados como pgmon, modo inactivo con youtube.com.
  • Escala: desde Trivy hasta 141 artefactos; evolución hacia automatización completa sin despliegues manuales.

Las empresas Aikido Security, Endor Labs, JFrog y Wiz confirman: esto marca un cambio de compromisos individuales a comportamiento exponencial de gusano en el ecosistema de npm.

— Editorial Team

Advertisement 728x90

Leer después