
La versión 8.14.0 del paquete jscrambler npm viene con un gancho de preinstalación malicioso que silenciosamente suelta y ejecuta un ladrón de información nativo durante la instalación, y está diseñado para Windows, uno para macOS y otro para Linux.
La versión 8.14.0 del paquete jscrambler npm viene con un gancho de preinstalación malicioso que silenciosamente suelta y ejecuta un ladrón de información nativo durante la instalación, y está diseñado para Windows, uno para macOS y otro para Linux.
Publicado el 11 de julio de 2026, no se requieren importaciones ni llamadas CLI. Todo lo que necesitas hacer es instalar 8.14.0.
El socket fue marcado para su lanzamiento 6 minutos después de su publicación. Si usted o uno de sus sistemas de compilación lo abrió en esa ventana, la carga útil ya se está ejecutando con los permisos que tenía el proceso de instalación.
Este enlace se activa antes de configurar el paquete, pero no aparece nada en versiones anteriores 8.13.0. El paquete diff muestra dos archivos nuevos en dist/. setup.js, un pequeño cargador, e intro.js no son JavaScript, a pesar de su nombre, pero son contenedores de aproximadamente 7,8 MB empaquetados con tres archivos binarios nativos comprimidos con gzip, uno para Linux, Windows y macOS.
Durante la instalación, setup.js selecciona un binario para el sistema operativo host, lo escribe en un directorio temporal del sistema con un nombre aleatorio, lo marca como ejecutable, oculta su salida y lo inicia de forma separada.
El archivo agregado está en el paquete publicado, pero no puedo encontrarlo en ninguna parte de las fuentes públicas de jscrambler. StepSecurity y SafeDep extrajeron y analizaron la versión, y ambos informaron que no había confirmaciones, etiquetas o solicitudes de extracción que coincidieran con 8.14.0 en sus repositorios de GitHub, y la última etiqueta sigue siendo 8.13.0.
Esta versión se envió directamente a npm bajo una cuenta de mantenedor legítima, omitiendo el flujo de lanzamiento normal del proyecto que apunta a una cuenta npm comprometida o una canalización de compilación. ¿Cuál no está establecido?
Es obvio lo que hace el binario. El análisis de seguimiento de Socket identifica la carga útil como un ladrón de información de Rust creado para las tres plataformas que barre secretos de la máquina del desarrollador y los envía a través de TLS al servidor de entrega. La lista de objetivos es amplia y está dirigida directamente a los desarrolladores.
Obtenga credenciales de nube de AWS, Azure y Google Cloud, incluidos puntos finales de metadatos, para que las utilice el ejecutor de CI. Lea carteras de criptomonedas y frases iniciales de las bóvedas de los administradores de contraseñas MetaMask, Phantom, Exodus y Bitwarden.
Elimina las contraseñas y las cookies almacenadas en tu navegador, junto con tus sesiones de Discord, Slack, Telegram y Steam. Y realiza un seguimiento de los archivos de configuración de los más nuevos: herramientas de codificación de IA como Claude Desktop, Cursor, Windsurf, VS Code y Zed. Estos archivos tienden a contener claves API y credenciales del servidor de protocolo de contexto modelo.
El binario es más que un robo normal. En Linux, la carga útil puede vincularse a la biblioteca BPF del kernel y cargar programas eBPF desde la memoria al kernel. Esto proporciona andamiaje dentro del kernel en lugar de acceso a archivos en el espacio de usuario, en el que se basa el resto del ladrón. Tanto StepSecurity como SafeDep señalaron esta característica, pero aún no está claro qué hace eBPF.
Se agregaron comprobaciones antidepuración a las versiones de Windows y macOS, y el ladrón se conecta de manera persistente para sobrevivir a los reinicios. Esto significa que la tarea oculta programada de Windows está configurada para reiniciarse cada minuto y macOS LaunchAgent se recarga al iniciar sesión.
Sus detalles de comando y control permanecen cifrados dentro del binario y nunca son revelados mediante análisis estático. El monitoreo del tiempo de ejecución de StepSecurity capturó los archivos binarios eliminados que alcanzaron dos direcciones IP codificadas y la infraestructura Tor, los primeros indicadores de red expuestos para la campaña.
Fuente: Paso Seguridad
jscrambler es una herramienta en tiempo de compilación, que se instala como una dependencia de desarrollo o se ejecuta desde CI. Esto permite al ladrón infiltrarse exactamente en el entorno para el que fue creado para extorsionar, incluidas claves de nube, tokens de implementación y código fuente al que se puede acceder mediante procesos de compilación o CI.
El paquete se descarga aproximadamente 15.800 veces por semana, pero aún no está claro cuántas veces se descargó la versión comprometida. Esta es una huella mucho menor que la de los paquetes afectados en la violación masiva de npm del año pasado, que generó miles de millones de descargas por semana entre paquetes.
Pero el alcance nunca fue importante para los ladrones que buscaban construir máquinas. Acceso.
Este es el caso de los ataques a la cadena de suministro de npm que se remontan a finales de 2025. El gusano Shai-Hulud se ejecutó desde un gancho de instalación, robó tokens y se propagó a cientos de paquetes en septiembre del mismo año. Los paquetes de estrangulamiento y depuración ampliamente utilizados se vieron comprometidos a través de cuentas de administrador fraudulentas y se utilizaron para redirigir pagos en criptomonedas.
En marzo, una cuenta secuestrada envió un troyano multiplataforma a Axios, una biblioteca HTTP que recibe más de 83 millones de descargas cada semana. Lo que hace que el momento sea tan repentino aquí es que npm se movía en contra de esta ruta exacta. npm 12 se envió el 8 de julio, tres días antes de este lanzamiento, y los scripts de instalación de dependencias se desactivaron de forma predeterminada.
En npm 12, estos enlaces de preinstalación no se ejecutarán a menos que alguien los apruebe. Los clientes más antiguos todavía lo hacen automáticamente.
Desde entonces, la versión 8.15.0 la reemplazó en la parte superior de la lista de versiones de npm. No vimos ninguna alerta de malware que ocurriera en 8.14.0, como scripts de instalación o archivos binarios empaquetados publicados por la misma cuenta de mantenimiento. Sin embargo, no se eliminó la versión 8.14.0.
Todavía está en npm, por lo que cualquier archivo de bloqueo o comando fijado en él continuará instalando el ladrón. Solo se vio afectado el paquete CLI principal. Los complementos jscrambler para webpack, gulp, Metro y grunt se mantuvieron limpios en las versiones de junio sin ganchos de instalación.
que hacer ahora
Bájese de 8.14.0. Pase a 8.15.0 o fije a 8.13.0 para las versiones anteriores al incidente y borre jscrambler@8.14.0 de los archivos de bloqueo y cachés. Compruebe si 8.14.0 está instalado. A partir del 11 de julio, verifique jscrambler@8.14.0 en los archivos de bloqueo y los registros del administrador de paquetes, y verifique la ejecución de dist/setup.js en los registros CI. El cargador coloca la carga útil en un directorio temporal con un nombre aleatorio, por lo que no hay un nombre binario fijo para grep. En cambio, alinea la marca de tiempo de instalación con la ejecución de los procesos secundarios y directorios temporales del nodo. En Windows, consulte el Programador de tareas para ver si hay tareas ocultas. En macOS, consulte ~/Library/LaunchAgents para ver si hay listas extrañas. Si se ejecuta 8.14.0 en su máquina, tratará todos los secretos a los que tenga acceso como robados, en lugar de simplemente expuestos. Rote claves de nube, tokens npm y GitHub, herramientas de inteligencia artificial y claves API de MCP. Cancele sus sesiones de Discord, Slack, navegador y Bitwarden. Luego, saque sus criptomonedas de su billetera en ese host. Bloquee las dos IP de comando y control que se enumeran a continuación.
La limpieza fue rápida y el ladrón hace el trabajo segundos después de la instalación. 8.14.0 todavía está en npm, y las compilaciones fijadas en él en clientes más antiguos que ejecutan el script de instalación seguirán ejecutando la carga útil.
Cuando 8.15.0 llegó a la cima de la lista, los secretos de las máquinas que ya ejecutaban 8.14.0 ya se habían perdido.
Señales de compromiso
Paquete malicioso: jscrambler@8.14.0. Hash SHA-256 del archivo agregado y su carga útil descomprimida:
dist/setup.js: a742de963f14a92d24ebcbc7b44ac867e23a20d31d1b0094a13a4f83287f4e60 dist/intro.js: a41a523ef9517aab37ed6eea0ec881821bdcb7aefcb5c5f603adc7907f868c86 Carga útil de Linux: fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bd Windows carga útil: b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903 carga útil de macOS: c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fd
Puntos finales de red monitoreados por StepSecurity en tiempo de ejecución (las dos IP son los puntos finales del atacante directo; los archivos binarios también llegan a la infraestructura Tor para conectividad o enrutamiento):
IP C2: 37.27.122(.)124 IP C2: 57.128.246(.)79 Infraestructura Tor: check.torproject(.)org, archive.torproject(.)org
Artefactos en el host: archivos ocultos con nombres aleatorios (. {random} o . {random}.exe en Windows) en el directorio temporal del sistema y tareas ocultas programadas de Windows o macOS LaunchAgent para persistencia.
Source link
