La campaña de malware GlassWorm se está utilizando para impulsar un ataque continuo que aprovecha los tokens de GitHub robados para inyectar malware en cientos de repositorios de Python.
«El ataque se dirige a proyectos Python, incluidas aplicaciones Django, código de investigación de aprendizaje automático, paneles Streamlit y paquetes PyPI, agregando código ofuscado a archivos como setup.py, main.py y app.py», dijo StepSecurity. «Cualquiera que ejecute pip install desde un repositorio comprometido o clone y ejecute el código activará el malware».
Según la empresa de seguridad de la cadena de suministro de software, las primeras inyecciones se remontan al 8 de marzo de 2026. Los atacantes, al obtener acceso a las cuentas de desarrollador, rebasaron las últimas confirmaciones legítimas en la rama predeterminada de los repositorios objetivo con código malicioso y luego forzaron los cambios, manteniendo intactos el mensaje, el autor y la fecha del autor de la confirmación original.
Esta nueva rama de la campaña GlassWorm ha recibido el nombre en código ForceMemo. El ataque se desarrolla a través de los siguientes cuatro pasos:
- Comprometer los sistemas de los desarrolladores con el malware GlassWorm a través de extensiones maliciosas de VS Code y Cursor. El malware contiene un componente dedicado a robar secretos, como tokens de GitHub.
- Utilice las credenciales robadas para forzar la implementación de cambios maliciosos en cada repositorio administrado por la cuenta de GitHub violada al cambiar la base del malware ofuscado a archivos Python llamados «setup.py», «main.py» o «app.py».
- La carga útil codificada en Base64, adjunta al final del archivo Python, presenta comprobaciones similares a GlassWorm para determinar si el sistema tiene su configuración regional configurada en ruso. Si es así, omite la ejecución. En todos los demás casos, el malware consulta el campo de nota de transacción asociado con una billetera Solana («BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC») previamente vinculado a GlassWorm para extraer la URL de carga útil.
- Descargue cargas útiles adicionales del servidor, incluido JavaScript cifrado diseñado para robar criptomonedas y datos.

«La primera transacción en la dirección C2 data del 27 de noviembre de 2025, más de tres meses antes de las primeras inyecciones de repositorio de GitHub el 8 de marzo de 2026», dijo StepSecurity. «La dirección tiene 50 transacciones en total, y el atacante actualiza periódicamente la URL de la carga útil, a veces varias veces al día».
La divulgación se produce cuando Socket marcó una nueva iteración de GlassWorm que técnicamente conserva el mismo oficio principal al tiempo que mejora la capacidad de supervivencia y la evasión al aprovechar extensionPack y extensionDependencies para entregar la carga útil maliciosa mediante un modelo de distribución transitiva.
Además, Aikido Security también atribuyó al autor de GlassWorm una campaña masiva que comprometió más de 151 repositorios de GitHub con código malicioso oculto mediante caracteres Unicode invisibles. Curiosamente, la carga útil decodificada está configurada para recuperar las instrucciones C2 de la misma billetera Solana, lo que indica que el actor de la amenaza ha estado apuntando a los repositorios de GitHub en múltiples oleadas.
El uso de diferentes métodos de entrega y métodos de ofuscación de código, pero la misma infraestructura de Solana, sugiere que ForceMemo es un nuevo vector de entrega mantenido y operado por el actor de amenazas GlassWorm, que ahora ha pasado de comprometer las extensiones de VS Code a una adquisición más amplia de cuentas de GitHub.
«El atacante inyecta malware forzando la rama predeterminada de los repositorios comprometidos», señaló StepSecurity. «Esta técnica reescribe el historial de git, conserva el mensaje de confirmación y el autor originales, y no deja ninguna solicitud de extracción ni rastro de confirmación en la interfaz de usuario de GitHub. Ninguna otra campaña documentada de la cadena de suministro utiliza este método de inyección».