Dos paquetes joyfill npm comprometidos ejecutan RAT cuando se importan a Node.js – CYBERDEFENSA.MX

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 «contienen un implante de JavaScript en el momento de la importación que resuelve el código cifrado a través de transacciones de Tron, Aptos y BNB Smart Chain», afirmó Socket. dicho en un análisis.

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.

Vale la pena señalar que el uso de una estructura de resolución de múltiples 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.

Ciberseguridad

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ón de credenciales, exfiltración de archivos e inyección persistente de puerta trasera.

El implante consta de dos secuencias paralelas de acciones:

  • Una rama en proceso que conduce a una carga útil recuperada de JavaScript de 77 KB con similitudes con la familia de malware DEV#POPPER.
  • Una rama secundaria que inicia un proceso Node.js separado y solicita una carga útil de arranque independiente desde el 23.27.13.[.]43, descifra la respuesta y la evalúa.

Una vez que se carga el paquete, inicia un envío basado en blockchain que obtiene un hash de transacción BSC de la última transacción saliente de una dirección Tron codificada. Si este paso falla, consulta una cuenta de Aptos como alternativa para recuperar la transacción BSC y, a partir de ella, descifra y extrae el código JavaScript y lo ejecuta.

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én significa que ofrece resiliencia operativa y permite cambiar cargas útiles sin tener que publicar una nueva versión de los paquetes.

La primera carga útil en proceso es un cargador de JavaScript que emplea el método de resolución blockchain para recuperar un malware de segunda etapa llamado «clientCode». El proceso separado, por otro lado, consulta la dirección IP antes mencionada para obtener y ejecutar código JavaScript.

«Esta es una rama de entrega redundante, no una alternativa inofensiva», explicó Socket. «Está separado del proceso de importación de Node.js y puede continuar después de que salga un comando de compilación, prueba o CLI».

La carga útil final «clientCode» está muy ofuscada y funciona como una RAT de Node.js con las siguientes características, al tiempo que evita la ejecución en máquinas de desarrollo, CI o sandbox con los nombres de host github-runner, buildbot, buildkitsandbox y microsoft-standard-WSL2:

  • Cargar archivos al host de carga configurado
  • Recuperar JavaScript adicional
  • Recopile detalles básicos del anfitrión
  • Enviar mensajes de registro de estado
  • Lea los datos del portapapeles a través de PowerShell en Windows, pbpaste en macOS y xclip o xsel en Linux

Se han asociado dos cargas útiles con el proceso separado: el RAT «clientCode» y un ladrón de información de Python que puede recopilar una amplia gama de datos de hosts comprometidos. Se considera una iteración del malware OmniStealer, cuyos detalles fueron destacado por primera vez por eSentire a principios de abril.

Los datos recopilados por el malware se encuentran a continuación:

  • Información sobre el entorno y el anfitrión
  • Datos del Administrador de credenciales de Windows y del Servicio secreto de Linux
  • Datos de los navegadores Chromium y Firefox
  • Almacenamiento de extensiones de navegador para billeteras y administradores de contraseñas
  • credenciales de git
  • Configuración de la CLI de GitHub
  • Registros de escritorio de GitHub
  • Almacenamiento de código de Microsoft Visual Studio

Socket le dijo a The Hacker News que tanto ViteVenom como la última colección de paquetes npm están conectados a la misma operación en curso por parte de actores de amenazas norcoreanos, en lugar de representar campañas separadas.

Ciberseguridad

Según 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ódigo presente en el momento del paquete. Dicho esto, actualmente no está claro si esta inyección de código fuente se logró luego de comprometer una estación de trabajo de desarrollador, un repositorio de código fuente, un entorno de CI o credenciales de publicación.

Se recomienda a los desarrolladores que hayan instalado las versiones afectadas que las eliminen de los archivos de bloqueo, cachés, espejos internos, imágenes de compilación y artefactos de implementación, las fijen a una versión verificada y roten las credenciales del proceso Node.js afectado.

«La versión @joyfill/layouts debe ser tratada como capaz de ejecutar código arbitrario en el contexto de cualquier proceso que lo cargue», dijo Socket. «Esto incluye entornos de desarrollo, ejecutores de CI, herramientas de prueba, renderizado del lado del servidor y compilaciones».

«El código final recuperado puede recopilar información 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».

Siete paquetes maliciosos de Vite npm utilizan Blockchain C2 para entregar una RAT – CYBERDEFENSA.MX

Investigadores de ciberseguridad han descubierto un grupo de siete paquetes npm maliciosos dirigidos al ecosistema de herramientas frontend de Vite como parte de un ataque a la cadena de suministro de software.

La campaña de paquetes maliciosos, cuyo nombre en código ViteVenom por Checkmarx, marca una expansión de velo de cadenaque se observó utilizando una infraestructura de comando y control (C2) basada en blockchain de cuatro niveles «sin precedentes» que abarca Tron, Aptos y Binance Smart Chain para ofrecer un shell inverso con capacidad de troyano de acceso remoto (RAT), recolección de credenciales, exfiltración de archivos e inyección persistente de puerta trasera.

«Esta táctica hace que desactivar o destruir la infraestructura C2 sea extremadamente difícil», dijo el investigador de Checkmarx Pavan Gudimalla en un análisis publicado el mes pasado. La actividad se ha atribuido a un actor de amenazas llamado SuccessKey, con evidencia de actividad maliciosa detectada ya el 27 de febrero de 2026, cuando se activaron las billeteras de criptomonedas vinculadas a ViteVenom.

Ciberseguridad

Si bien los typosquats publicados en npm en relación con ChainVeil se hicieron pasar por bibliotecas para Tailwind, Sass, ORM y herramientas de limitación de velocidad, la última versión se centra específicamente en los desarrolladores que crean aplicaciones utilizando Vite JavaScript y la herramienta de compilación frontend.

La lista de paquetes identificados, publicada entre el 29 de junio y el 3 de julio de 2026, se encuentra a continuación:

  • @uw010010/vite-tree (1070 descargas)
  • @vite-tab/tab (289 Descargas)
  • @vite-ln/build-ts (252 Descargas)
  • @vite-mcp/vite-type (239 Descargas)
  • @vite-pro/vite-ui (200 descargas)
  • @vitets/vite-ts (194 Descargas)
  • @vite-ts/vite-ui (176 descargas)

Otra diferencia crucial entre los dos grupos es que, a diferencia de los typosquats sin alcance de ChainVeil (por ejemplo, «rate-limit-flexible»), ViteVenom hace uso de nombres de paquetes con alcance en un intento de hacerse pasar por el espacio de nombres «@vitejs/*» y darle una apariencia de legitimidad.

El aspecto principal que une las dos campañas es el uso de infraestructura compartida de nivel 2, que se utiliza para entregar el RAT. Específicamente, esto involucra la misma billetera Tron y las direcciones de la cuenta Aptos, que apuntan a la misma transacción Binance Smart Chain (BSC) que conduce al malware.

Como en el caso de ChainVeil, el código malicioso no se ejecuta en el momento de la instalación sino en el momento de la importación, lo que tiene como consecuencia limitar las detecciones de seguridad de los terminales. Actúa como un cargador al llegar a la infraestructura blockchain para obtener la siguiente etapa:

  • Consulta la cadena de bloques de Tron para conocer la última transacción de la billetera del atacante.
  • Decodifica e invierte el campo de datos de la transacción para obtener un hash de transacción BSC.
  • Consulta la transacción BSC para extraer la carga útil cifrada de su campo de entrada.
  • Descifre la carga útil utilizando una clave codificada.

«El atacante almacena punteros de carga útil como datos de transacciones en cadenas de bloques públicas en lugar de nombres de dominio que pueden ser incautados, lo que hace que la infraestructura sea casi imposible de derribar», explicó Gudimalla.

Ciberseguridad

Si el método de recuperación de carga útil basado en Tron falla, el malware utiliza Aptos como respaldo. La carga útil, por su parte, consulta la cadena de bloques para recuperar la configuración C2 y un cargador de siguiente etapa responsable de lanzar la RAT. Al mismo tiempo, existe un mecanismo alternativo que recupera el RAT directamente del servidor C2 a través de HTTP, evitando por completo la cadena de bloques.

Se recomienda a los usuarios que hayan instalado los paquetes que los eliminen inmediatamente, auditen las dependencias, roten todas las credenciales y busquen modificaciones no autorizadas en los archivos .bashrc, .zshrc y .profile.

«Las diferencias a nivel superficial (diferentes nombres de paquetes, diferentes cuentas de mantenedor, diferentes billeteras de nivel 1, diferentes rutas de archivos maliciosos) son consistentes con cómo un solo operador compartimentaría múltiples pistas de distribución para limitar la exposición», dijo Checkmarx.

Los paquetes npm de AsyncAPI comprometidos generan malware de botnet de múltiples etapas – CYBERDEFENSA.MX

Se han observado cuatro paquetes npm comprometidos en el espacio de nombres @asyncapi distribuyendo un cargador de botnet de varias etapas, según los hallazgos de Seguridad buey, SafeDep, Enchufey PasoSeguridad.

Los paquetes afectados se enumeran a continuación:

  • @asyncapi/generator-helpers@1.1.1
  • @asyncapi/generator-components@0.7.1
  • @asyncapi/generador@3.3.1
  • @asyncapi/specs(v6.11.2, v6.11.2-alpha.1)

«Los paquetes comprometidos implementan una carga útil ofuscada de primera etapa que descarga una carga útil cifrada de segunda etapa, identificada como Miasma, desde IPFS», dijo Socket.

Los paquetes envenenados incluyen un implante de JavaScript oculto, y cada uno de ellos contiene un archivo fuente inyectado que se decodifica en el mismo descargador de segunda etapa. A diferencia de iteraciones anteriores que aprovechaban los ganchos de instalación para activar la ejecución de una carga útil de JavaScript, en este caso el código malicioso se ejecuta cuando Node.js carga el módulo infectado, después de lo cual lanza un nodo en segundo plano independiente que descarga y ejecuta el malware desde IPFS.

Ciberseguridad

La carga útil de la siguiente etapa es un cargador de JavaScript cifrado llamado «sync.js», que se escribe en rutas específicas del sistema operativo y se ejecuta. La URL de descarga es «ipfs[.]io/ipfs/QmQobZSp1wRPrpSEQ56qnyq7ecZh5Bg5k1fnjt4SUwwHb9.» El cargador contiene dos componentes:

  • La carga útil final de JavaScript cifrada, que se decodifica en el marco de tareas de Miasma.
  • Un gran blob cifrado utilizado por el marco de la cadena de generación del tiempo de ejecución.

El marco incluye 744 módulos y está construido como un marco de comando que admite seis canales de comunicación de comando y control (C2) independientes usando HTTP, Nostr Relay, IPFS, BitTorrent DHT, libp2p GossipSub P2P mesh y un contrato inteligente Ethereum.

Además de facilitar el robo de credenciales, el envenenamiento de herramientas de inteligencia artificial, el movimiento lateral de la LAN y la propagación similar a un gusano en los registros npm, PyPI y Cargo, Miasma presenta un mecanismo de persistencia propio, configurando claves de inicio automático systemd, crontab, macOS launchd y Windows Registro.

«Aunque el malware tiene algunas similitudes con las campañas Shai-Hulud y Miasma, y ​​contiene la cadena Miasma varias veces dentro de su código, este malware no es el mismo, ni se atribuye a las campañas Miasma/Shai-Hulud/TeamPCP que hemos visto en el pasado», dijo Moshe Siman Tov Bustan de OX Security.

Además, incorpora un interruptor de hombre muerto que monitorea un token robado y activa un borrado de directorio si el token es revocado, evitando sistemas identificados como sandboxes o entornos virtuales, así como aquellos que tienen su idioma actual configurado en ruso o tienen instaladas herramientas de seguridad de CrowdStrike, SentinelOne, Microsoft Defender, CarbonBlack, Cylance, Osquery, Tanium y Qualys.

Ciberseguridad

«Su camino operativo más claro es C2 basado en REST: el implante apunta a un punto final HTTP, acepta tareas cifradas y publica los resultados de los comandos en la misma infraestructura. Alrededor de ese núcleo, la carga útil también brinda soporte para transporte de carga, cifrado de comandos, firma de nodos, actualizaciones de carga útil, administración de archivos, ejecución de shell y escritura de persistencia».

Según StepSecurity, se dice que el atacante obtuvo acceso push a los repositorios y utilizó el canal de lanzamiento legítimo de GitHub Actions del proyecto para publicar paquetes con certificaciones de procedencia OIDC válidas. El ataque a la cadena de suministro no implicó el robo de un token npm.

«Ambos ataques son compromisos de canalización de CI/CD, no tokens npm robados ni mantenedores maliciosos», dijo el investigador de seguridad Rohan Prabhu. «El atacante impulsó las confirmaciones bajo una identidad git de marcador de posición y dejó que el flujo de trabajo de lanzamiento real de cada repositorio hiciera la publicación a través de la integración de editor confiable GitHub OIDC de npm».

«Los paquetes resultantes llevan certificaciones de procedencia SLSA legítimas, lo que demuestra únicamente que el flujo de trabajo autorizado del proyecto los produjo, no que las confirmaciones desencadenantes fueron legítimas. La procedencia no protege contra una credencial push comprometida».

Desde entonces, las cinco versiones maliciosas no se han publicado en el registro npm. Se recomienda tratar cualquier punto final que haya importado o ejecutado una de las versiones del paquete afectado como potencialmente comprometido. Sin embargo, cabe señalar que la exposición depende de si el módulo infectado se cargó como parte de una compilación o de un flujo de trabajo de desarrollador.

«No hay ningún script de preinstalación/postinstalación/instalación en ninguno de los tres archivos package.json», dijo StepSecurity. «Este cuentagotas se activa cuando se requiere el módulo envenenado () durante el uso normal del generador: en el momento en que un trabajo de compilación o CI realmente llama a la biblioteca, no en el momento de la instalación de npm».

Paquetes de 148 npm disfrazados de servidores proxy para estudiantes convirtieron los navegadores en una botnet DDoS – CYBERDEFENSA.MX

Una campaña de paquetes de 148 npm disfrazados de servidores proxy web para estudiantes convirtió los navegadores de los visitantes en una botnet distribuida de denegación de servicio durante aproximadamente dos semanas en mayo, según una nueva investigación de JFrog.

Los paquetes no perseguían a los desarrolladores que podrían instalarlos. Los operadores utilizaron el registro como alojamiento gratuito para un sitio proxy con trampa explosiva y dejaron que los estudiantes que vinieron a esquivar los filtros web de la escuela suministraran el tráfico de ataque.

Los paquetes se enviaron con nombres como charlie-kirk, ilovefemboys y miguelphonk, cada uno con una aplicación proxy con la marca «Lucide» y vestida como una página de inicio de tutoría llamada Riverbend Tutoring o Northstar Tutoring.

En la superficie, el proxy funcionó, permitiendo a los estudiantes pasar los filtros de contenido para acceder a juegos y sitios bloqueados. Debajo, cargó un cargador de código remoto cuya carga útil los operadores podían intercambiar a voluntad, además de un generador de inundación WebSocket creado para hablar el protocolo proxy Wisp. Cualquiera que abriera una página se unía al enjambre sin saberlo.

Nada de esto se ejecuta en el momento de la instalación. Los paquetes no incluyen enlaces de ciclo de vida ni scripts de compilación nativos, y nunca fueron escritos para ser importados a un proyecto.

El gusano Shai-Hulud autorreplicante que afectó a más de 500 paquetes en septiembre de 2025 recopiló secretos de los desarrolladores y se volvió a publicar con tokens robados. Días antes, un ataque de phishing al mantenedor conocido como qix deslizó código de drenaje de billetera en chalk, debug y otros 16 paquetes con miles de millones de descargas semanales entre ellos.

Ciberseguridad

Esos ataques se activan en el momento en que se instala un paquete y se dirigen a las personas que crean el software. Éste omite el proceso de compilación y espera en una pestaña del navegador.

Un anterior aviso de SafeDep catalogó 141 de los paquetes en mayo y leyó la operación como adware y abuso de registro: anuncios popunder, scripts de monetización de terceros y seguimiento de Google Analytics incorporados en un proxy Scramjet dirigido a estudiantes. Eso se mantuvo en lo que era visible en la superficie.

JFrog tiró del hilo más. El equipo desofuscó el paquete de entrada de la aplicación, una sola línea de JavaScript de 5,4 MB que se descomprimió en más de 20.600 líneas de código legible, y recuperó cargas útiles archivadas de Wayback Machine para reconstruir la línea de tiempo de la campaña.

Dos módulos se encontraban debajo del adware y ambos se activaban antes de que se renderizara la interfaz de React.

El primero, que JFrog llama G2es un cargador de scripts remoto y recupera el código de la forma más insegura posible. Extrae JavaScript de un repositorio de GitHub a través de la CDN jsDelivr, apunta a la rama principal mutable en lugar de una confirmación fijada, no incluye verificación de integridad de subrecursos y ejecuta todo lo que regresa con los propios privilegios de origen del sitio proxy: acceso completo a cookies, almacenamiento local y puntos finales del mismo origen.

Una política de no referencia evita que la solicitud anuncie su procedencia. Quien tenga la cuenta de GitHub detrás de ella puede cambiar el código que se ejecuta en el navegador de cada visitante cuando lo desee.

Red de robots DDoS

El repositorio devolvía un 404 cuando JFrog lo miró, pero una copia archivada del 30 de mayo conservaba lo que había servido: una burda inundación HTTP. Cada 500 milisegundos, el script crea una nueva cadena de un millón de caracteres y la activa como un POST sin cors en cdn.caan.edu, que JFrog identifica como el dominio público de una escuela de enfermería en Matteson, Illinois.

Las solicitudes nunca esperan una respuesta, por lo que se acumulan. JFrog registra cada visitante activo a aproximadamente 2 MB por segundo de carga, lo que significa que mil pestañas proxy abiertas empujarían alrededor de 2 GB por segundo al objetivo. Un parámetro de consulta aleatorio anula el almacenamiento en caché de los servidores proxy y no-cors omite la verificación previa de CORS, por lo que nada limita los paquetes.

El segundo módulo, I2es el más agudo. Obtiene un archivo de texto sin formato, websocket.txt, que contiene una URL de WebSocket de destino y un recuento de sockets limitado entre 1 y 1024, luego abre esa cantidad de conexiones en un bucle escalonado. La configuración archivada apuntó a cada navegador a 30 conexiones a un punto final Wisp en lunaron[.]arriba, un proxy en vivo ocupado inyectando publicidad maliciosa.

Jirón es un protocolo de Mercury Workshop de bajo costo para hacer túneles de muchos sockets TCP y UDP a través de un único WebSocket, y es una plomería común en la misma escena de proxy de navegador que estos paquetes imitan.

Una vez conectado, cada navegador configura su socket en modo binario y, cada 100 milisegundos, envía una trama Wisp CONNECT válida seguida de una trama CLOSE, ambas apuntando a localhost:1. Los fotogramas son paquetes Wisp little-endian correctos, por lo que el objetivo no es la propia máquina del estudiante. Es el servidor Wisp remoto en el otro extremo de la conexión.

Eso lo convierte en un ataque de plano de control en lugar de volumétrico. Un solo navegador que ejecute los 1.024 sockets completos puede presionar a un servidor Wisp para que asigne y elimine alrededor de 10.240 conexiones por segundo mientras escribe más de 20.000 líneas de registro en el mismo tramo.

JFrog señala que Mercury Workshop nodo-servidor-wisp abre un socket nuevo para cada trama CONNECT sin verificar si el destino es un loopback o una dirección privada, y registra cada intento. Esto agota los descriptores de archivos, inunda el almacenamiento de registros y descarta el proxy. wisp-server-node ya está en desuso; sus encargados están indicando a los usuarios exactamente esta clase de problema de seguridad y estabilidad.

Entonces, la campaña convirtió una herramienta de proxy estudiantil en un arma contra los servidores de los que dependen otros proxy estudiantiles, y apuntó una inundación separada a una escuela lateral.

La infraestructura está muy agrupada y no está diseñada para esconderse. JFrog rastreó las compilaciones hasta una organización de GitHub llamada lucideproxy cuyas cuentas se registraron con segundos de diferencia, vinculadas a un correo electrónico de confirmación en geeked.[.]Wtf y un identificador de Discord. Noventa de los 93 nombres de host de implementación que encontró se resolvieron en una dirección IP, 92.38.177[.]17, organizado por G-Core Labs.

Entre los nombres de los paquetes juveniles, un script de shell de publicación automática dejado dentro de los archivos comprimidos y un comentario «TY WAVES + CHATGPT ILY» que SafeDep encontró en el trabajador del servicio, ambas empresas leen al operador como joven. Una cuenta envió 116 paquetes en menos de 35 minutos y npm no hizo nada para ralentizarlo.

Ciberseguridad

El historial de confirmaciones de JFrog describe el arco. El proyecto comenzó como simple adware en marzo, agregó el cargador remoto y el generador Wisp en una ráfaga de dos días a mediados de mayo, ejecutó la inundación en vivo contra la escuela de enfermería a fin de mes y luego eliminó los módulos maliciosos nuevamente el 31 de mayo cuando comenzaron los informes.

Una segunda ola el 8 de julio, bajo una nueva cuenta, elevó el total a 148 paquetes y envió la versión limpia y solo con publicidad. La aplicación todavía está ofuscada, todavía carga scripts de terceros desde dominios de atacantes y el cargador todavía apunta a una rama mutable. La capacidad DDoS no ha desaparecido, sólo está desactivada. JFrog señala que los operadores conservan la capacidad de rearmarlo: un compromiso con esa rama mutable, no se requiere actualización del paquete.

Desde entonces, muchos de los paquetes de la campaña han sido retirados de npm y reemplazados con el marcador de posición de seguridad estándar 0.0.1 del registro. Una verificación aleatoria realizada por The Hacker News en todas las familias de paquetes el 14 de julio de 2026 encontró que la mayoría había desaparecido, pero charlie-kirk aún ofrecía las dos versiones que JFrog marcó como maliciosas, 2.0.0 y 3.0.1.

Debido a que la amenaza se envía como una aplicación web del lado del cliente en lugar de un implante en el momento de la instalación, la solución de JFrog sigue el método de entrega.

Los administradores de redes escolares y corporativas, donde estos servidores proxy atraen la mayor cantidad de tráfico, deberían bloquear los dominios de la campaña a nivel de DNS. La monetización y los hosts de secuencias de comandos que aún alcanza la versión actual, entre ellos woofbeginner[.]com y c.vipersfutbol[.]com, son los que deben bloquear primero.

Cualquiera que haya cargado uno de los sitios proxy debe borrar el caché del navegador y el almacenamiento local y cancelar el registro de cualquier trabajador de servicio dejado por un dominio de tutoría o proxy. Los equipos cuyos entornos de compilación obtuvieron los paquetes nombrados deben extraerlos de los manifiestos y archivos de bloqueo y reconstruirlos de forma limpia. El artículo de JFrog incluye la lista completa de 148 paquetes, dominios, direcciones IP y hashes.

The Hacker News se comunicó con JFrog para obtener más detalles sobre la escala de la botnet y si el ataque WebSocket se ejecutó contra un objetivo vivo, y actualizará esta historia con cualquier respuesta.

Los escáneres de dependencias y los entornos sandbox en el momento de la instalación están diseñados para detectar el código que se ejecuta en npm install. Este código nunca solicitó ser instalado. Mientras los registros públicos funcionen como CDN gratuitos, es posible que los paquetes por los que vale la pena preocuparse sean cada vez más aquellos que ningún proceso de construcción jamás obtenga.

La versión comprometida de jscrambler 8.14.0 npm elimina Rust Infostealer durante la instalación – CYBERDEFENSA.MX

El paquete jscrambler npm se vio comprometido y con solo instalar su versión 8.14.0 se ejecuta un robo de información en su máquina. Publicada el 11 de julio de 2026, la versión maliciosa incluye un gancho de preinstalación que coloca y ejecuta un binario nativo, uno para Windows, otro para macOS y otro para Linux.

Socket marcó el lanzamiento seis 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 ejecutó con cualquier acceso que tuviera su proceso de instalación.

Nada de esto está en la versión anterior, 8.13.0. La diferencia del paquete muestra dos archivos nuevos en dist/: setup.js, un pequeño 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.

Durante la instalación, 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.

Los archivos agregados están en el paquete publicado, pero en ninguna parte de la fuente pública de jscrambler. PasoSeguridad y SafeDep Ambos extrajeron y analizaron la versión, y ambos informan que no hay confirmación, etiqueta o solicitud de extracción coincidentes para 8.14.0 en el repositorio de GitHub.

Su última etiqueta sigue siendo 8.13.0. La versión se envió directamente a npm con una cuenta de mantenimiento legítima, sin pasar por el flujo de lanzamiento normal del proyecto. Eso apunta a una cuenta npm comprometida o una canalización de compilación. Cuál de los dos no ha sido establecido.

La carga útil es un ladrón de información de Rust, creado para las tres plataformas, que busca secretos en una máquina de desarrollador y los envía a un servidor directo a través de TLS, según el análisis actualizado de Socket y una declaración a The Hacker News.

Ciberseguridad

La lista de objetivos es amplia y está 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óveda del administrador de contraseñas de Bitwarden; contraseñas y cookies almacenadas en el navegador; y sesiones de Discord, Slack, Telegram y Steam.

También busca algo más nuevo: los archivos de configuración para herramientas de codificación 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.

Los binarios hacen más que robar. En Linux, la carga útil 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úcleo, no del acceso a archivos del espacio de usuario del que depende el resto del ladrón. Tanto StepSecurity como SafeDep señalaron la capacidad, aunque lo que hace el eBPF aún se está desmantelando.

Las compilaciones de Windows y macOS agregan comprobaciones antidepuración y el ladrón 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ón. Sus detalles de comando y control permanecen cifrados en el binario y nunca aparecen en el análisis estático.

El monitoreo del tiempo de ejecución de StepSecurity detectó que el binario caído llegaba a dos direcciones IP codificadas y a la infraestructura Tor, los primeros indicadores de red publicados para la campaña.

jscrambler es una herramienta en tiempo de compilación, que se instala como una dependencia de desarrollo o se ejecuta desde CI. Esos entornos contienen lo que recopila el ladrón: claves de nube, tokens de implementación y código fuente al que puede acceder un proceso de compilación o CI.

Fuente: Paso Seguridad

El paquete recibe alrededor de 15.800 descargas por semana y aún no se sabe cuántas extrajeron la versión comprometida. Esa es una huella mucho menor que la de los paquetes afectados en los grandes compromisos de npm del año pasado, que generan miles de millones de descargas por semana entre ellos.

Sin embargo, para un ladrón cuyo objetivo era construir máquinas, el alcance nunca fue el objetivo. El acceso es.

El gusano Shai-Hulud se ejecutó desde un gancho de instalación para robar tokens y distribuido a través de cientos de paquetes aquel septiembre. Los paquetes de tiza y depuración ampliamente utilizados fueron asumido a través de una cuenta de mantenedor phishing y se utiliza para redirigir pagos criptográficos.

En marzo, una cuenta secuestrada introdujo un troyano multiplataforma en Axios, una biblioteca HTTP con más de 83 millones de descargas semanales. Lo que hace que el momento sea preciso aquí es que npm acababa de moverse en contra de esta ruta exacta: NPM 12 se envió el 8 de julio, tres días antes de este lanzamiento, con los scripts de instalación de dependencias desactivados de forma predeterminada.

En npm 12, un enlace de preinstalación como este no se ejecuta a menos que alguien lo apruebe. Los clientes más antiguos todavía los ejecutan automáticamente.

Desde entonces, la versión 8.15.0 la reemplazó en la parte superior de lista de versiones de npmpublicado 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ón, sin binario incluido. Pero la versión 8.14.0 no fue eliminada.

Ciberseguridad

Todavía está en npm, por lo que cualquier archivo de bloqueo o comando fijado en él sigue instalando el ladrón. Sólo 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ón.

Que hacer ahora

  1. Bájese de 8.14.0. Vaya a 8.15.0 o fije a 8.13.0 para obtener una versión anterior al incidente y borre jscrambler@8.14.0 de los archivos de bloqueo y cachés.
  2. 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ón de dist/setup.js, a partir del 11 de julio. El cargador coloca su carga útil 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ón con los procesos secundarios de Node y la ejecución 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.
  3. Si 8.14.0 se ejecutó en una máquina, 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ón.

La limpieza fue rápida, pero un ladrón hace su trabajo segundos después de la instalación. Una compilación anclada a 8.14.0, en un cliente anterior que ejecuta scripts de instalación, aún ejecuta la carga útil. Y en cualquier máquina que ya lo ejecutara, los secretos desaparecieron antes de que 8.15.0 llegara a la cima de la lista.

Indicadores de compromiso

Paquete malicioso: jscrambler@8.14.0. Hashes SHA-256 para los archivos agregados y sus cargas útiles descomprimidas:

  • dist/setup.js: a742de963f14a92d24ebcbc7b44ac867e23a20d31d1b0094a13a4f83287f4e60
  • dist/intro.js: a41a523ef9517aab37ed6eea0ec881821bdcb7aefcb5c5f603adc7907f868c86
  • Carga útil de Linux: fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bd
  • Carga útil de Windows: b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903
  • Carga útil de macOS: c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fd

Puntos finales de red StepSecurity observados en tiempo de ejecución. Las dos IP son los puntos finales del atacante directo; el binario también llega a la infraestructura Tor, probablemente para conectividad o enrutamiento:

  • IP C2: 37.27.122[.]124
  • IP C2: 57.128.246[.]79
  • Infraestructura Tor: check.torproject[.]org, archivo.torproject[.]organización

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ás de una tarea programada oculta de Windows o un LaunchAgent de macOS para persistencia.

El compromiso de GitHub de Injective Labs impulsa los paquetes npm para robar claves de billetera – CYBERDEFENSA.MX

Actores de amenazas desconocidos comprometieron el repositorio GitHub del proyecto Injective Labs SDK y lo aprovecharon para publicar un paquete malicioso en el registro npm para robar claves privadas de billeteras de criptomonedas y frases iniciales mnemotécnicas.

La versión comprometida, @injectivelabs/sdk-ts@1.20.21venía integrado con una funcionalidad de telemetría falsa que extraía datos de billeteras de criptomonedas. La versión se lanzó el 8 de julio de 2026, pero desde entonces ha sido obsoleto en el registro. Dicho esto, los artefactos de lanzamiento que pertenecen a la versión comprometida son todavía disponible para descargar desde GitHub al momento de escribir este artículo.

«La funcionalidad maliciosa se introdujo en el repositorio oficial de GitHub del proyecto a través de confirmaciones enviadas por una cuenta de GitHub que pertenece a un desarrollador con un historial establecido de contribuciones al repositorio», Socket dicho.

Ciberseguridad

La firma de seguridad de la cadena de suministro de software dijo que el actor de amenazas detrás del ataque también publicó la versión 1.20.21 en 17 paquetes adicionales con alcance de @injectivelabs que dependían y fijaban la versión maliciosa del SDK, poniendo así a los usuarios transitivos que tal vez no hayan instalado la biblioteca directamente. Esto incluye –

  • @injectivelabs/utils
  • @injectivelabs/redes
  • @injectivelabs/tipos-ts
  • @injectivelabs/excepciones
  • @injectivelabs/base-billetera
  • @injectivelabs/wallet-core
  • @injectivelabs/billetera-cosmos
  • @injectivelabs/billetera-clave-privada
  • @injectivelabs/billetera-evm
  • @injectivelabs/billetera-trezor
  • @injectivelabs/billetera-cosmostation
  • @injectivelabs/billetera-ledger
  • @injectivelabs/wallet-wallet-connect
  • @injectivelabs/billetera-mágica
  • @injectivelabs/estrategia-billetera
  • @injectivelabs/billetera-llave en mano
  • @injectivelabs/billetera-cosmos-estrategia

El malware presente en el paquete es bastante simple y directo, y se activa cuando un desarrollador desprevenido utiliza la funcionalidad de la biblioteca. Al evitar los scripts del ciclo de vida y no ejecutarlos durante la fase de instalación, se ayuda a que el malware pase desapercibido.

Específicamente, se ha descubierto que la versión envenenada modifica funciones legítimas utilizadas en flujos de trabajo para generar claves privadas al invocar una función «trackKeyDerivation()» con el pretexto de recopilar métricas de uso anónimas para la optimización del SDK.

«Rastrea qué métodos de derivación de claves se utilizan (hexadecimal versus mnemónico) y deriva patrones de tiempo para ayudar al equipo del SDK a identificar cuellos de botella en el rendimiento y comprender la adopción de diferentes formatos de claves en todo el ecosistema», se lee en la descripción de la supuesta función de telemetría. «Todas las métricas se activan y olvidan y nunca bloquean ni afectan la derivación de claves».

Según Socket, los parámetros pasados ​​a la función incluyen un marcador codificado que describe el método utilizado para generar la clave privada y la información confidencial real necesaria para generar la clave privada. El material capturado es suficiente para que el actor de la amenaza regenere la clave privada.

Ciberseguridad

«El malware agrega lógica de robo de billetera criptográfica a un paquete de billetera criptográfica, cada vez que un usuario legítimo crea o usa la lógica que lee frases mnemotécnicas, que son básicamente la clave maestra para cualquier billetera criptográfica, el malware las lee y las envía al servidor remoto», OX Security dicho.

En un intento por reducir el número de solicitudes salientes, el mecanismo de exfiltración es diseñado para agregar múltiples derivaciones de claves en una ventana de dos segundos en una sola cola y luego enviarlas en forma de una solicitud HTTPS POST a un servidor externo («testnet.archival.chain.grpc-web.injective[.]red») en una sola baliza.

PasoSeguridad anotado la liberación maliciosa se facilitó a través del canal de editor confiable (OIDC) del repositorio, agregando que las confirmaciones maliciosas fueron creadas y enviadas bajo la identidad de un mantenedor confiable existente («thomasRalee»).

Se recomienda a los usuarios que hayan instalado la versión maliciosa que actualicen a la versión limpia recién publicada del paquete (1.20.23), traten cualquier clave privada o frase mnemotécnica que pase a través del paquete como comprometida y las roten, y verifiquen si hay dependencias transitivas.

npm 12 deshabilita la instalación de scripts de forma predeterminada para reducir el riesgo de la cadena de suministro – CYBERDEFENSA.MX

GitHub tiene oficialmente anunciado el lanzamiento de npm versión 12 con los scripts de instalación deshabilitados de forma predeterminada, junto con los tokens de acceso granular (GAT) en desuso diseñados para evitar la autenticación de dos factores (2FA).

La subsidiaria propiedad de Microsoft señaló que los siguientes comportamientos de instalación de npm que solían ejecutarse automáticamente antes se han habilitado:

  • El valor predeterminado de enableScripts está desactivado, lo que significa que los scripts del ciclo de vida de la dependencia (es decir, preinstalación, instalación, postinstalación) y las compilaciones implícitas de node-gyp ya no se ejecutan a menos que se permitan explícitamente.
  • –allow-git tiene el valor predeterminado none, lo que significa que –allow-git tiene el valor predeterminado none: las dependencias de Git (directas o transitivas) ya no se resuelven a menos que se permitan explícitamente.
  • –allow-remote tiene el valor predeterminado none, lo que significa que las dependencias de URL remotas (por ejemplo, archivos tar https) ya no se resuelven a menos que se permitan explícitamente.

Para revisar y aprobar scripts confiables, ahora los usuarios deben ejecutar: «npm aprobar-scripts –allow-scripts-pending» y luego confirmar la lista de permitidos resultante en el archivo «package.json».

Ciberseguridad

Vale la pena señalar que estos cambios se obtuvieron una vista previa el mes pasado, y GitHub recomendó a los desarrolladores actualizar a npm 11.16.0 o más reciente, ejecutar el comando de instalación normal y revisar las advertencias mostradas.

La última versión de npm también introduce dos nuevos cambios:

  • Los GAT de npm configurados para omitir 2FA ya no podrán realizar acciones confidenciales de administración de cuentas, paquetes y organizaciones. Esto incluye crear o eliminar tokens, generar códigos de recuperación y cambiar la contraseña de la cuenta npm, el correo electrónico, el perfil o la configuración 2FA, cambiar el acceso a los paquetes, los mantenedores o la configuración de publicación confiable, y administrar la membresía de la organización y el equipo, así como sus concesiones de paquetes.
  • Los GAT de npm ya no conservarán la capacidad de publicar directamente. Su superficie de publicación se limitará a leer paquetes privados y realizar una publicación, donde un paquete solo se vuelve público después de la aprobación humana de 2FA.

Se espera que el primero de los dos cambios entre en vigor a principios de agosto de 2026. Mientras tanto, se recomienda dejar de usar tokens de derivación de 2FA para las operaciones antes mencionadas y realizarlas de forma interactiva con 2FA. El segundo cambio está previsto para enero de 2027.

«Para prepararse, planee trasladar la publicación automatizada a una publicación confiable (OIDC) o una publicación por etapas con un paso de aprobación humana, en lugar de un token de publicación de larga duración», dijo GitHub.

Ciberseguridad

El desarrollo llega como pnpm 11.10. presenta una nueva configuración «_auth» para configurar la autenticación del registro como un valor único estructurado con clave URL.

«El beneficio de seguridad es que la credencial y el host al que pertenece viajan juntos, y pnpm lee _auth solo desde el entorno o la configuración global, nunca desde los archivos de un proyecto», Socket explicado.

«Eso significa que un pnpm-workspace.yaml o .npmrc malicioso o comprometido dentro de un repositorio no puede apuntar un token válido a un host diferente. Un archivo de proyecto manipulado es una forma común en que los atacantes consiguen un punto de apoyo, y redirigir un token de registro es una ruta directa para robarlo, por lo que cerrar esa ruta elimina la exposición».

Los paquetes npm vinculados a Corea del Norte imitan los Polyfills acumulativos para robar secretos de los desarrolladores – CYBERDEFENSA.MX

Los actores de amenazas con vínculos con Corea del Norte han sido vinculados a un nuevo conjunto de paquetes npm maliciosos que se hacen pasar por herramientas Rollup polyfill para facilitar el acceso remoto y el robo de datos.

Según JFrog, los paquetes «rollup-packages-polyfill-core» y «rollup-runtime-polyfill-core» imitan el legítimo «nodo-polyfill-del-complemento acumulativo«proyecto, hasta la descripción, los metadatos del repositorio y la forma del paquete.

«Los paquetes similares se ubican en el mismo espacio de nombres de rollup, polyfill, núcleo y nodo, lo que puede parecer plausible durante una revisión rápida de dependencia», JFrog dicho en un informe técnico de la campaña.

La campaña también involucra otros cuatro paquetes, todos los cuales han sido eliminados del registro npm:

  • ficha peculiar
  • reaccionar-icono-svgs
  • complemento-rollup-polyfill-connect
  • flujo de análisis rápido

Lo que es digno de mención aquí es que «rollup-packages-polyfill-core» instala y carga «swift-parse-stream», mientras que «rollup-runtime-polyfill-core» instala y «quirky-token». De manera similar, se ha descubierto que «react-icon-svgs» instala «rollup-plugin-polyfill-connect» como segunda etapa.

Ciberseguridad

«Los paquetes de la segunda etapa son utilidades SVG casi idénticas que obtienen un objeto JSON de JSONKeeper y evalúan el campo del modelo», dijo la compañía de ciberseguridad. «Esta estructura en capas, junto con los nombres parecidos, los metadatos de apariencia legítima, la ejecución oculta en el momento de la instalación, las comprobaciones del entorno y las cargas útiles de robo de credenciales/acceso remoto, es similar a campañas anteriores de npm vinculadas a Lazarus de Corea del Norte».

Vale la pena enfatizar aquí que esta no es la primera vez que los actores de amenazas norcoreanos cargan paquetes npm que se hacen pasar por herramientas Rollup Polyfill. En abril de 2026, Panther detalló una campaña sostenida de npm que implicó la publicación de 108 paquetes npm maliciosos que abarcan 261 versiones para entregar BeaverTail y OtterCookie, dos conocidas familias de malware vinculadas a Contagious Interview. Entre esos paquetes se encontraba «rollup-plugin-polyfill-route», que se publicó el 20 de marzo de 2026.

El punto de partida del ataque es un comando de instalación npm codificado en Base64 para «swift-parse-stream» (o «quirky-token») que está oculto dentro de «rollup-packages-polyfill-core» (o «rollup-runtime-polyfill-core»). Los dos paquetes de la segunda etapa están disfrazados de utilidades de desinfección de SVG, mientras acceden a una URL de JSON Keeper para recuperar y ejecutar un malware de JavaScript.

El código JavaScript ejecuta comprobaciones para evitar la ejecución en entornos de desarrollo en la nube, entornos sandbox, tiempos de ejecución sin servidor e infraestructura de análisis. Pasada esta puerta, el malware instala las dependencias necesarias y llega a un servidor externo («216.126.236[.]244») para recuperar una carga útil de JavaScript cifrada.

Luego, la carga útil descifrada actúa como un cargador de secuencias de comandos adicionales responsables de permitir el acceso remoto al host comprometido para admitir sesiones de terminal interactivas, ejecución de comandos, captura de pantalla, terminación de procesos, movimiento del mouse solo para Windows, clics, desplazamiento, pulsaciones de teclado y teclas de acceso rápido usando el paquete «@nut-tree-fork/nut-js», así como robar datos de navegadores web y billeteras de criptomonedas, recopilar archivos que coincidan con extensiones específicas y capturar periódicamente el contenido del portapapeles.

Las características se superponen con las de OtterCookie, y el uso de «@nut-tree-fork/nut-js» para el control remoto del mouse y el teclado también se observa en un paquete llamado «express-session-js» que fue detallado por SafeDep en abril de 2026. Se ha descubierto que el componente recopilador de archivos busca específicamente el historial del editor asociado con Microsoft Visual Studio Code, Windsurf y Cursor, junto con configuraciones de herramientas de inteligencia artificial y desarrolladores, como AWS, Microsoft Azure, Google Gemini, Anthropic Claude, Foundry, SSH y Z shell (Zsh).

«Los complementos acumulativos se cargan comúnmente desde archivos de configuración locales, estaciones de trabajo de desarrolladores y trabajos de CI», dijo JFrog. «Estos entornos a menudo tienen acceso a activos confidenciales como código fuente, tokens npm, credenciales de Git, claves de nube, claves SSH, datos del navegador y secretos de proyectos».

«La carga útil también es más amplia que un simple descargador. Una vez que se ejecutan las etapas posteriores, el atacante obtiene capacidades de recopilación y control. Esto hace que la carga útil sea relevante para las estaciones de trabajo de los desarrolladores y las máquinas de construcción, donde las claves API, las claves SSH, el material de la billetera, las credenciales de la nube y los secretos del proyecto a menudo están presentes».

Ciberseguridad

La divulgación coincide con el descubrimiento de múltiples ataques a la cadena de suministro de software por parte de Checkmarx, SafeDep y el investigador de seguridad de AWS, Chi Tran, destinados a envenenar repositorios de paquetes de código abierto y robar datos valiosos.

  • Un grupo de al menos ocho horquillas «pirograma» troyanizadas publicado por un actor de amenazas que opera bajo múltiples identidades entre noviembre de 2025 y junio de 2026, incluida una puerta trasera oculta que les otorga control remoto total sobre cualquier servidor que ejecute el paquete PyPI infectado mediante la ejecución de código Python arbitrario o comandos de shell enviados por el atacante. Los resultados de la ejecución del comando se filtran a través de Telegram. Checkmarx ha denominado a la actividad Operación Fantasma de la Marina.
  • un grupo de paquetes de 30 npm imitando las herramientas de Polymarket y las bibliotecas de matemáticas generales publicadas por cuentas de mantenimiento de 10 npm que apuntaban a los desarrolladores de DeFi para entregar un ladrón de información de JavaScript que lee bóvedas de billeteras criptográficas, credenciales del navegador, claves SSH, credenciales de AWS, tokens npm, configuraciones de Docker, historial de shell y bases de datos del administrador de contraseñas.
  • un grupo de paquetes de 25 npm publicado bajo el alcance @marketfront por una cuenta npm llamada «marketfront» que contiene un recolector de credenciales posterior a la instalación que lee 20 archivos secretos y de credenciales, incluidos ~/.ssh, ~/.aws/credentials, ~/.kube/config, ~/.docker/config.json, ~/.npmrc, ~/.netrc, ~/.pgpass, ~/.git-credentials, ~/.env y shell historial y extrae los datos.
  • Un paquete de Python llamado «alertas-de-seguridad-sdk» que afirma ser una herramienta de monitoreo de violaciones de datos pero alberga un código para iniciar una puerta trasera que sondea periódicamente un servidor externo («142.93.211[.]30:5000») para comandos y filtra claves privadas SSH, credenciales de AWS, tokens Docker/npm/PyPI/git, archivos .env y bases de datos de credenciales del navegador al mismo servidor.
  • un grupo de paquetes de 15 npm publicado por un único actor de amenazas que opera bajo alcances de 13 npm que activa una carga útil de JavaScript posterior a la instalación responsable de descargar y ejecutar un binario ELF compilado por Rust alojado en GitHub, que luego recopila una amplia gama de datos de billeteras de criptomonedas, navegadores web y otras aplicaciones, incluidos tokens de proveedores de nube, claves SSH, sesiones de plataformas de mensajería, configuraciones de clientes de bases de datos y credenciales de desarrollador.
  • Un paquete npm llamado «tiempo de ejecución de eventos» que escribe en cuclillas «eventos» y genera condicionalmente un ladrón de billeteras de criptomonedas, filtra datos de reconocimiento del host a través de Slack y Telegram, abre un canal de comando bidireccional de Slack y lee fragmentos de configuración y carga útil de un contrato inteligente de Ethereum utilizado como solucionador de entrega muerta. La lógica maliciosa se activa solo cuando el ID del evento es «eventId0».
  • Un paquete npm llamado «o3formas» que roba las credenciales del proveedor de servicios en la nube, escanea los secretos de los desarrolladores y los entornos CI/CD, realiza un reconocimiento de la red interna y exfiltra los datos a un punto final de Cloudflare Workers controlado por el atacante. «El atacante dividió el ataque en un paquete publicado en el registro deliberadamente benigno y una subdependencia *-utils fijada en GitHub que lleva tanto los ganchos de instalación como el malware real», dijo Tran. «Esta estructura está diseñada específicamente para derrotar el script estático y del ciclo de vida escaneo en el que se basan la mayoría de las herramientas del lado del registro y del lado CI».

Se recomienda a los usuarios que hayan instalado cualquiera de los paquetes antes mencionados que los eliminen de sus estaciones de trabajo, asuman compromisos y roten las credenciales, bloqueen los canales de salida maliciosos y habiliten el escaneo de dependencias en las canalizaciones de CI/CD para marcar paquetes sospechosos o recién publicados.

Los paquetes npm y Go secuestrados utilizan tareas de código VS para implementar Python Infostealer – CYBERDEFENSA.MX

Investigadores de ciberseguridad han descubierto dos paquetes npm secuestrados y un grupo de paquetes Go que están diseñados para implementar un ladrón de información basado en Python en hosts comprometidos de Windows, Linux y macOS.

«Este ataque evita las rutas de ejecución de npm más comunes a través de scripts de ciclo de vida, tal vez en un intento de seguir siendo ‘compatible’ con los refuerzos de seguridad de npm v12», JFrog dicho en un análisis técnico.

«El paquete oculta la ejecución dentro de una tarea de VS Code, configurada para ejecutarse automáticamente cuando se abre la carpeta del proyecto en VS Code. Desde allí, el malware recupera JavaScript cifrado de los datos de transacciones de blockchain, se conecta a la infraestructura controlada por el atacante, lanza una puerta trasera socket.io y, finalmente, implementa un ladrón de información de Python.

Los nombres de los paquetes npm identificados se enumeran a continuación:

  • HTML a Gutenberg
  • fetch-page-assets (que enumera html-to-gutenberg como una dependencia)

Los dos paquetes se cargaron en npm el 25 de mayo de 2026 y ya no están disponibles para descargar desde el registro. El punto de partida del ataque es una tarea oculta de Microsoft Visual Studio Code (VS Code) llamada «eslint-check» que está configurada con la opción «runOn: ‘folderOpen’» para activar la ejecución de código arbitrario cuando la carpeta se abre como una carpeta de espacio de trabajo en un IDE como VS Code o Cursor.

Ciberseguridad

«No ejecutan recursivamente cada .vscode/tasks.json anidado; en este caso, el disparador se activa cuando el directorio del paquete malicioso se abre como espacio de trabajo y se marca como confiable, o cuando el desarrollador permitió explícitamente tareas automáticas», dijo JFrog. «El comando también disfraza la carga útil como un archivo de fuente: public/fonts/fa-solid-400.woff2, aunque el archivo solo contiene código JavaScript».

Vale la pena señalar que el El abuso de una tarea de ejecución automática de VS Code, junto con el disfraz de malware JavaScript como archivos de fuentes, se ha atribuido a Corea del Norte. El equipo de OpenSourceMalware, que está rastreando la actividad bajo el nombre de Fake Font, lo ha descrito como una variante de Entrevista contagiosauna campaña de larga duración dirigida a desarrolladores de software y personal técnico a través de procesos fraudulentos de entrevistas de trabajo.

«Esta campaña ‘Fake Font’ ofrece un cargador de múltiples etapas que finalmente implementa la puerta trasera InvisibleFerret Python, diseñada para robar billeteras de criptomonedas, credenciales de navegador y establecer acceso persistente», dijo el investigador de seguridad Paul McCarty. anotado allá por enero. «Esta es la tercera subcampaña de la campaña ‘Entrevista Contagiosa’ que ha estado en curso desde 2023».

El archivo de fuente falso utiliza la infraestructura blockchain como un solucionador de entrega muerta, confiando en TronGrid y Aptos como mecanismo alternativo para recuperar una carga útil de JavaScript de la siguiente etapa de una manera que sea resistente a los esfuerzos de eliminación. La etapa de JavaScript repite el mismo patrón de recuperación de punto muerto para configurar un servidor de comando y control (C2) que permite la carga de archivos y la entrega de malware Python.

Esto incluye la configuración de una puerta trasera Socket.io que otorga al operador control remoto sobre el host infectado a través de funciones como ejecución de shell, recolección del portapapeles, operaciones del sistema de archivos, carga de archivos, gestión de procesos y ejecución arbitraria de JavaScript.

En paralelo, la cadena de infección lanza un componente del cargador de Python que es responsable de recuperar el ladrón de información de Python del servidor C2 e instalar las dependencias necesarias. El artefacto es un ladrón de credenciales, navegadores, billeteras y artefactos de desarrollador de amplio alcance que puede desviar datos almacenados en navegadores, administradores de contraseñas, autenticadores y billeteras de criptomonedas basados ​​en Chromium y Mozilla Firefox.

También está equipado para recopilar información orientada al desarrollador, como credenciales de Git, GitHub CLI hosts.yml, registros de GitHub Desktop, VS Code y almacenamiento global, así como datos de Windows Credential Manager, Linux Secret Service, KDE Wallet, macOS Keychain y metadatos de almacenamiento en la nube para Dropbox, Google Drive, Microsoft OneDrive, Apple iCloud, Box, Mega y pCloud.

En la etapa final, los datos recopilados se empaquetan en archivos ZIP comprimidos y se cargan en el servidor C2 y en un bot de Telegram si el atacante proporciona un token de bot durante el tiempo de ejecución.

Ciberseguridad

La campaña también se ha dirigido al ecosistema Go, con Nextron Systems descubriendo un conjunto de 16 paquetes Go que contienen el mismo malware. La lista es la siguiente:

  • github.com/lambda-platform/lambda
  • github.com/reauheau/goaubio
  • github.com/glacialspring/go-winsparkle
  • github.com/bm-197/chill
  • github.com/naol7/dist-task-scheduler
  • github.com/anatoli-derese/a2sv-excercise
  • github.com/amantsehay/a2sv-go-course
  • github.com/dexbotsdev/uniswap-v2-v3-arbitrage
  • github.com/lambda-platform/ebarimt-rest-api
  • github.com/lambda-platform/dan
  • github.com/zainirfan13/graphql-client
  • github.com/hngi/team-fierce-backend-golang
  • github.com/glacialspring/static
  • github.com/rickt/slack-weather-bot
  • github.com/Barsu5489/commerce
  • github.com/Setsu548/Logística

«La mayoría parecen ser paquetes legítimos cuya última versión lanzada incluía el malware junto con el contenido del paquete original, utilizando la misma estructura y el mismo archivo de fuente falso», añadió JFrog.

Se recomienda a los usuarios que hayan instalado los paquetes que los eliminen con efecto inmediato, busquen en las máquinas de los desarrolladores tareas ocultas de apertura de carpetas de VS Code y roten credenciales, tokens, credenciales de la nube, claves API, credenciales almacenadas en el navegador y credenciales de billetera.

«Las cargas útiles muestran que el atacante estaba interesado tanto en el robo inmediato como en el acceso interactivo», concluyó la empresa de ciberseguridad. «La puerta trasera basada en socket.io proporciona ejecución de comandos y recopilación de archivos, mientras que la etapa Python realiza una amplia recolección de credenciales y billeteras en navegadores, almacenes de credenciales de sistemas operativos, herramientas de desarrollo y aplicaciones de criptomonedas».

Miasma Malware apunta a paquetes npm y acciones de GitHub en un ataque a la cadena de suministro – CYBERDEFENSA.MX

Los investigadores de ciberseguridad han señalado otra evolución del ataque a la cadena de suministro vinculado a la familia de malware Mini Shai-Hulud, Miasma y Hades que ha comprometido un nuevo conjunto de paquetes npm, incluso cuando se ha propagado al ecosistema Go.

«La última actividad incluye lanzamientos maliciosos de npm que afectan a los paquetes LeoPlatform y RStreams, abuso del flujo de trabajo de GitHub Actions y un compromiso del módulo Go relacionado que involucra el proyecto Verana Blockchain», Socket dicho.

El objetivo final de la campaña, como antes, es recopilar credenciales de desarrollador o mantenedor y convertir los datos robados en armas para distribuirlos entre registros de paquetes, repositorios y flujos de trabajo de desarrolladores confiables.

Ciberseguridad

La lista de paquetes afectados se encuentra a continuación:

  • hexo-deployer-wrangler@1.0.4
  • hexo-shoka-swiper@0.1.10
  • leo-auth@4.0.6
  • leo-aws@2.0.4
  • leo-cache@1.0.2
  • leo-cdk-lib@0.0.2
  • leo-cli@3.0.3
  • leo-config@1.1.1
  • leo-conector-elasticsearch@2.0.6
  • leo-conector-mongo@3.0.8
  • leo-conector-mysql@3.0.3
  • conector-leo-oracle@2.0.1
  • conector-leo-corrimiento-rojo@3.0.6
  • leo-cron@2.0.2
  • leo-logger@1.0.8
  • leo-sdk@6.0.19
  • leo-streams@2.0.1
  • prisma-silq@1.0.1
  • rstreams-métricas@2.0.2
  • rstreams-fragmento-util@1.0.1
  • convención sin servidor@2.0.4
  • sin servidor-leo@3.0.14
  • solo-nav@1.0.1
  • github.com/verana-labs/verana-blockchain@v0.10.1-dev.20 (Ir)

Se sospecha que una cuenta de desarrollador npm asociada con LeoPlatform («czirker«) fue violado, probablemente a través de credenciales filtradas, para permitir el ataque, permitiendo a los actores de la amenaza aprovechar un token npm perteneciente al mantenedor para impulsar versiones troyanizadas dentro de una ventana de seis segundos.

La nueva ola aprovecha muchas de las tácticas observadas en campañas anteriores, incluido el envenenamiento del registro npm, la ejecución en el momento de la instalación de vinculante.gyp, el malware JavaScript Bun-staged, la infraestructura de GitHub dead-drop, el robo de secretos de GitHub Actions, la persistencia del asistente de codificación IDE e IA y la exfiltración de credenciales cifradas.

Los paquetes npm maliciosos, si bien carecen de un gancho de ciclo de vida que normalmente se agrega al archivo package.json, incorporan un archivo vinculante.gyp para ejecutar código arbitrario durante la instalación, lo que resulta en el lanzamiento de un cargador de JavaScript que descarga e instala el tiempo de ejecución de Bun si no está presente, y luego inicia la carga útil del ladrón responsable de recolectar secretos, credenciales y tokens.

El malware, además de presentar un interruptor de seguridad local ruso y verificar la presencia de software de seguridad de punto final, lanza un flujo de trabajo llamado «Run Copilot» para capturar secretos del entorno CI/CD de la memoria del ejecutor. Luego, la información se carga en un repositorio público de GitHub con la descripción «Muy bien, veamos si esto funciona». Al momento de escribir, hay 559 repositorios Coincide con la descripción.

El marcador de retransmisión de fichas también tiene presenciado un cambio en la última iteración. Mientras que las oleadas anteriores usaban cadenas como «IfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner», el artefacto actual usa «RevokeAndItGoesKaboom», una cadena que se ha utilizado como resolución de caída muerta de GitHub en relación con el reciente compromiso de la acción de GitHub «codfish/semantic-release-action».

«El 24 de junio de 2026 a las 15:39:06 UTC, un atacante impulsó una confirmación maliciosa a codfish/semantic-release-action y redirigió varias etiquetas de versión para apuntar a la confirmación maliciosa», StepSecurity dicho.

«Cualquier flujo de trabajo que se ejecutara contra una de estas etiquetas después de esa marca de tiempo ejecutó la carga útil del atacante directamente dentro del ejecutor de GitHub Actions. La carga útil roba tokens OIDC de GitHub, recolecta tokens de acceso personal que coinciden con patrones de tokens de GitHub conocidos, cifra el material recopilado con AES-128-GCM e intenta propagar una puerta trasera a otros repositorios accesibles con las credenciales robadas».

Ciberseguridad

Esto indica que todos estos eventos están vinculados al mismo grupo operativo o linaje de herramientas. De acuerdo a Laboratorios Endor y Seguridad bueyel malware también sondea GitHub cada hora en busca de confirmaciones que coincidan con la cadena «firedalazer» para recuperar y ejecutar la variante Hades del malware.

«El conjunto de paquetes Leo/RStreams está vinculado a cargas de trabajo nativas de la nube y sin servidor», afirmó JFrog. «Un compromiso aquí puede exponer las estaciones de trabajo de los desarrolladores, los sistemas CI/CD, las aplicaciones respaldadas por AWS, los repositorios de GitHub, las credenciales de publicación de paquetes y los consumidores de paquetes posteriores».

«Lo notable no es que la carga útil sea radicalmente nueva. Es que Shai-Hulud continúa moviéndose a través de ecosistemas de paquetes legítimos mientras cambia los indicadores suficientes para hacer que las detecciones obsoletas sean menos efectivas».

Es más, el envenenamiento de Verana GitHub amplía el alcance de la campaña más allá de npm. Dicho esto, el ataque emplea el mismo patrón de ejecución de Miasma observado en paquetes npm maliciosos sin depender de la resolución nativa del módulo Go ni de la lógica de compilación.

«A diferencia de los paquetes npm, esta muestra no depende de vinculante.gyp», explicó Socket. «El riesgo es la ejecución del repositorio de origen: un desarrollador que clona o abre el repositorio en un entorno de asistente de codificación de IA o IDE confiable puede activar la carga útil a través de la configuración del proyecto».

«Esto refuerza el tema más amplio de la campaña: Miasma se está moviendo a través de ecosistemas de paquetes al apuntar a los flujos de trabajo de los desarrolladores, no solo a los ganchos de instalación del administrador de paquetes».