{"id":1820,"date":"2026-07-29T05:13:45","date_gmt":"2026-07-29T05:13:45","guid":{"rendered":"https:\/\/cybercolombia.co\/index.php\/2026\/07\/29\/dos-paquetes-joyfill-npm-comprometidos-ejecutan-rat-cuando-se-importan-a-node-js-cyberdefensa-mx\/"},"modified":"2026-07-29T05:13:45","modified_gmt":"2026-07-29T05:13:45","slug":"dos-paquetes-joyfill-npm-comprometidos-ejecutan-rat-cuando-se-importan-a-node-js-cyberdefensa-mx","status":"publish","type":"post","link":"https:\/\/cybercolombia.co\/index.php\/2026\/07\/29\/dos-paquetes-joyfill-npm-comprometidos-ejecutan-rat-cuando-se-importan-a-node-js-cyberdefensa-mx\/","title":{"rendered":"Dos paquetes joyfill npm comprometidos ejecutan RAT cuando se importan a Node.js \u2013 CYBERDEFENSA.MX"},"content":{"rendered":"<div id=\"articlebody\">\n<p>Las versiones beta de dos paquetes npm en el espacio de nombres @joyfill se han visto comprometidas para entregar un troyano de acceso remoto (RAT) asociado con el <strong>DESARROLLADOR#POPPER<\/strong> familia de programas maliciosos.<\/p>\n<p>La lista de paquetes afectados es la siguiente:<\/p>\n<ul>\n<li>@joyfill\/layouts@0.1.2-2773.beta.0<\/li>\n<li>@joyfill\/components@4.0.0-rc24-2773-beta.4<\/li>\n<\/ul>\n<p>Los dos paquetes \u00abcontienen un implante de JavaScript en el momento de la importaci\u00f3n que resuelve el c\u00f3digo cifrado a trav\u00e9s de transacciones de Tron, Aptos y BNB Smart Chain\u00bb, afirm\u00f3 Socket. <a href=\"https:\/\/socket.dev\/blog\/joyfill-npm-beta-releases-compromised\" target=\"_blank\">dicho<\/a> en un an\u00e1lisis.<\/p>\n<p>A diferencia de otros paquetes maliciosos que se activan mediante un enlace de ciclo de vida de npm, el implante entregado como parte de las bibliotecas de JavaScript se ejecuta cuando Node.js carga el punto de entrada del paquete CommonJS.<\/p>\n<p>Vale la pena se\u00f1alar que el uso de una estructura de resoluci\u00f3n de m\u00faltiples cadenas de bloques que comprende Tron, Aptos y BNB Smart Chain (BSC) se ha vinculado a un grupo de amenazas rastreado como PolinRider, que se considera relacionado con Contagious Interview.<\/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>A principios de este mes, Checkmarx y OpenSourceMalware destacaron un conjunto de paquetes npm maliciosos denominados colectivamente ViteVenom dirigidos al ecosistema de herramientas frontend de Vite utilizando la misma infraestructura de comando y control (C2) basada en blockchain para entregar una RAT con shell inverso, recolecci\u00f3n de credenciales, exfiltraci\u00f3n de archivos e inyecci\u00f3n persistente de puerta trasera.<\/p>\n<p>El implante consta de dos secuencias paralelas de acciones:<\/p>\n<ul>\n<li>Una rama en proceso que conduce a una carga \u00fatil recuperada de JavaScript de 77 KB con similitudes con la familia de malware DEV#POPPER.<\/li>\n<li>Una rama secundaria que inicia un proceso Node.js separado y solicita una carga \u00fatil de arranque independiente desde el 23.27.13.[.]43, descifra la respuesta y la eval\u00faa.<\/li>\n<\/ul>\n<p>Una vez que se carga el paquete, inicia un env\u00edo basado en blockchain que obtiene un hash de transacci\u00f3n BSC de la \u00faltima transacci\u00f3n saliente de una direcci\u00f3n Tron codificada. Si este paso falla, consulta una cuenta de Aptos como alternativa para recuperar la transacci\u00f3n BSC y, a partir de ella, descifra y extrae el c\u00f3digo JavaScript y lo ejecuta.<\/p>\n<p>Tanto las sucursales en proceso como las independientes utilizan un conjunto distinto de direcciones de billetera, cuentas y transacciones para Tron, Aptos y BSC. El uso de blockchain tambi\u00e9n significa que ofrece resiliencia operativa y permite cambiar cargas \u00fatiles sin tener que publicar una nueva versi\u00f3n de los paquetes.<\/p>\n<p>La primera carga \u00fatil en proceso es un cargador de JavaScript que emplea el m\u00e9todo de resoluci\u00f3n blockchain para recuperar un malware de segunda etapa llamado \u00abclientCode\u00bb. El proceso separado, por otro lado, consulta la direcci\u00f3n IP antes mencionada para obtener y ejecutar c\u00f3digo JavaScript.<\/p>\n<p>\u00abEsta es una rama de entrega redundante, no una alternativa inofensiva\u00bb, explic\u00f3 Socket. \u00abEst\u00e1 separado del proceso de importaci\u00f3n de Node.js y puede continuar despu\u00e9s de que salga un comando de compilaci\u00f3n, prueba o CLI\u00bb.<\/p>\n<p>La carga \u00fatil final \u00abclientCode\u00bb est\u00e1 muy ofuscada y funciona como una RAT de Node.js con las siguientes caracter\u00edsticas, al tiempo que evita la ejecuci\u00f3n en m\u00e1quinas de desarrollo, CI o sandbox con los nombres de host github-runner, buildbot, buildkitsandbox y microsoft-standard-WSL2:<\/p>\n<ul>\n<li>Cargar archivos al host de carga configurado<\/li>\n<li>Recuperar JavaScript adicional<\/li>\n<li>Recopile detalles b\u00e1sicos del anfitri\u00f3n<\/li>\n<li>Enviar mensajes de registro de estado<\/li>\n<li>Lea los datos del portapapeles a trav\u00e9s de PowerShell en Windows, pbpaste en macOS y xclip o xsel en Linux<\/li>\n<\/ul>\n<p>Se han asociado dos cargas \u00fatiles con el proceso separado: el RAT \u00abclientCode\u00bb y un ladr\u00f3n de informaci\u00f3n de Python que puede recopilar una amplia gama de datos de hosts comprometidos. Se considera una iteraci\u00f3n del malware OmniStealer, cuyos detalles fueron <a href=\"https:\/\/thehackernews.com\/2026\/04\/285-million-drift-hack-traced-to-six.html#social-engineering-behind-contagious-interview-and-it-worker-fraud\" target=\"_blank\">destacado por primera vez por eSentire a principios de abril.<\/a><\/p>\n<p>Los datos recopilados por el malware se encuentran a continuaci\u00f3n:<\/p>\n<ul>\n<li>Informaci\u00f3n sobre el entorno y el anfitri\u00f3n<\/li>\n<li>Datos del Administrador de credenciales de Windows y del Servicio secreto de Linux<\/li>\n<li>Datos de los navegadores Chromium y Firefox<\/li>\n<li>Almacenamiento de extensiones de navegador para billeteras y administradores de contrase\u00f1as<\/li>\n<li>credenciales de git<\/li>\n<li>Configuraci\u00f3n de la CLI de GitHub<\/li>\n<li>Registros de escritorio de GitHub<\/li>\n<li>Almacenamiento de c\u00f3digo de Microsoft Visual Studio<\/li>\n<\/ul>\n<p>Socket le dijo a The Hacker News que tanto ViteVenom como la \u00faltima colecci\u00f3n de paquetes npm est\u00e1n conectados a la misma operaci\u00f3n en curso por parte de actores de amenazas norcoreanos, en lugar de representar campa\u00f1as separadas.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thn.news\/sygnia-webinar\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhleDdO_4O9-8Pkmidym8Pi9yV4V4jI_M5U0iNRDuoW5Jz3pq7DskZI9OqIChqmY1soaW1ppsC8VLeO55vxSh1m5Q8MJ9ZHuEOSNO5q7K-LwrF6IxrRfCIJOFyoBGaLXGZpkSo8tDirSz-9LmmoOs31tQTlvJWBMLiWJKqMFFaiMmNLV3l-p8zXaFm1VmGG\/s728-e100\/sygnia-d-2.png\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>Seg\u00fan la empresa de seguridad de aplicaciones, se dice que ambas versiones maliciosas fueron publicadas por la misma identidad npm usando Node.js 18.20.0 y npm 10.5.0, con el c\u00f3digo presente en el momento del paquete. Dicho esto, actualmente no est\u00e1 claro si esta inyecci\u00f3n de c\u00f3digo fuente se logr\u00f3 luego de comprometer una estaci\u00f3n de trabajo de desarrollador, un repositorio de c\u00f3digo fuente, un entorno de CI o credenciales de publicaci\u00f3n.<\/p>\n<p>Se recomienda a los desarrolladores que hayan instalado las versiones afectadas que las eliminen de los archivos de bloqueo, cach\u00e9s, espejos internos, im\u00e1genes de compilaci\u00f3n y artefactos de implementaci\u00f3n, las fijen a una versi\u00f3n verificada y roten las credenciales del proceso Node.js afectado.<\/p>\n<p>\u00abLa versi\u00f3n @joyfill\/layouts debe ser tratada como capaz de ejecutar c\u00f3digo arbitrario en el contexto de cualquier proceso que lo cargue\u00bb, dijo Socket. \u00abEsto incluye entornos de desarrollo, ejecutores de CI, herramientas de prueba, renderizado del lado del servidor y compilaciones\u00bb.<\/p>\n<p>\u00abEl c\u00f3digo final recuperado puede recopilar informaci\u00f3n del host, establecer un canal de control remoto Socket.IO, ejecutar JavaScript o comandos de shell suministrados, cargar archivos, leer datos del portapapeles y modificar archivos que pertenecen a herramientas de desarrollo\u00bb.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Las versiones beta de dos paquetes npm en el espacio de nombres @joyfill se han visto comprometidas para entregar un troyano de acceso remoto (RAT) asociado con el DESARROLLADOR#POPPER familia de programas maliciosos. La lista de paquetes afectados es la siguiente: @joyfill\/layouts@0.1.2-2773.beta.0 @joyfill\/components@4.0.0-rc24-2773-beta.4 Los dos paquetes \u00abcontienen un implante de JavaScript en el momento de [&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":[1084,1269,24,494,4131,739,4130,2332,277,276,209],"class_list":["post-1820","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-trending","tag-comprometidos","tag-cuando","tag-cyberdefensa-mx","tag-dos","tag-ejecutan","tag-importan","tag-joyfill","tag-node-js","tag-npm","tag-paquetes","tag-rat"],"_links":{"self":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1820","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=1820"}],"version-history":[{"count":0,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1820\/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=1820"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/categories?post=1820"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/tags?post=1820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}