Introducción
En marzo de 2026, el equipo OpenSourceMalware identificó una nueva variante de malware llamada PolinRider, vinculada a la campaña Contagious Interview atribuida a actores norcoreanos. El objetivo: comprometer desarrolladores y equipos de DevOps mediante paquetes infectados en ecosistemas como npm, Packagist, Go y extensiones de Chrome. Hasta abril de 2026, se reportaron 1.951 repositorios públicos de GitHub comprometidos, pertenecientes a 1.047 dueños únicos, con técnicas que incluyen tareas ocultas en VS Code y código JavaScript ofuscado en archivos de configuración.
El ataque no se limita a vulnerabilidades en paquetes existentes: los atacantes toman control de cuentas de mantenedores mediante técnicas como expired domain takeover o recuperación de cuentas, y publican versiones modificadas de librerías legítimas. Una vez ejecutado, el malware busca archivos específicos como postcss.config.mjs, tailwind.config.js o eslint.config.mjs, inyecta código malicioso y hasta reescribe el historial de Git para ocultar su presencia. En esta nota, detallamos las técnicas usadas, los artefactos afectados y acciones concretas para contener la infección.
Qué ocurrió
La campaña PolinRider opera desde al menos 2023 y se intensificó en 2026 con 108 paquetes únicos distribuidos en:
- 19 librerías npm (ej: paquetes que simulan ser herramientas de Rollup o polyfills).
- 10 paquetes Composer (PHP).
- 61 módulos Go (algunos con tareas de VS Code ocultas).
- 1 extensión para Chrome.
El vector inicial suele ser contactos falsos en LinkedIn, GitHub o plataformas freelance, donde los atacantes se hacen pasar por reclutadores de empresas fantasma con perfiles generados por IA. Según análisis de Socket Security, el malware BeaverTail (asociado a Contagious Interview) se distribuye mediante:
- Cargas útiles ofuscadas en JavaScript, ocultas en repositorios públicos o paquetes legítimos.
- Tareas de VS Code con la opción
"runOn: 'folderOpen'", que ejecutan código al abrir un proyecto en el IDE. - Modificación de archivos de configuración (ej:
.vscode/tasks.json,vite.config.js) para persistir en el entorno.
Un hallazgo clave es que los atacantes no usan credenciales robadas de GitHub, sino que comprometen cuentas de mantenedores mediante técnicas como domain takeover o recuperación de cuentas sin autenticación multifactor. Una vez dentro, publican versiones infectadas de paquetes legítimos, que los desarrolladores instalan en sus entornos.
En la última fase, el malware descarga un segundo estadio cifrado desde infraestructura blockchain (TRON, Aptos, BNB Smart Chain) que despliega:
- DEV#POPPER RAT: un remote access trojan para control remoto.
- OmniStealer: un ladrón de datos que exfiltran credenciales, tokens y archivos de configuración.
Según eSentire, este ataque en cadena fue detallado en marzo de 2026, donde los atacantes usan force pushes y commits con fechas alteradas para hacer que los cambios maliciosos parezcan antiguos y menos sospechosos.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Riesgo para equipos de desarrollo
El impacto directo es la compromisión de entornos de desarrollo, lo que puede derivar en:
- Exfiltración de secretos: tokens de API, claves SSH, credenciales de bases de datos.
- Puertas traseras persistentes: mediante tareas de VS Code o modificaciones en
tasks.json. - Infección de pipelines CI/CD: si los paquetes maliciosos se usan en etapas de build o deploy.
Un dato crítico es que, hasta abril de 2026, 1.951 repositorios públicos de GitHub fueron comprometidos, muchos de ellos usados en proyectos de código abierto o internos en empresas. Esto sugiere que la campaña no solo apunta a desarrolladores individuales, sino también a ecosistemas empresariales que dependen de paquetes de terceros.
Vector de infección en infraestructura
Los atacantes aprovechan la confianza en herramientas de desarrollo para:
- Engañar a sistemas de CI/CD: paquetes como los de Rollup o polyfills pueden ejecutarse en etapas de linting o testing.
- Persistir en entornos Linux/macOS/Windows: el malware modifica archivos como
eslint.config.mjsoapp.js, y usa scripts en Batch (Windows) o Bash (Linux/macOS) para alterar el historial de Git.
Impacto en seguridad
El CVSS de los componentes afectados varía según el paquete, pero en general se considera medio-alto por:
- Acceso remoto sin autenticación: DEV#POPPER RAT permite control total.
- Robo de datos sensibles: OmniStealer busca archivos de configuración, credenciales en navegadores, y tokens de servicios cloud.
- Técnicas de evasión: ofuscación en JavaScript, whitespace padding, y reescritura de Git history para burlar detecciones.
Para equipos de SRE, el riesgo incluye la contaminación de imágenes de contenedores si los paquetes infectados se usan en Dockerfiles o buildah. En cloud, la exfiltración de secretos podría llevar a brechas en servicios como AWS, Azure o GCP.
Detalles técnicos
Artefactos afectados (versiones y componentes)
| Ecosistema | Cantidad | Ejemplos de paquetes afectados | Versiones reportadas | Vector principal |
|---|---|---|---|---|
| **npm** | 19 |
