Módulo Go malicioso rouba senhas e instala backdoor Rekoobe em ambientes de desenvolvimento
Uma campanha de ataque à cadeia de suprimentos (supply chain) está visando desenvolvedores da linguagem Go. Um ator de ameaças publicou um módulo malicioso que imita a biblioteca criptográfica oficial "golang.org/x/crypto", sendo usado para roubar credenciais e implantar silenciosamente um backdoor Linux chamado Rekoobe em sistemas comprometidos. O módulo, github[.]com/xinfeisoft/crypto, foi listado publicamente no pkg.go.dev e já foi bloqueado pela equipe de segurança do Go.
Mecanismo de infecção e evasão
O módulo malicioso copiou a estrutura completa do repositório legítimo, incluindo subpacotes populares como bcrypt, argon2, acme e ssh. Essa estratégia de typosquatting avançada permitiu que ele se misturasse às dependências de projetos sem levantar suspeitas imediatas durante revisões de código. A exploração se aproveita do fato de o ecossistema Go usar o GitHub como um espelho para o repositório canônico.
O backdoor foi inserido no arquivo `ssh/terminal/terminal.go`, especificamente na função `ReadPassword`. Esta função é comumente usada por ferramentas que lidam com passphrases SSH, logins de banco de dados e chaves de API inseridas interativamente. A maliciosidade é acionada apenas durante o uso interativo ao vivo, permanecendo inativa durante execuções automatizadas de testes, o que reduz drasticamente as chances de detecção acidental.
Cadeia de ataque em múltiplos estágios
Quando a função comprometida é chamada, ela captura a credencial em texto simples e a escreve no arquivo `/usr/share/nano/.lock`. Em seguida, inicia uma cadeia de entrega em cinco estágios:
- Busca um ponteiro (`update.html`) de um repositório GitHub controlado pelo atacante.
- O ponteiro redireciona para um script (`seed.php`) no domínio `img[.]spoolsv[.]cc`.
- Esse script retorna um comando `curl | sh` que baixa e executa o estágio principal `snn50.txt`.
- O estágio `snn50.txt` realiza três ações críticas:
- Adiciona uma chave SSH controlada pelo atacante ao arquivo `authorized_keys` para acesso persistente.
- Altera as políticas padrão do iptables para `ACCEPT`, enfraquecendo o firewall do host.
- Baixa e executa os payloads finais `sss.mp5` e `555.mp5` (disfarçados com extensões de mídia), deletando-os em seguida.
- O payload `555.mp5` foi confirmado como o backdoor Rekoobe, associado ao APT31 (Zirconium), que se comunica com o IP `154[.]84[.]63[.]184` na porta 443 usando tráfego customizado que simula HTTPS.
Impacto e recomendações de mitigação
O impacto é significativo para equipes que operam ambientes Linux baseados em Go, como VMs na nuvem, runners de CI/CD e hosts bastião. Qualquer aplicação que importe este módulo e invoque `ReadPassword` se torna um ponto de coleta de credenciais, expondo passphrases SSH, senhas de banco de dados e chaves de API antes que possam ser protegidas por hashing ou criptografia.
Para se defender, as organizações devem:
- Auditar arquivos `go.mod` e `go.sum` em busca de mudanças inesperadas no módulo raiz.
- Monitorar endpoints para escritas no arquivo `/usr/share/nano/.lock`.
- Vigiar modificações não autorizadas no arquivo `authorized_keys` e alterações nas políticas do iptables.
- Bloquear proativamente os domínios `img[.]spoolsv[.]cc` e `img[.]spoolsv[.]net`.
- Implementar alertas para processos que encadeiam buscas no GitHub Raw com chamadas HTTP POST de saída.