Investigadores de ciberseguridad han revelado lo que dicen es una campaña activa de gusanos de cadena de suministro «similar a Shai-Hulud» que ha aprovechado un grupo de al menos 19 paquetes npm maliciosos para permitir la recolección de credenciales y el robo de claves de criptomonedas.
La campaña tiene el nombre en clave. MODO_GUSANO DE ARENA por la empresa de seguridad de la cadena de suministro Socket. Al igual que con oleadas de ataques anteriores de Shai-Hulud, el código malicioso incrustado en los paquetes viene con capacidades para desviar información del sistema, tokens de acceso, secretos ambientales y claves API de entornos de desarrolladores y propagarse automáticamente mediante el abuso de identidades robadas de npm y GitHub para ampliar su alcance.
«La muestra conserva las características distintivas de Shai-Hulud y agrega exfiltración de API de GitHub con respaldo de DNS, persistencia basada en ganchos, respaldo de propagación SSH, inyección de servidor MCP con inyección rápida integrada dirigida a asistentes de codificación de IA y recolección de claves API de LLM», dijo la compañía.
Los paquetes, publicados en npm por dos alias de editores de npm, official334 y javaorg, se enumeran a continuación:
- código-claud@0.2.1
- código-nube@0.2.1
- nube@0.3.0
- cripto-locale@1.0.0
- cripto-lector-info@1.0.0
- detectar-cache@1.0.0
- formato predeterminado@1.0.0
- hardhta@1.0.0
- cargador-local-pro@1.0.0
- naniod@1.0.0
- nodo-nativo-puente@1.0.0
- opencraw@2026.2.17
- análisis-compatible@1.0.0
- rimarf@1.0.0
- tienda-escaneo@1.0.0
- secp256@1.0.0
- soporte-color@1.0.1
- veim@2.46.2
- yarsg@18.0.1
También se identifican cuatro paquetes durmientes que no incorporan ninguna característica maliciosa:
- éteres
- iru-caches
- iruchache
- uudi
Los paquetes van más allá de la propagación basada en npm al incluir una GitHub Action armada que recolecta secretos de CI/CD y los exfiltra a través de HTTPS con respaldo de DNS. También cuentan con una rutina destructiva que actúa como un interruptor de apagado al activar la limpieza del directorio de inicio en caso de que pierda el acceso a GitHub y npm. La función de limpieza está actualmente desactivada de forma predeterminada.
Otro componente importante del malware es un módulo «McpInject» que se dirige específicamente a los asistentes de codificación de IA mediante la implementación de un servidor de protocolo de contexto de modelo (MCP) malicioso e inyectándolo en sus configuraciones de herramientas. El servidor MCP se hace pasar por un proveedor de herramientas legítimo y registra tres herramientas aparentemente inofensivas, cada una de las cuales incorpora una inyección rápida para leer el contenido de los archivos ~/.ssh/id_rsa, ~/.ssh/id_ed25519, ~/.aws/credentials, ~/.npmrc y .env, y colocarlos en un directorio local para su posterior filtración.
El módulo está dirigido a Claude Code, Claude Desktop, Cursor, Microsoft Visual Studio Code (VS Code) Continuar y Windsurf. También recopila claves API para nueve grandes proveedores de modelos de lenguaje (LLM): Anthropic, Cohere, Fireworks AI, Google, Grok, Mistral, OpenAI, Replicate y Together.
Es más, la carga útil contiene un motor polimórfico que está configurado para llamar a una instancia local de Ollama con el modelo DeepSeek Coder para cambiar el nombre de las variables, reescribir el flujo de control, insertar código basura y codificar cadenas para evadir la detección. Si bien el motor está apagado en los paquetes actualmente detectados, la inclusión de la característica sugiere que los operadores están buscando lanzar más iteraciones del malware en el futuro.
Toda la cadena de ataque se desarrolla en dos etapas: un componente de primera etapa que captura credenciales y claves de criptomonedas y luego carga una etapa secundaria que posteriormente realiza una recolección más profunda de credenciales de administradores de contraseñas, propagación similar a un gusano, inyección de MCP y exfiltración completa. La segunda etapa no se activa hasta que hayan transcurrido 48 horas (junto con una fluctuación por máquina de hasta 48 horas adicionales).
Se recomienda a los usuarios que hayan instalado cualquiera de los paquetes antes mencionados que los eliminen con efecto inmediato, roten los tokens npm/GitHub y los secretos de CI, y revisen cualquier paquete.json, lockfiles y .github/workflows/ para detectar cambios inesperados.
«Varios indicadores de características y barreras de seguridad todavía sugieren que el actor de la amenaza está iterando sobre capacidades (por ejemplo, alternancias que desactivan rutinas destructivas o reescritura polimórfica en algunas compilaciones)», dijo Socket. «Sin embargo, el mismo código de gusano que aparece en múltiples paquetes de typosquatting y alias de editores indica una distribución intencional en lugar de una liberación accidental».
«Los comportamientos destructivos y de propagación siguen siendo reales y de alto riesgo, y los defensores deberían tratar estos paquetes como riesgos de compromiso activo en lugar de artefactos de prueba benignos».
La divulgación se produce cuando Veracode y JFrog detallaron otros dos paquetes npm maliciosos llamados «buildrunner-dev» y «eslint-verify-plugin», respectivamente, que están diseñados para entregar un troyano de acceso remoto (RAT) dirigido a sistemas Windows, macOS y Linux. El malware .NET implementado por buildrunner-dev es Pulsar RAT, un RAT de código abierto entregado a través de una imagen PNG alojada en i.ibb(.)co.
Eslint-verify-plugin, por otro lado, «se hace pasar por una utilidad ESLint legítima mientras implementa una sofisticada cadena de infección de múltiples etapas dirigida a entornos macOS y Linux», dijo JFrog.
En Linux, el paquete implementa un agente Poseidon para el marco Mythic C2. Facilita una amplia gama de capacidades posteriores a la explotación, incluidas operaciones de archivos, recolección de credenciales y movimiento lateral. La secuencia de infección de macOS ejecuta Apfell, un agente de JavaScript para automatización (JXA) para macOS, para realizar una recopilación exhaustiva de datos y crear un nuevo usuario de macOS con privilegios de administrador.
Algunos de los datos robados por el agente son los siguientes:
- Información del sistema
- Credenciales del sistema a través de un cuadro de diálogo de contraseña falsa
- Favoritos del navegador Google Chrome
- Contenido del portapapeles
- Archivos asociados con las cookies, datos de inicio de sesión y marcadores de iCloud Keychain y Chrome
- Capturas de pantalla
- Metadatos del archivo
«El paquete eslint-verify-plugin es un ejemplo directo de cómo un paquete npm malicioso puede pasar de un simple gancho de instalación a comprometer todo el sistema», dijo JFrog. «Al hacerse pasar por una utilidad legítima, los atacantes lograron ocultar una cadena de infección de varias etapas».
Los hallazgos también siguen a un informe de Checkmarx, que señaló una extensión de VS Code maliciosa conocida como «solid281» que se hace pasar por la extensión oficial de Solidity, pero alberga características encubiertas para ejecutar un cargador muy ofuscado automáticamente al iniciar la aplicación y soltar ScreenConnect en Windows y un shell inverso de Python en máquinas macOS y Linux.
«Esto refleja patrones más amplios informados por otros equipos: los desarrolladores de Solidity parecen ser un objetivo específico, incluidas campañas que utilizaron extensiones falsas de Solidity para instalar ScreenConnect y luego implementar cargas útiles de seguimiento», señaló Checkmarx.