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 proyecto legítimo “rollup-plugin-polyfill-node”, 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, core y nodo, lo que puede parecer plausible durante una revisión rápida de la dependencia”, dijo JFrog en un artículo 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.
“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 abarcaban 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”.
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 bifurcaciones de “pirogramas” troyanizados publicados por un actor de amenazas que operó 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 que imitan las herramientas de Polymarket y las bibliotecas de matemáticas generales publicadas por cuentas de mantenimiento de 10 npm que se dirigieron a los desarrolladores de DeFi para ofrecer 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 25 paquetes npm publicados bajo el alcance @marketfront por una cuenta npm denominada “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 el historial del shell, y extrae los datos.
- Un paquete de Python llamado “security-alerts-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”) en busca de comandos y extrae 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 publicados 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 plataforma de mensajería, configuraciones de clientes de bases de datos y credenciales de desarrollador.
- Un paquete npm llamado “events-runtime” que escribe el paquete “events” y genera condicionalmente un ladrón de billeteras de criptomonedas, extrae 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 sólo cuando el ID del evento es “eventId0”.
- Un paquete npm llamado “o3forms” que roba las credenciales del proveedor de servicios en la nube, escanea los secretos de los desarrolladores y los entornos de CI/CD, realiza un reconocimiento de la red interna y extrae los datos a un punto final de Cloudflare Workers controlado por el atacante. “El atacante dividió el ataque en un paquete deliberadamente benigno publicado en el registro 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 anular el escaneo estático y de scripts de ciclo de vida en el que se basa 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.