Qué pasó
El 8 de octubre de 2026, a las 01:12 UTC, la versión 0.5.144 del paquete npm tensorlake, el SDK de una plataforma de sandboxes serverless para agentes de IA, se publicó con un gusano de la familia Shai-Hulud que roba credenciales. El paquete tiene unas 12.000 a 18.000 descargas semanales. La versión estuvo disponible cerca de 1 h 40 min, según el aviso de los mantenedores, que dicen que la telemetría no mostró su uso. Socket detectó la versión maliciosa 11 minutos después de publicarse.
Los paquetes de Tensorlake en PyPI y Cargo no se vieron afectados, según los análisis publicados.
Cómo entraron
El ataque no empezó en npm, sino en GitHub:
- El 7 de octubre, el atacante hizo commits directamente en la rama main de tensorlakeai/tensorlake desde la interfaz web, con la cuenta de administrador de un mantenedor, sin pull request.
- Ocho commits ajustaron el payload y añadieron un hook preinstall en package.json.
- Unas 20 horas después, la misma cuenta lanzó manualmente el workflow oficial de publicación.
Resultado: el paquete salió con un atestado de procedencia (provenance) válido. Como recuerda StepSecurity, el atestado indica dónde se construyó el paquete, no que el código sea seguro.
Qué hace el malware
- El hook preinstall ejecuta un cargador ofuscado que descarga el runtime Bun y lanza un payload de 856 KB.
- Roba tokens de npm y GitHub, credenciales de nube, Kubernetes y Vault y archivos de configuración de herramientas de IA para programar.
- Intenta propagarse: republica otros paquetes del usuario y hace commits de archivos .claude y .vscode en sus repositorios, con el autor falso "claude@users.noreply.github.com" y el mensaje "chore: update dependencies".
- Token rehén: instala un monitor que comprueba el token de GitHub robado cada 60 segundos durante hasta 24 horas. Si se revoca el token, borra el directorio home (rm -rf ~/ en Linux y macOS). Los investigadores discrepan sobre cuándo se activa exactamente la trampa.
El patrón de dos archivos (setup.mjs y Math_Symbol.js) coincide con los ataques de agosto a los paquetes keyv y cacheable, basados en el código "mini Shai-Hulud" que publicó el grupo TeamPCP. No hay pruebas de que sea el mismo grupo.
Qué hacer si lo instaló
- Antes de revocar tokens, aísle la máquina y mate el proceso de monitorización para no perder el home.
- Considere comprometidas todas las credenciales de la máquina: npm, GitHub, nube y configuraciones de agentes de IA. Después, rote todo.
- Busque commits "chore: update dependencies" de autores extraños y workflows nuevos en sus repositorios.
- Revise versiones publicadas recientemente de sus propios paquetes.
Lecciones
- Exija revisión en todo push a main, incluidos los administradores.
- Use llaves de hardware (FIDO2) en las cuentas de mantenedores.
- Adopte un periodo de espera (cooldown) antes de instalar versiones recién publicadas y desactive los scripts de instalación cuando pueda.
- Las herramientas de IA para programar son ahora un objetivo: sus configuraciones guardan claves valiosas.
Fuentes
- Aviso de seguridad de Tensorlake (GHSA-8g63-53c9-65j2): https://github.com/tensorlakeai/tensorlake/security/advisories/GHSA-8g63-53c9-65j2
- Socket: https://www.socket.dev/blog/tensorlake-compromise
- StepSecurity: https://www.stepsecurity.io/blog/tensorlake-npm-compromised-hostage-token-worm
- Aikido: https://www.aikido.dev/blog/tensorlake-npm-package-compromised
¿Quiere proteger su cadena de suministro de software y sus pipelines? KGA IT ofrece una consulta gratuita: kga-it.com.