ForceMemo: Variante de GlassWorm inyecta malware en cientos de repositorios Python mediante secuestro de cuentas de GitHub
Una nueva variante del malware **GlassWorm**, apodada ForceMemo, está comprometiendo activamente repositorios de Python en **GitHub** aprovechando tokens robados y empleando una novedosa técnica de 'force-push'. Esta campaña resalta la creciente sofisticación de los ataques a la cadena de suministro dirigidos a desarrolladores.

La campaña de malware **GlassWorm** ha evolucionado, alimentando ahora un ataque que inyecta código malicioso en cientos de repositorios de Python utilizando tokens robados de **GitHub**. Esta nueva ramificación, denominada ForceMemo, demuestra la amenaza persistente que representan los ataques a la cadena de suministro.
### ForceMemo: Un Análisis Profundo
Según **StepSecurity**, los primeros indicios de estas inyecciones datan del 8 de marzo de 2026. Los atacantes obtienen acceso a las cuentas de los desarrolladores y luego reemplazan los commits legítimos más recientes en la rama predeterminada de los repositorios objetivo con código malicioso. Crucialmente, utilizan un 'force-push' para sobrescribir el historial existente, manteniendo el mensaje, autor y fecha del commit original para evitar la detección.
"Cualquiera que ejecute `pip install` desde un repositorio comprometido o clone y ejecute el código activará el malware", advirtió **StepSecurity**.
### La Cadena de Ataque
El ataque ForceMemo se desarrolla en cuatro etapas clave:
1. **Compromiso Inicial:** Los sistemas de los desarrolladores se infectan con el malware **GlassWorm**, a menudo a través de extensiones maliciosas de **VS Code** y **Cursor**. Esta variante de malware incluye un componente diseñado específicamente para robar secretos, incluidos los tokens de **GitHub**.
2. **Abuso de Credenciales:** Las credenciales robadas se utilizan para forzar el envío de cambios maliciosos a todos los repositorios administrados por la cuenta de **GitHub** comprometida. El ataque reemplaza malware ofuscado en archivos Python llamados `setup.py`, `main.py` o `app.py`.
3. **Entrega del Payload:** Se adjunta un payload codificado en Base64 al final del archivo Python. Este payload contiene verificaciones para determinar si la configuración regional del sistema está establecida en ruso. Si es así, se omite la ejecución. De lo contrario, el malware consulta el campo de memo de transacción asociado con una billetera de **Solana** (`BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC`) vinculada previamente a **GlassWorm** para extraer la URL del payload.
4. **Exfiltración de Datos:** Se descargan payloads adicionales del servidor, incluido JavaScript cifrado diseñado para robar criptomonedas y otros datos sensibles.

### Persistencia y Evasión
"La transacción más antigua en la dirección C2 data del 27 de noviembre de 2025, más de tres meses antes de las primeras inyecciones en repositorios de **GitHub** el 8 de marzo de 2026", afirmó **StepSecurity**. Los atacantes actualizan regularmente la URL del payload, a veces varias veces al día, lo que demuestra un compromiso para mantener la efectividad del ataque.
**Socket** también ha señalado una nueva iteración de **GlassWorm** que mejora la supervivencia y la evasión al aprovechar `extensionPack` y `extensionDependencies` para la distribución transitiva de payloads.
### Campaña Más Amplia y Atribución
**Aikido Security** ha atribuido al autor de **GlassWorm** una campaña masiva que comprometió más de 151 repositorios de **GitHub** utilizando código malicioso oculto con caracteres Unicode invisibles. El payload decodificado obtiene instrucciones C2 de la misma billetera de **Solana**, lo que indica un esfuerzo coordinado y persistente dirigido a los repositorios de **GitHub**.
La infraestructura compartida de **Solana**, combinada con diferentes métodos de entrega y ofuscación, sugiere fuertemente que ForceMemo es un nuevo vector de entrega mantenido por el actor de amenazas **GlassWorm**. Este actor se ha expandido desde el compromiso de extensiones de **VS Code** hasta secuestros más amplios de cuentas de **GitHub**.
### Novedosa Técnica de Inyección
"El atacante inyecta malware mediante 'force-push' a la rama predeterminada de los repositorios comprometidos", enfatizó **StepSecurity**. "Esta técnica reescribe el historial de git, preserva el mensaje y el autor del commit original, y no deja rastro de pull request o commit en la interfaz de usuario de **GitHub**. Ninguna otra campaña documentada de cadena de suministro utiliza este método de inyección."