Ecosistemas RubyGems y npm — Campaña de Typosquatting “StubMaker” Distribuye Infostealer en Entornos Windows (CWE-506 / N/A)
Fecha de publicación: 18 de agosto de 2026
Categoría: Ciberseguridad / Cadena de Suministro de Software
Introducción
Investigadores de seguridad de OpenSourceMalware y SafeDep han identificado una campaña maliciosa en la cadena de suministro de software que compromete simultáneamente los repositorios de paquetes RubyGems y npm. La operación, monitoreada bajo el identificador StubMaker (y posteriormente vinculada a variantes como BRIDGEHEAD), hizo uso de técnicas de typosquatting y la suplantación de nombres de dependencias populares de desarrollo. Los atacantes publicaron al menos 16 paquetes maliciosos en RubyGems y decenas de librerías en npm diseñadas para sigilosamente desplegar un cargador basado en Rust y un señuelo de infraestructura en Go en sistemas Windows, comprometiendo credenciales de navegadores, datos de mensajería y carteras de criptomonedas de los desarrolladores afectados.
¿Qué es StubMaker / BRIDGEHEAD? (Análisis General)
StubMaker no representa una vulnerabilidad de código tradicional en el software base de los repositorios, sino un ataque activo de inyección de código malicioso en la cadena de suministro (Software Supply Chain Attack) mediante paquetes fraudulentos (typosquatting). Los actores maliciosos se aprovechan de errores tipográficos comunes cometidos por los desarrolladores al instalar dependencias de terceros, así como de fallas de diseño inherentes en la gestión de metadatos de los repositorios (como campos de autor no validados y la reutilización de nombres de paquetes previamente eliminados o yanked).
Aunque la naturaleza del riesgo se deriva de la ejecución automática de scripts durante la fase de instalación de dependencias, técnicamente se cataloga bajo CWE-506: Embedded Malicious Code (Código malicioso incrustado). Dado que no existe un CVE oficial asignado por el NVD para este incidente de cadena de suministro, se estima de manera razonada una puntuación CVSS v3.1 de 8.8 (Alto) con vector estimado CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, dado que requiere interacción del usuario (instalar el paquete) pero otorga privilegios de ejecución completos en el host del desarrollador.
¿Cómo funciona? (Análisis Técnico)
El vector de ataque difiere ligeramente entre ecosistemas pero converge en la descarga de una misma carga útil secundaria sobre sistemas operativos Windows:
- Flujo de infección inicial en RubyGems: Los paquetes fraudulentos implementan un script de configuración llamado
extconf.rb. Este archivo se ejecuta de forma totalmente automática cuando el usuario invoca el comando de instalación de la gema (gem install). En lugar de compilar extensiones nativas legítimas en C o Rust, el script falso genera un Makefile vacío y códigos de retorno simulados para reportar una instalación exitosa mientras ejecuta de forma oculta rutinas para decodificar (vía Base64) y descargar un cargador en lenguaje Rust alojado externamente en GitHub. - Flujo de infección inicial en npm: En paralelo, el ecosistema npm fue atacado mediante 37 paquetes utilizando ganchos posteriores a la instalación (
postinstallhooks), los cuales emplean algoritmos de ofuscación basados en XOR con claves codificadas estáticamente para recuperar el mismo cargador de Windows. Variantes posteriores analizadas por CloudSEK (bajo el nombre de campaña BRIDGEHEAD) integraron además una verificación de entorno para detectar si el script se ejecuta dentro del Subsistema de Windows para Linux (WSL), utilizándolo como un puente (bridge) para alcanzar el sistema operativo Windows subyacente. - Ejecución del Payload y Exfiltración: El cargador en Rust despliega una carga útil DLL basada en Go (
abe_payload.dll). Este componente evade las protecciones de cifrado ligadas a aplicaciones de Chromium (App-Bound Encryption o ABE) para sustraer credenciales almacenadas, historiales de navegación, cookies, tarjetas de pago, frases semilla de carteras de criptomonedas y datos locales de Telegram Desktop. La información recopilada es comprimida en un archivo ZIP protegido por contraseña y enviada a través de canales HTTP no cifrados a servicios públicos de alojamiento temporal y servidores de comando y control (C2) operados por el atacante.
Sistemas / Entornos Afectados
La amenaza afecta directamente a desarrolladores e ingenieros de software que utilizan entornos de desarrollo basados en Windows (o WSL) e instalan dependencias de manera desprevenida. Los componentes impactados incluyen:
- Ecosistema RubyGems: 16 paquetes maliciosos identificados, incluyendo ubnuler, ubnlder, ri18nr, reaker, rakier, orakw, joxn, ise18n, ioe18n, ie18u, iai8n, i1l8n, i18om, activesupmport, brumdler y brundlef.
- Ecosistema npm: Múltiples clústeres de paquetes fraudulentos que imitan dependencias masivas como axios (ej. axois-http, axious-core), chalk, commander, lodash, typescript (incluyendo variantes detectadas por CloudSEK como typecript-cli, typecript-core, typescrit-cli) y react.
- Plataformas objetivo: Estaciones de trabajo de desarrollo basadas en Windows de 64 bits y distribuciones WSL con acceso a navegadores basados en Chromium y aplicaciones de criptomonedas locales.
| Componente / Paquete | Categoría (CWE) | Impacto | CVSS (Estimado) | Vector (Estimado) |
|---|---|---|---|---|
| RubyGems (StubMaker) | CWE-506 (Malicious Code) | Robo de credenciales y criptomonedas | 8.8 (Alto) | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| npm Packages (Typosquatting) | CWE-506 (Malicious Code) | Ejecución de cargador y exfiltración | 8.8 (Alto) | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| BRIDGEHEAD (WSL Gate) | CWE-506 (Malicious Code) | Brecha de desarrollo cruzado WSL-Windows | 8.8 (Alto) | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
Mitigación y Detección
Remediación
- Aislamiento inmediato: Si se sospecha la instalación de cualquiera de los paquetes enumerados en una máquina Windows durante el periodo de actividad, aísle inmediatamente el host de la red corporativa.
- Rotación masiva de credenciales: Cambie todas las claves de acceso a servicios en la nube, credenciales de navegadores, claves de API y frases semilla de criptomonedas asociadas al equipo afectado.
- Limpieza de dependencias: Revise los archivos
Gemfile.lockypackage-lock.jsonen busca de registros extraños o variantes tipográficas y purgue los cachés locales de los gestores de paquetes.
Detección
- Monitoreo de procesos y hooks: Audite la ejecución de scripts de compilación automática en directorios de paquetes (
extconf.rben Ruby y ganchos de ciclo de vida en npm). - Indicadores de Red: Supervise las conexiones salientes no autorizadas hacia servicios de alojamiento de archivos temporales (como Gofile) o solicitudes externas a servicios de geolocalización IP (
api.ipify.org) iniciadas por procesos de compilación de dependencias.
“La campaña demostró cómo los atacantes pueden explotar las políticas de reutilización de nombres de paquetes y los ganchos de instalación nativos para ejecutar cargas útiles complejas en entornos de desarrollo sin requerir vulnerabilidades de software tradicionales.”
Recapitulando
La campaña StubMaker y su contraparte en npm evidencian los riesgos críticos inherentes a la cadena de suministro de software de código abierto. Mediante el uso de errores tipográficos (typosquatting) y el aprovechamiento de comportamientos legítimos de los gestores de paquetes —como los ganchos de instalación y la reutilización de nombres de paquetes eliminados—, los actores de amenazas lograron desplegar infostealers capaces de saquear estaciones de trabajo de desarrolladores. Este incidente resalta la urgente necesidad de implementar controles estrictos de seguridad en los repositorios, verificación de dependencias y aislamiento de entornos de desarrollo.
Referencias
- Lakshmanan, R. (2026). 16 Typosquatted RubyGems Packages Steal Browser Credentials and Crypto Wallets. The Hacker News. https://thehackernews.com/2026/08/16-typosquatted-rubygems-packages-steal.html
- OpenSourceMalware. (2026). StubMaker RubyGems Windows Infostealer Discovered. https://opensourcemalware.com/blog/stubmaker-rubygems-windows-infostealer
- OpenSourceMalware. (2026). Complete list of StubMaker packages. https://opensourcemalware.com/?search=%23stubmaker
- OpenSourceMalware. (2026). Windows Infostealer StubMaker on NPM and Ruby. https://opensourcemalware.com/blog/windows-infostealer-stubmaker-npm-ruby
- OpenHack. (2026). 37 Package NPM Typosquat Windows Stealer. https://openhack.com/blog/37-package-npm-typosquat-windows-stealer
- CloudSEK. (2026). BRIDGEHEAD NPM Typosquatting WSL Windows Crypto Wallet Stealer. https://www.cloudsek.com/blog/bridgehead-npm-typosquatting-wsl-windows-crypto-wallet-stealer
- SafeDep. (2026). Google Dep Confusion Bin Harvesting. https://safedep.io/google-dep-confusion-bin-harvesting/
- SafeDep. (2026). Malicious Baileys NPM WhatsApp Campaign. https://safedep.io/malicious-baileys-npm-whatsapp-campaign/
- RubyGems. (2026). Gems with Extensions Documentation. https://guides.rubygems.org/gems-with-extensions/
- npm, Inc. (2026). Using npm scripts (Lifecycle Hooks). https://docs.npmjs.com/cli/v8/using-npm/scripts
