ForceMemo: Variante do GlassWorm Injeta Malware em Centenas de Repositórios Python via Tomada de Contas no GitHub
Uma nova variante do malware **GlassWorm**, apelidada de ForceMemo, está comprometendo ativamente repositórios Python no **GitHub** ao alavancar tokens roubados e empregar uma técnica inovadora de 'force-push'. Esta campanha destaca a crescente sofisticação dos ataques à cadeia de suprimentos que visam desenvolvedores.

A campanha de malware **GlassWorm** evoluiu, agora alimentando um ataque que injeta código malicioso em centenas de repositórios Python usando tokens roubados do **GitHub**. Este novo desdobramento, nomeado ForceMemo, demonstra a ameaça persistente representada pelos ataques à cadeia de suprimentos.
### ForceMemo: Uma Análise Profunda
De acordo com a **StepSecurity**, os primeiros sinais dessas injeções datam de 8 de março de 2026. Os atacantes ganham acesso a contas de desenvolvedores e, em seguida, rebaseiam os commits legítimos mais recentes no branch padrão dos repositórios visados com código malicioso. Crucialmente, eles usam um force-push para sobrescrever o histórico existente, mantendo a mensagem, autor e data do commit original para evitar detecção.
"Qualquer pessoa que execute `pip install` de um repositório comprometido ou clone e execute o código acionará o malware", alertou a **StepSecurity**.
### A Cadeia de Ataque
O ataque ForceMemo se desenrola em quatro estágios principais:
1. **Comprometimento Inicial:** Sistemas de desenvolvedores são infectados com o malware **GlassWorm**, frequentemente através de extensões maliciosas do **VS Code** e **Cursor**. Esta variante de malware inclui um componente projetado especificamente para roubar segredos, incluindo tokens do **GitHub**.
2. **Abuso de Credenciais:** As credenciais roubadas são usadas para forçar o push de alterações maliciosas para todos os repositórios gerenciados pela conta **GitHub** comprometida. O ataque rebaseia malware ofuscado em arquivos Python nomeados `setup.py`, `main.py` ou `app.py`.
3. **Entrega do Payload:** Um payload codificado em Base64 é anexado ao final do arquivo Python. Este payload contém verificações para determinar se a localidade do sistema está definida como russo. Se estiver, a execução é pulada. Caso contrário, o malware consulta o campo de memo da transação associado a uma carteira **Solana** (`BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC`) anteriormente vinculada ao **GlassWorm** para extrair o URL do payload.
4. **Exfiltração de Dados:** Payloads adicionais são baixados do servidor, incluindo JavaScript criptografado projetado para roubar criptomoedas e outros dados sensíveis.

### Persistência e Evasão
"A transação mais antiga no endereço C2 data de 27 de novembro de 2025 -- mais de três meses antes das primeiras injeções em repositórios **GitHub** em 8 de março de 2026", declarou a **StepSecurity**. Os atacantes atualizam regularmente o URL do payload, às vezes várias vezes ao dia, demonstrando um compromisso em manter a eficácia do ataque.
A **Socket** também sinalizou uma nova iteração do **GlassWorm** que melhora a sobrevivência e a evasão, alavancando `extensionPack` e `extensionDependencies` para distribuição transitiva de payload.
### Campanha Mais Ampla e Atribuição
A **Aikido Security** atribuiu o autor do **GlassWorm** a uma campanha massiva que comprometeu mais de 151 repositórios **GitHub** usando código malicioso oculto com caracteres Unicode invisíveis. O payload decodificado busca instruções C2 da mesma carteira **Solana**, indicando um esforço coordenado e persistente visando repositórios **GitHub**.
A infraestrutura **Solana** compartilhada, combinada com diferentes métodos de entrega e ofuscação, sugere fortemente que o ForceMemo é um novo vetor de entrega mantido pelo ator de ameaça **GlassWorm**. Este ator expandiu de comprometer extensões do **VS Code** para tomadas de conta mais amplas de contas **GitHub**.
### Técnica de Injeção Inovadora
"O atacante injeta malware através de force-push no branch padrão de repositórios comprometidos", enfatizou a **StepSecurity**. "Esta técnica reescreve o histórico do git, preserva a mensagem e o autor do commit original, e não deixa nenhum rastro de pull request ou commit na interface do **GitHub**. Nenhuma outra campanha documentada de cadeia de suprimentos utiliza este método de injeção."