Corea del Norte Infectó 1,700 Paquetes en npm, PyPI, Go y Rust con Malware
@programacionInvestigadores de seguridad revelaron el 7 de abril de 2026 que la campaña norcoreana "Contagious Interview" distribuyó más de 1,700 paquetes maliciosos en cinco ecosistemas de desarrollo: npm, PyPI, Go, Rust (crates.io) y Packagist (PHP). Los paquetes se disfrazaban de herramientas legítimas de logging y utilidades, y contenían infostealers, keyloggers y troyanos de acceso remoto capaces de robar credenciales, wallets de criptomonedas y datos del navegador.
Paquetes Maliciosos Identificados
Estos son los paquetes confirmados como maliciosos. Si usás alguno, eliminalo inmediatamente:
npm (6 paquetes)
dev-log-core
pino-debugger
debug-fmt
debug-glitz
logkitx # sleeper (latente)
logger-base # sleeper (latente)PyPI (4 paquetes)
logutilkit
apachelicense
fluxhttp
license-utils-kitGo Modules (2 paquetes)
github.com/golangorg/formstash
github.com/aokisasakidev/mit-license-pkgRust / crates.io (1 paquete)
logtracePackagist / PHP (1 paquete)
golangorg/logkitCómo Funciona el Ataque
El ataque es sofisticado porque el código malicioso no se ejecuta durante la instalación (lo que detectarían la mayoría de escáneres), sino que se esconde dentro de funciones que parecen legítimas:
- Fase 1 — Infiltración — El paquete se publica con nombres similares a herramientas populares de logging (typosquatting). Los nombres como "pino-debugger" o "debug-fmt" parecen extensiones legítimas de librerías conocidas.
- Fase 2 — Activación oculta — Al llamar funciones normales como log() o find_by_key(), el código malicioso envía un POST a un servidor de staging (apachelicense.vercel.app) y descarga un archivo ZIP llamado ecw_update.zip.
- Fase 3 — Ejecución — En npm, el payload se decodifica de Base64 y se ejecuta con new Function('require', decodedCode)(require), dándole acceso completo al sistema vía require(). En Python, usa técnicas similares de ejecución dinámica.
- Fase 4 — Exfiltración — El malware roba credenciales del navegador, contraseñas de password managers, wallets de criptomonedas, archivos sensibles, y puede instalar AnyDesk para acceso remoto persistente.
Qué Roba el Malware
El troyano desplegado (variante Windows de license-utils-kit) tiene capacidades completas de RAT (Remote Access Trojan):
- Credenciales del navegador — Cookies, contraseñas guardadas, tokens de sesión de Chrome, Firefox, Edge
- Wallets de criptomonedas — MetaMask, Phantom, y otras extensiones de wallet
- Keylogging — Captura todo lo que escribís, incluyendo contraseñas
- Ejecución remota — Shell reverso para ejecutar comandos en tu máquina
- AnyDesk — Instala software de acceso remoto para control total
- Archivos sensibles — Busca y comprime archivos con extensiones como .env, .pem, .key, credenciales
Cómo Verificar si Estás Afectado
Ejecutá estos comandos en tus proyectos para verificar:
Node.js / npm
# Buscar paquetes maliciosos en node_modules
npm ls dev-log-core pino-debugger debug-fmt debug-glitz logkitx logger-base 2>/dev/null
# Buscar en package-lock.json
grep -E 'dev-log-core|pino-debugger|debug-fmt|debug-glitz|logkitx|logger-base' package-lock.jsonPython / PyPI
# Verificar paquetes instalados
pip list | grep -iE 'logutilkit|apachelicense|fluxhttp|license-utils-kit'
# Buscar en requirements.txt
grep -iE 'logutilkit|apachelicense|fluxhttp|license-utils-kit' requirements.txtIndicadores de compromiso (IoC)
# Dominios C2 — bloquear en firewall/DNS
apachelicense.vercel.app
logkit.onrender.com
logkit-tau.vercel.app
# Buscar archivos del payload
find / -name 'ecw_update.zip' 2>/dev/null
find / -name 'com.apple.systemevents' 2>/dev/null
find / -name 'systemd-resolved' -not -path '/usr/*' 2>/dev/null
# Buscar directorio del malware
find / -type d -name '410BB449A-72C6-4500-9765-ACD04JBV827V32V' 2>/dev/nullCómo Protegerte
- Fijar versiones exactas — Usá versiones pinneadas en package.json y requirements.txt. Nunca uses "^" o "~" en dependencias de producción sin revisar los cambios.
- Verificar paquetes nuevos — Antes de instalar un paquete que no conocés, revisá: fecha de publicación, número de descargas, quién es el autor. Los paquetes maliciosos suelen tener pocas descargas y autores sin historial.
- Usar herramientas de escaneo — Socket.dev (npm), pip-audit (Python), govulncheck (Go) pueden detectar paquetes con comportamiento sospechoso.
- Monitorear procesos hijos — Si un logger está spawneando procesos o haciendo HTTP requests a dominios desconocidos, algo anda mal.
- Sandbox para pruebas — Probá paquetes desconocidos en contenedores aislados antes de usarlos en tu entorno real.
Por Qué Corea del Norte Ataca Desarrolladores
Esto no es nuevo. Corea del Norte ha robado más de $3 mil millones en criptomonedas desde 2017 para financiar su programa nuclear y militar. Los desarrolladores son objetivos ideales porque tienen acceso a:
- Claves privadas de proyectos blockchain y DeFi
- Credenciales de infraestructura cloud (AWS, GCP)
- Acceso a repositorios con código fuente valioso
- Wallets de criptomonedas en sus máquinas de desarrollo
La campaña "Contagious Interview" es solo una de varias operaciones activas. También se detectaron ataques simultáneos del grupo UNC1069 que apunta directamente a maintainers de npm para secuestrar sus cuentas y publicar versiones infectadas de paquetes populares.
Conclusión
La cadena de suministro de software es el nuevo campo de batalla. Si sos desarrollador, cada npm install o pip install es un acto de confianza. Los 1,700 paquetes maliciosos descubiertos probablemente son solo la punta del iceberg. Revisá tus dependencias hoy — tu máquina de desarrollo puede estar comprometida sin que lo sepas.
Fuentes: Socket Security Research, The Hacker News, Integrity360 Cyber News Roundup (abril 2026).