Un gusano npm autorreplicante denominado SANDWORM_MODE afecta a más de 19 paquetes, recopilando claves privadas, mnemónicos BIP39, archivos de billetera y claves API de LLM de entornos de desarrollo.
Un ataque activo a la cadena de suministro de npm está arrasando los entornos de desarrollo en este momento. El equipo de investigación de amenazas de Socket descubrió lo que rastrea como SANDWORM_MODE, un gusano autorreplicante distribuido en al menos 19 paquetes npm maliciosos vinculados a dos alias de publicadores. Como SocketSecurity señaló en X, este es un ataque activo a la cadena de suministro que roba secretos de desarrollo y CI, inyecta flujos de trabajo de GitHub, envenena cadenas de herramientas de IA y recopila claves API de LLM.
La campaña toma prestado directamente de la familia de gusanos Shai-Hulud. Las claves privadas van primero. Sin puerta de tiempo, sin demora. Los artefactos de criptomonedas descubiertos en la importación se exfiltran inmediatamente a través de un punto final de drenaje dedicado antes de que se active cualquier otra etapa de carga útil.
Deberías saber: Las amenazas de seguridad de billeteras están escalando Lectura obligatoria: Hack de seguridad de Trust Wallet: Cómo proteger tus activos
El gusano ejecuta un diseño de dos etapas. La etapa 1 se activa instantáneamente en la importación, recopilando tokens npm, tokens de GitHub, secretos de entorno y claves de criptomonedas solo mediante lecturas de archivos. Sin ejecución de shell, sin ruido. Mnemónicos BIP39, claves privadas de Ethereum, matrices de bytes de Solana, claves WIF de Bitcoin y cadenas xprv se barren todas en el primer pase.
Las claves de criptomonedas abandonan la máquina inmediatamente a través de HTTPS POST a un Cloudflare Worker en pkg-metrics[.]official334[.]workers[.]dev/drain. Eso ocurre antes de cualquier verificación de puerta de tiempo. Antes de que se cargue la Etapa 2.
La etapa 2 se encuentra detrás de un retraso de 48 horas, derivado de un hash MD5 del nombre de host y el nombre de usuario. Va más profundo: administradores de contraseñas a través de CLI de Bitwarden, 1Password y LastPass, almacenes SQLite locales que incluyen Apple Notes y macOS Messages, y un escaneo completo del sistema de archivos en busca de archivos de billetera. En entornos de CI, esa puerta desaparece por completo. La carga útil completa se activa en GITHUB_ACTIONS, GITLAB_CI, CIRCLECI, JENKINS_URL y BUILDKITE sin esperar en absoluto.
Según SocketSecurity en X, el gusano también inyecta flujos de trabajo de GitHub y envenena cadenas de herramientas de IA, detalles confirmados en la divulgación técnica completa de Socket.
También vale la pena leer: $21M en Bitcoin incautado devuelto después de que las autoridades congelaran las transacciones
Tres paquetes se hacen pasar por Claude Code. Uno se dirige a OpenClaw, un Agente de IA que superó las 210,000 estrellas en GitHub. El módulo McpInject del gusano implementa un servidor MCP deshonesto en Claude Code, Claude Desktop, Cursor, VS Code Continue y configuraciones de Windsurf en disco. Cada uno obtiene una entrada de herramienta falsa que apunta a un servidor malicioso oculto.
Ese servidor lleva una inyección de indicaciones integrada que le dice a los asistentes de IA que lean silenciosamente claves SSH, credenciales de AWS, tokens npm y secretos de entorno antes de cada llamada de herramienta. El modelo nunca le dice al usuario. La inyección lo bloquea explícitamente de hacerlo.
Nueve proveedores de LLM son objetivo de la recopilación de claves API: OpenAI, Anthropic, Google, Groq, Together, Fireworks, Replicate, Mistral y Cohere. Las claves se extraen de variables de entorno y archivos .env, validadas contra patrones de formato conocidos antes de la exfiltración.
La exfiltración ejecuta tres canales en cascada. HTTPS al Cloudflare Worker primero, luego cargas de GitHub API autenticadas a repositorios privados utilizando codificación base64 doble, luego tunelización DNS a través de consultas codificadas en base32 a freefan[.]net y fanfree[.]net. Un algoritmo de generación de dominios sembrado por "sw2025" proporciona respaldo en diez TLD si todo lo demás falla.
Vale la pena echar un vistazo: Glassnode señala agotamiento de la demanda de BTC
Los dos alias de publicadores detrás de la campaña son official334 y javaorg. Los 19 paquetes maliciosos confirmados incluyen suport-color@1.0.1, claud-code@0.2.1, cloude@0.3.0, crypto-locale@1.0.0, secp256@1.0.0 y scan-store@1.0.0 entre otros. Cuatro paquetes inactivos adicionales (ethres, iru-caches, iruchache y uudi) no muestran ninguna carga útil maliciosa todavía.
npm ha eliminado los paquetes maliciosos. GitHub eliminó la infraestructura del actor de amenazas. Cloudflare retiró los workers. Pero los defensores deben actuar ahora, independientemente.
Si alguno de estos paquetes se ejecutó en tu entorno, trata esa máquina como comprometida. Rota los tokens npm y GitHub, rota todos los secretos de CI, audita .github/workflows/ para adiciones de pull_request_target que serialicen ${{ toJSON(secrets) }}. Verifica la configuración de plantilla de gancho git global ejecutando git config –global init.templateDir. Revisa las configuraciones de asistentes de IA en busca de entradas inesperadas de mcpServers. Un motor polimórfico inactivo que utiliza deepseek-coder:6.7b está integrado en el gusano y desactivado en esta compilación, lo que significa que una variante futura podría reescribirse para evadir la detección.
Un interruptor muerto también se encuentra en el código. Deshabilitado ahora. Cuando se activa, ejecuta find ~ -type f -writable y destruye cada archivo escribible en el directorio principal. El operador todavía está iterando.
La publicación npm Worm roba claves de criptomonedas, se dirige a 19 paquetes apareció primero en Live Bitcoin News.


