{"id":1507,"date":"2026-07-11T20:00:04","date_gmt":"2026-07-11T20:00:04","guid":{"rendered":"https:\/\/cybercolombia.co\/index.php\/2026\/07\/11\/la-version-comprometida-de-jscrambler-8-14-0-npm-elimina-rust-infostealer-durante-la-instalacion-cyberdefensa-mx\/"},"modified":"2026-07-11T20:00:04","modified_gmt":"2026-07-11T20:00:04","slug":"la-version-comprometida-de-jscrambler-8-14-0-npm-elimina-rust-infostealer-durante-la-instalacion-cyberdefensa-mx","status":"publish","type":"post","link":"https:\/\/cybercolombia.co\/index.php\/2026\/07\/11\/la-version-comprometida-de-jscrambler-8-14-0-npm-elimina-rust-infostealer-durante-la-instalacion-cyberdefensa-mx\/","title":{"rendered":"La versi\u00f3n comprometida de jscrambler 8.14.0 npm elimina Rust Infostealer durante la instalaci\u00f3n \u2013 CYBERDEFENSA.MX"},"content":{"rendered":"<div id=\"articlebody\">\n<p>El paquete jscrambler npm se vio comprometido y con solo instalar su versi\u00f3n 8.14.0 se ejecuta un robo de informaci\u00f3n en su m\u00e1quina. Publicada el 11 de julio de 2026, la versi\u00f3n maliciosa incluye un gancho de preinstalaci\u00f3n que coloca y ejecuta un binario nativo, uno para Windows, otro para macOS y otro para Linux.<\/p>\n<p>Socket marc\u00f3 el lanzamiento <a href=\"https:\/\/socket.dev\/blog\/jscrambler-supply-chain-attack\" target=\"_blank\">seis minutos despu\u00e9s de su publicaci\u00f3n<\/a>. Si usted o uno de sus sistemas de compilaci\u00f3n lo abri\u00f3 en esa ventana, la carga \u00fatil ya se ejecut\u00f3 con cualquier acceso que tuviera su proceso de instalaci\u00f3n.<\/p>\n<p>Nada de esto est\u00e1 en la versi\u00f3n anterior, 8.13.0. <a href=\"https:\/\/socket.dev\/npm\/package\/jscrambler\/diff\/8.14.0\" target=\"_blank\">La diferencia del paquete<\/a> muestra dos archivos nuevos en dist\/: setup.js, un peque\u00f1o cargador e intro.js. A pesar del nombre, intro.js no es JavaScript sino un contenedor de aproximadamente 7,8 MB que contiene tres archivos binarios nativos comprimidos con gzip, uno para Linux, uno para Windows y otro para macOS.<\/p>\n<p>Durante la instalaci\u00f3n, setup.js elige el binario para el sistema operativo host, lo escribe con un nombre aleatorio en el directorio temporal del sistema, lo marca como ejecutable y lo inicia separado con su salida oculta.<\/p>\n<p>Los archivos agregados est\u00e1n en el paquete publicado, pero en ninguna parte de la fuente p\u00fablica de jscrambler. <a href=\"https:\/\/www.stepsecurity.io\/blog\/jscrambler-npm-package-publishes-malicious-preinstall-binary\" target=\"_blank\">PasoSeguridad<\/a> y <a href=\"https:\/\/safedep.io\/jscrambler-npm-supply-chain-compromise\/\" target=\"_blank\">SafeDep<\/a> Ambos extrajeron y analizaron la versi\u00f3n, y ambos informan que no hay confirmaci\u00f3n, etiqueta o solicitud de extracci\u00f3n coincidentes para 8.14.0 en el repositorio de GitHub.<\/p>\n<p>Su \u00faltima etiqueta sigue siendo 8.13.0. La versi\u00f3n se envi\u00f3 directamente a npm con una cuenta de mantenimiento leg\u00edtima, sin pasar por el flujo de lanzamiento normal del proyecto. Eso apunta a una cuenta npm comprometida o una canalizaci\u00f3n de compilaci\u00f3n. Cu\u00e1l de los dos no ha sido establecido.<\/p>\n<p>La carga \u00fatil es un ladr\u00f3n de informaci\u00f3n de Rust, creado para las tres plataformas, que busca secretos en una m\u00e1quina de desarrollador y los env\u00eda a un servidor directo a trav\u00e9s de TLS, seg\u00fan el an\u00e1lisis actualizado de Socket y una declaraci\u00f3n a The Hacker News.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/ai-vuln-protection-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjQl2axNwsfhbXOFynrg_uAZsvHi3OvNGSA8KJO-BKR8Xm3x7yjKV3EvfY4v5mwXx6LF0uWFb9h9d9iAV_Pi-YYhqimX9wx4OaLdDJEdR215Xrxq_PAtXkaLfQso4pTSjbj6fvh_ZTliLpzWZSZfcoZgyXtKwhN-SSDDlmbtUqGLshc0KqYQGWYHMN52Sl1\/s728-e100\/zz-d.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>La lista de objetivos es amplia y est\u00e1 dirigida a desarrolladores: credenciales de nube de AWS, Azure y Google Cloud, incluidos los puntos finales de metadatos que utilizan los corredores de CI; billeteras de criptomonedas y frases iniciales de MetaMask, Phantom y Exodus; la b\u00f3veda del administrador de contrase\u00f1as de Bitwarden; contrase\u00f1as y cookies almacenadas en el navegador; y sesiones de Discord, Slack, Telegram y Steam.<\/p>\n<p>Tambi\u00e9n busca algo m\u00e1s nuevo: los archivos de configuraci\u00f3n para herramientas de codificaci\u00f3n de IA, incluidos Claude Desktop, Cursor, Windsurf, VS Code y Zed, donde tienden a ubicarse las claves API y las credenciales del servidor Model Context Protocol.<\/p>\n<p>Los binarios hacen m\u00e1s que robar. En Linux, la carga \u00fatil vincula la biblioteca BPF del kernel y puede cargar un programa eBPF directamente en el kernel desde la memoria. Se trata de un punto de apoyo en el n\u00facleo, no del acceso a archivos del espacio de usuario del que depende el resto del ladr\u00f3n. Tanto StepSecurity como SafeDep se\u00f1alaron la capacidad, aunque lo que hace el eBPF a\u00fan se est\u00e1 desmantelando.<\/p>\n<p>Las compilaciones de Windows y macOS agregan comprobaciones antidepuraci\u00f3n y el ladr\u00f3n se conecta de forma persistente para sobrevivir a un reinicio: una tarea oculta programada de Windows configurada para reiniciarse cada minuto y un LaunchAgent de macOS que se recarga al iniciar sesi\u00f3n. Sus detalles de comando y control permanecen cifrados en el binario y nunca aparecen en el an\u00e1lisis est\u00e1tico.<\/p>\n<p>El monitoreo del tiempo de ejecuci\u00f3n de StepSecurity detect\u00f3 que el binario ca\u00eddo llegaba a dos direcciones IP codificadas y a la infraestructura Tor, los primeros indicadores de red publicados para la campa\u00f1a.<\/p>\n<p>jscrambler es una herramienta en tiempo de compilaci\u00f3n, que se instala como una dependencia de desarrollo o se ejecuta desde CI. Esos entornos contienen lo que recopila el ladr\u00f3n: claves de nube, tokens de implementaci\u00f3n y c\u00f3digo fuente al que puede acceder un proceso de compilaci\u00f3n o CI.<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" class=\"tr-caption-container\" style=\"float: left;\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi31tvSsQoYD4uTw5y2PID3PwQgCXwPYz8oOnO1Y7L0KFfaSLiWm60x7RHZGMUzVWvcYJyBtzW0GtKmx4cTCluKWu-LrkxSuD4VSCI_tEfW971OnP41ygsaVhKKrJZSDAJh1oaOJiWfId-NO2EG7uFr5o0W-FZGZzjluGWPZmYzlFJ4PJVm6WLL1f0Xly4\/s1700-e365\/tor.png\" style=\"clear: left; display: block; margin-left: auto; margin-right: auto;  text-align: center;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi31tvSsQoYD4uTw5y2PID3PwQgCXwPYz8oOnO1Y7L0KFfaSLiWm60x7RHZGMUzVWvcYJyBtzW0GtKmx4cTCluKWu-LrkxSuD4VSCI_tEfW971OnP41ygsaVhKKrJZSDAJh1oaOJiWfId-NO2EG7uFr5o0W-FZGZzjluGWPZmYzlFJ4PJVm6WLL1f0Xly4\/s1700-e365\/tor.png\" alt=\"\" border=\"0\" data-original-height=\"1868\" data-original-width=\"3202\"\/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\" style=\"text-align: center;\">Fuente: Paso Seguridad<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>El paquete recibe alrededor de 15.800 descargas por semana y a\u00fan no se sabe cu\u00e1ntas extrajeron la versi\u00f3n comprometida. Esa es una huella mucho menor que la de los paquetes afectados en los grandes compromisos de npm del a\u00f1o pasado, que generan miles de millones de descargas por semana entre ellos.<\/p>\n<p>Sin embargo, para un ladr\u00f3n cuyo objetivo era construir m\u00e1quinas, el alcance nunca fue el objetivo. El acceso es.<\/p>\n<p>El gusano Shai-Hulud se ejecut\u00f3 desde un gancho de instalaci\u00f3n para robar tokens y <a href=\"https:\/\/unit42.paloaltonetworks.com\/monitoring-npm-supply-chain-attacks\/\" target=\"_blank\">distribuido a trav\u00e9s de cientos de paquetes<\/a> aquel septiembre. Los paquetes de tiza y depuraci\u00f3n ampliamente utilizados fueron <a href=\"https:\/\/www.paloaltonetworks.com\/blog\/cloud-security\/npm-supply-chain-attack\/\" target=\"_blank\">asumido a trav\u00e9s de una cuenta de mantenedor phishing<\/a> y se utiliza para redirigir pagos criptogr\u00e1ficos.<\/p>\n<p>En marzo, una cuenta secuestrada introdujo un troyano multiplataforma en Axios, una biblioteca HTTP con m\u00e1s de 83 millones de descargas semanales. Lo que hace que el momento sea preciso aqu\u00ed es que npm acababa de moverse en contra de esta ruta exacta: <a href=\"https:\/\/github.blog\/changelog\/2026-07-08-npm-install-time-security-and-gat-bypass2fa-deprecation\/\" target=\"_blank\">NPM 12<\/a> se envi\u00f3 el 8 de julio, tres d\u00edas antes de este lanzamiento, con los scripts de instalaci\u00f3n de dependencias desactivados de forma predeterminada.<\/p>\n<p>En npm 12, un enlace de preinstalaci\u00f3n como este no se ejecuta a menos que alguien lo apruebe. Los clientes m\u00e1s antiguos todav\u00eda los ejecutan autom\u00e1ticamente.<\/p>\n<p>Desde entonces, la versi\u00f3n 8.15.0 la reemplaz\u00f3 en la parte superior de <a href=\"https:\/\/socket.dev\/npm\/package\/jscrambler\" target=\"_blank\">lista de versiones de npm<\/a>publicado desde la misma cuenta de mantenedor y que no muestra ninguna de las alertas de malware activadas por 8.14.0: sin script de instalaci\u00f3n, sin binario incluido. Pero la versi\u00f3n 8.14.0 no fue eliminada.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/sygnia-cyber-response-d-2\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjHcvlLVmAqlffm6kG54_0cGVf8WfcgzqT9B0fBSizSSeIjh8tBepXnrf6BMqKiG344WgqNejcRtEFKT1PmOzQNQBhdmu2iz9Po10z0SSDlFuZ37iip2uYibJDoxTEkbUI7Bx8NJM2Io_z_nl5p4YA-ZhqFLfi0GW1axyu-lQx-iytCn9RGSJ2iqCwdyv8m\/s1600\/sy-d-2.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>Todav\u00eda est\u00e1 en npm, por lo que cualquier archivo de bloqueo o comando fijado en \u00e9l sigue instalando el ladr\u00f3n. S\u00f3lo se vio afectado el paquete CLI principal; Los complementos jscrambler para webpack, gulp, Metro y grunt se mantuvieron en sus versiones limpias de junio, sin ganchos de instalaci\u00f3n.<\/p>\n<h2>Que hacer ahora<\/h2>\n<ol>\n<li>B\u00e1jese de 8.14.0. Vaya a 8.15.0 o fije a 8.13.0 para obtener una versi\u00f3n anterior al incidente y borre jscrambler@8.14.0 de los archivos de bloqueo y cach\u00e9s.<\/li>\n<li>Averigua si instalaste 8.14.0. Verifique los archivos de bloqueo y los registros del administrador de paquetes para jscrambler@8.14.0 y los registros de CI para cualquier ejecuci\u00f3n de dist\/setup.js, a partir del 11 de julio. El cargador coloca su carga \u00fatil bajo un nombre aleatorio en el directorio temporal, por lo que no hay un nombre binario fijo para buscar; En su lugar, alinee las marcas de tiempo de instalaci\u00f3n con los procesos secundarios de Node y la ejecuci\u00f3n del directorio temporal. En Windows, consulte el Programador de tareas para ver si hay tareas ocultas; en macOS, inspeccione ~\/Library\/LaunchAgents en busca de listas desconocidas.<\/li>\n<li>Si 8.14.0 se ejecut\u00f3 en una m\u00e1quina, trate todos los secretos a los que pueda acceder como robados, no simplemente expuestos. Rotar claves de nube, tokens de npm y GitHub, y claves de API de MCP y herramientas de IA; revocar sesiones de Discord, Slack, navegador y Bitwarden; y sacar cualquier criptomoneda de las billeteras en ese host. Bloquee las dos IP de comando y control que se enumeran a continuaci\u00f3n.<\/li>\n<\/ol>\n<p>La limpieza fue r\u00e1pida, pero un ladr\u00f3n hace su trabajo segundos despu\u00e9s de la instalaci\u00f3n. Una compilaci\u00f3n anclada a 8.14.0, en un cliente anterior que ejecuta scripts de instalaci\u00f3n, a\u00fan ejecuta la carga \u00fatil. Y en cualquier m\u00e1quina que ya lo ejecutara, los secretos desaparecieron antes de que 8.15.0 llegara a la cima de la lista.<\/p>\n<h2>Indicadores de compromiso<\/h2>\n<p>Paquete malicioso: jscrambler@8.14.0. Hashes SHA-256 para los archivos agregados y sus cargas \u00fatiles descomprimidas:<\/p>\n<ul>\n<li>dist\/setup.js: a742de963f14a92d24ebcbc7b44ac867e23a20d31d1b0094a13a4f83287f4e60<\/li>\n<li>dist\/intro.js: a41a523ef9517aab37ed6eea0ec881821bdcb7aefcb5c5f603adc7907f868c86<\/li>\n<li>Carga \u00fatil de Linux: fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bd<\/li>\n<li>Carga \u00fatil de Windows: b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903<\/li>\n<li>Carga \u00fatil de macOS: c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fd<\/li>\n<\/ul>\n<p>Puntos finales de red StepSecurity observados en tiempo de ejecuci\u00f3n. Las dos IP son los puntos finales del atacante directo; el binario tambi\u00e9n llega a la infraestructura Tor, probablemente para conectividad o enrutamiento:<\/p>\n<ul>\n<li>IP C2: 37.27.122[.]124<\/li>\n<li>IP C2: 57.128.246[.]79<\/li>\n<li>Infraestructura Tor: check.torproject[.]org, archivo.torproject[.]organizaci\u00f3n<\/li>\n<\/ul>\n<p>Artefactos en el host: un archivo oculto con nombre aleatorio en el directorio temporal del sistema, con el formato . {aleatorio} o . {random}.exe en Windows, adem\u00e1s de una tarea programada oculta de Windows o un LaunchAgent de macOS para persistencia.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>El paquete jscrambler npm se vio comprometido y con solo instalar su versi\u00f3n 8.14.0 se ejecuta un robo de informaci\u00f3n en su m\u00e1quina. Publicada el 11 de julio de 2026, la versi\u00f3n maliciosa incluye un gancho de preinstalaci\u00f3n que coloca y ejecuta un binario nativo, uno para Windows, otro para macOS y otro para Linux. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1379,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,5],"tags":[3696,1420,24,2139,1813,923,2700,3695,277,832,3694],"class_list":["post-1507","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-trending","tag-8-14-0","tag-comprometida","tag-cyberdefensa-mx","tag-durante","tag-elimina","tag-infostealer","tag-instalacion","tag-jscrambler","tag-npm","tag-rust","tag-version"],"_links":{"self":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/comments?post=1507"}],"version-history":[{"count":0,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1507\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media\/1379"}],"wp:attachment":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media?parent=1507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/categories?post=1507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/tags?post=1507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}