Incluso la revocación de una clave robada podía activar un mecanismo que borraba archivos.

Una actualización habitual del SDK para infraestructura de IA resultó ser una trampa que se activaba incluso antes de la primera importación de la biblioteca. En npm apareció la versión maliciosa tensorlake 0.5.144 con el gusano Shai-Hulud. Socket detectó el lanzamiento aproximadamente 11 minutos después, y el paquete oficial TypeScript Tensorlake se descargaba alrededor de 12.000 veces por semana.
La infección comenzaba a través del hook preinstall, por lo que el código malicioso se ejecutaba automáticamente al instalar la dependencia. El archivo ofuscado setup.mjs cargaba el entorno Bun y transfería el control al archivo Math_Symbol.js con la carga principal. El usuario no necesitaba ejecutar Tensorlake ni crear un agente de IA; bastaba con instalar la versión infectada.
Shai-Hulud recopilaba tokens de GitHub y npm, claves de la nube, claves SSH, secretos de Kubernetes y Vault, datos de CI/CD y archivos de configuración locales. La variante nueva también buscaba los almacenes de 14 extensiones de navegador para monederos y ejecutaba HackBrowserData para extraer credenciales guardadas, cookies y datos de sesiones del navegador.
Los tokens robados convertían la máquina infectada en un nuevo punto de propagación. Al obtener permisos para publicar en npm, el gusano descargaba los paquetes de la víctima, añadía su propia carga, incrementaba el número de versión y publicaba compilaciones infectadas. Este mecanismo da continuidad a la campaña ChainDrop de agosto, cuando Shai-Hulud afectó a 444 paquetes npm con una audiencia total enorme.
Un mecanismo separado se instalaba en el sistema como gh-token-monitor y comprobaba el token robado de GitHub cada 60 segundos. Si el propietario revocaba el token, el manejador malicioso podía eliminar el directorio personal del usuario. El gusano también añadía archivos de configuración de Claude Code y de VS Code en los repositorios accesibles para ejecutarse de nuevo al abrir el proyecto.
El ataque afectó no a un clon externo, sino al SDK oficial Tensorlake. StepSecurity determinó que los archivos maliciosos llegaron directamente a la rama principal de GitHub bajo la cuenta del mantenedor, tras lo cual el flujo de trabajo habitual lanzó el paquete con una atestación de procedencia (npm provenance) correcta. Esa firma confirmaba el origen de la compilación, pero no la seguridad del código fuente.
La versión 0.5.144 ya fue eliminada de npm. En el momento de los primeros análisis, la anterior 0.5.143 permanecía limpia, y las compilaciones de Tensorlake en PyPI y Cargo no mostraban signos de infección. Se recomienda a los equipos en los que se llegó a instalar la versión peligrosa que consideren comprometidos los secretos accesibles al proceso y revisen el historial de publicaciones de paquetes, los registros de GitHub y los cambios en los repositorios.
Antes de revocar los tokens de GitHub, las fuentes aconsejan primero aislar el sistema infectado y eliminar gh-token-monitor para evitar que se active el mecanismo de borrado de archivos. Tras la limpieza, hay que reemplazar las claves de npm, GitHub y de la nube, los secretos SSH y otras credenciales desde un dispositivo limpio, reconstruir los entornos afectados a partir de fuentes de confianza y verificar si quedan rastros de persistencia.