Seguridad y privacidad

El paquete npm de Tensorlake comprometido en el ataque a la cadena de suministro Shai-Hulud

La versión maliciosa 0.5.144 del SDK de Tensorlake fue publicada en npm, entregando un gusano ladrón de credenciales que apunta a infraestructura de IA y secretos de nube.

Ilustración de una caja de paquete npm comprometida revelando código malicioso dentro
Ilustración creada para este artículo

Traducido automáticamente del original en inglés.

El paquete npm de Tensorlake, un SDK de TypeScript para construir aplicaciones sobre los servicios en la nube de Tensorlake, fue comprometido en un sofisticado ataque a la cadena de suministro. El 8 de octubre de 2026, investigadores de seguridad identificaron que la versión 0.5.144 contenía malware ofuscado diseñado para robar credenciales y propagarse por entornos de desarrollo.

Este incidente forma parte de la campaña más amplia ChainDrop, que utiliza la variante del gusano Shai-Hulud para atacar cadenas de suministro de software. El paquete malicioso ha sido retirado desde entonces del registro de npm, pero los desarrolladores que lo instalaron durante la ventana de exposición siguen en riesgo de acceso no autorizado persistente y exfiltración de datos.

Qué ocurrió

Los atacantes obtuvieron acceso al repositorio de Tensorlake y enviaron código malicioso a la rama principal bajo el nombre de un mantenedor. El primer commit fraudulento se produjo el 7 de octubre de 2026, a las 01:20 a.m. UTC. Al día siguiente, el flujo de trabajo automatizado de lanzamiento del repositorio publicó la versión 0.5.144 en el registro público de npm. Esta secuencia sugiere que los atacantes comprometieron la tubería de mantenimiento en lugar de solo el canal de distribución del paquete.

El paquete comprometido incluye un hook preinstall que ejecuta un archivo cargador de JavaScript llamado "package/lib/setup.mjs". Este cargador lanza la carga útil principal, "package/lib/Math_Symbol.js", utilizando el runtime Bun. La carga útil es un gusano ofuscado que cosecha credenciales, establece persistencia en el sistema anfitrión y ejecuta código proporcionado remotamente. La firma de seguridad Socket señaló que las capacidades del malware van mucho más allá del simple keylogging, ya que puede mantener el acceso incluso después de eliminar la dependencia.

El gusano está diseñado para ser autopropagante. Enumera otros paquetes asociados con la identidad de publicación de la víctima, construye registros falsos de procedencia Sigstore y vuelve a publicar versiones comprometidas de esos paquetes. Este mecanismo permite que la infección se propague lateralmente a través del propio ecosistema de software del desarrollador, impactando potencialmente a usuarios downstream que confían en otros proyectos del desarrollador.

Detalles clave

  • Versión maliciosa: Solo la versión 0.5.144 del paquete tensorlake está confirmada como comprometida.
  • Ejecución de la carga útil: El malware utiliza un hook preinstall para ejecutar un cargador ofuscado mediante el runtime Bun.
  • Datos objetivo: El ladrón cosecha tokens de npm, tokens de GitHub, credenciales de AWS, secretos de HashiCorp Vault, credenciales de Kubernetes, claves SSH, archivos .env y billeteras de criptomonedas.
  • Integración con herramientas de IA: Apunta específicamente a archivos de configuración de asistentes de codificación de IA como Anthropic Claude, Cursor, Kiro, Windsurf y Zed.
  • Mecanismo de persistencia: El malware escribe ajustes en .claude/settings.json y .vscode/tasks.json, asegurando que se ejecute cuando los desarrolladores abren proyectos en estos editores.
  • Comando y control (C2): El gusano utiliza un contrato de Ethereum para resolver su endpoint C2 (iseekaigogo[.]com) y usa repositorios de GitHub como alternativa para almacenar temporalmente los datos robados.

Contexto

Los ataques a la cadena de suministro ocurren cuando los atacantes comprometen un componente de terceros de confianza, como una biblioteca o framework, para distribuir malware a sus usuarios. En este caso, el vector de ataque es el registro de npm, el gestor de paquetes predeterminado para los ecosistemas Node.js y TypeScript. Dado que los desarrolladores suelen confiar en paquetes de mantenedores conocidos, pueden no examinar minuciosamente las actualizaciones, permitiendo que el código malicioso entre fácilmente en entornos de producción.

El gusano Shai-Hulud destaca por su enfoque en la infraestructura de agentes de IA. A medida que más empresas integran asistentes de codificación de IA en sus flujos de trabajo, estas herramientas se convierten en objetivos de alto valor. A menudo tienen amplio acceso a bases de código, variables de entorno y APIs internas. Al apuntar a los archivos de configuración de herramientas como Claude Code y VS Code, los atacantes aseguran que su malware se active cada vez que un desarrollador interactúa con su proyecto, creando un punto de apoyo persistente difícil de erradicar con la eliminación estándar de paquetes.

Por qué importa

Para equipos que ejecutan su propio software, este incidente resalta la fragilidad de la confianza en las dependencias de código abierto. Incluso si verificas un paquete inicialmente, una cuenta de mantenedor o una tubería de compilación comprometida puede inyectar malware en cualquier momento. El hecho de que el gusano vuelva a publicar otros paquetes bajo la identidad de la víctima significa que una sola brecha puede dañar tu reputación e infectar todo tu portafolio de herramientas. Este movimiento lateral hace que la contención sea significativamente más difícil que eliminar una sola mala dependencia.

El objetivo específico de los asistentes de codificación de IA plantea un nuevo riesgo para los flujos de trabajo de desarrollo. Estas herramientas a menudo operan con privilegios elevados para leer y escribir código, acceder a archivos locales e interactuar con comandos de terminal. Si un atacante toma el control de estos agentes, puede exfiltrar lógica sensible, insertar puertas traseras en el código fuente o robar secretos almacenados en archivos de entorno locales. Para equipos de autoalojamiento, esto significa que las máquinas de desarrollo locales son ahora perímetros de seguridad críticos que requieren el mismo nivel de protección que los servidores de producción.

Además, la táctica del "token rehén" demuestra una estrategia agresiva de escalada. Si una víctima revoca un token de GitHub robado, el malware detecta este cambio y ejecuta una rutina destructiva de PowerShell. Esta medida anti-forense desalienta pasos simples de remediación como la rotación de tokens y obliga a las organizaciones a realizar limpiezas completas del sistema. Subraya la necesidad de planes integrales de respuesta a incidentes que tengan en cuenta amenazas persistentes incrustadas en herramientas de desarrollo.

Qué puedes hacer

  • Verificar versiones instaladas: Verifica inmediatamente si la versión 0.5.144 del paquete tensorlake está presente en las dependencias de tu proyecto o en los archivos de bloqueo (lock files).
  • Rotar todas las credenciales: Si instalaste la versión maliciosa, rota todos los tokens de npm, tokens de GitHub, claves de AWS, claves SSH y cualquier otro secreto accesible desde tu entorno de desarrollo.
  • Inspeccionar configuraciones de IA: Revisa tus repositorios por cambios inesperados en los archivos .claude/settings.json y .vscode/tasks.json, y elimina cualquier entrada sospechosa.
  • Auditar paquetes publicados: Revisa tus otros paquetes publicados en npm por versiones no autorizadas o cambios en los registros de procedencia que puedan indicar propagación lateral.
  • Monitorear tuberías CI/CD: Busca flujos de trabajo de GitHub Actions desconocidos o commits que hagan referencia a procesos falsos de Copilot/Dependabot en tus repositorios.
  • Escanear en busca de persistencia: Usa herramientas de detección en el endpoint para buscar el binario HackBrowserData y monitorea actividad inusual de PowerShell que involucre Invoke-Expression.

"Cualquier secreto accesible para el proceso en ejecución puede quedar expuesto, y la persistencia puede retener el acceso del atacante después de que la dependencia afectada sea eliminada." — Socket

Más noticias

Todas las noticias