Una nueva campaña de malware conocida como GlassWorm está detrás de un sofisticado ataque a la cadena de suministro de software que ha comprometido cientos de repositorios de Python en GitHub mediante el uso de tokens robados de desarrolladores. El objetivo de los atacantes es introducir código malicioso que se ejecuta automáticamente cuando los usuarios instalan o ejecutan los proyectos afectados.
Según un informe de la empresa de seguridad de la cadena de suministro de software StepSecurity, los ataques comenzaron al menos el 8 de marzo de 2026 y afectan a distintos tipos de proyectos Python, incluidos aplicaciones Django, código de investigación en machine learning, dashboards de Streamlit y paquetes distribuidos en PyPI.
Cómo funciona el ataque
La campaña, denominada ForceMemo, se basa en el robo de credenciales de GitHub para modificar directamente repositorios legítimos. Una vez obtenidos los tokens de acceso, los atacantes reescriben el historial de Git y realizan un force push para añadir código malicioso sin que sea evidente para los desarrolladores.
El proceso de ataque se desarrolla en cuatro fases principales:
- Compromiso inicial de los desarrolladores
Los atacantes infectan los sistemas mediante extensiones maliciosas de VS Code y Cursor, que incluyen componentes diseñados para robar secretos como los tokens de GitHub. - Acceso y modificación de repositorios
Con las credenciales robadas, los ciberdelincuentes realizan force push en los repositorios asociados a la cuenta comprometida, añadiendo malware ofuscado en archivos clave como setup.py, main.py o app.py. - Carga útil oculta en Base64
El código malicioso se agrega al final de los archivos Python. Este incluye comprobaciones similares a las usadas por GlassWorm para verificar si el sistema utiliza configuración regional rusa. En ese caso, el malware no se ejecuta. - Descarga de payloads adicionales
Si el sistema no cumple esa condición, el malware consulta el campo memo de transacciones asociadas a una billetera de Solana previamente vinculada a GlassWorm para obtener la URL del payload final. Desde allí descarga scripts, incluido JavaScript cifrado diseñado para robar criptomonedas y datos sensibles.
Infraestructura activa desde 2025
Los investigadores descubrieron que la infraestructura de comando y control (C2) asociada al ataque ya estaba operativa desde el 27 de noviembre de 2025, más de tres meses antes de que comenzaran las inyecciones en repositorios de GitHub.
La dirección de la billetera utilizada por los atacantes registra 50 transacciones, con actualizaciones frecuentes de la URL del payload, en ocasiones varias veces al día, lo que demuestra un mantenimiento activo de la campaña.
Múltiples olas de ataques
Otras firmas de seguridad también han detectado variaciones de GlassWorm. Investigadores de Socket identificaron una nueva versión que mejora la evasión utilizando mecanismos como extensionPack y extensionDependencies para distribuir malware a través de dependencias.
Por su parte, Aikido Security atribuyó al mismo actor una campaña masiva que comprometió más de 151 repositorios de GitHub, ocultando código malicioso mediante caracteres Unicode invisibles. En todos los casos, el payload final también se obtenía desde la misma billetera de Solana, lo que sugiere que el actor ha ejecutado varias oleadas coordinadas de ataques.
Un método de ataque inédito en la cadena de suministro
Los expertos destacan que la técnica empleada para inyectar malware es especialmente peligrosa. Al usar force push para reescribir el historial del repositorio, el atacante conserva el mensaje del commit, el autor y la fecha original, lo que dificulta detectar cambios maliciosos.
Además, el método no deja rastro visible de pull requests o commits sospechosos en la interfaz de GitHub, lo que lo convierte en una de las tácticas más sigilosas observadas hasta ahora en ataques a la cadena de suministro de software.
Los investigadores advierten que cualquier usuario que clone o instale dependencias desde repositorios comprometidos podría ejecutar el malware sin saberlo, lo que amplía el alcance potencial del ataque a miles de desarrolladores y proyectos que dependen de estos paquetes.

