Hackers norte-coreanos encontraram uma nova maneira de esconder malware dentro das ferramentas que os desenvolvedores de software dependem todos os dias. Em vez de enviar e-mails de phishing ou plantar links falsos, eles estão agora enterrando código malicioso profundamente dentro de ganchos do Git — pequenos scripts automatizados que são executados automaticamente sempre que um desenvolvedor interage com um repositório de código.
Campanha Contagious Interview e Grupo Lazarus
A campanha é uma evolução fresca de uma operação de longa data conhecida como Contagious Interview, ligada ao Grupo Lazarus da Coreia do Norte. Os atacantes se passam por recrutadores falsos em plataformas como o LinkedIn e entram em contato com desenvolvedores de software prometendo uma oportunidade de trabalho legítima. As vítimas recebem uma avaliação de codificação hospedada em um repositório do GitHub e, assim que eles clonam esse repositório, a armadilha já está em movimento.
Pesquisadores da OpenSourceMalware identificaram esta técnica e descobriram que o script malicioso está escondido no diretório .githooks do repositório, especificamente como um gancho pre-commit. Isso significa que o payload dispara no momento em que um desenvolvedor tenta fazer um commit — antes mesmo que o objeto de commit seja escrito. A maioria dos desenvolvedores nunca questiona um repositório recebido como parte de um teste de emprego, o que é exatamente o que torna este ataque tão difícil de detectar a tempo.
Ganchos do Git como canal de entrega furtiva
O malware é construído para funcionar em vários sistemas operacionais ao mesmo tempo. Uma vez acionado, o script do gancho verifica qual sistema a vítima está executando e, em seguida, contata silenciosamente um servidor remoto para baixar o payload certo. Usuários do Windows recebem uma versão, enquanto usuários de macOS e Linux recebem outra. O objetivo permanece o mesmo em todas as plataformas: roubar carteiras de criptomoedas, colher credenciais sensíveis e estabelecer acesso persistente à máquina da vítima em nome do atacante.
Ganchos do Git são um recurso integrado do Git, o sistema de controle de versão usado por praticamente todos os desenvolvedores do mundo. Eles são scripts que são executados automaticamente em certos pontos do processo de desenvolvimento. No uso legítimo, as equipes os implantam para impor verificações de qualidade de código antes que um commit seja concluído.
Neste ataque, o Grupo Lazarus planta um gancho pre-commit malicioso dentro do repositório entregue aos candidatos a emprego. O script é intencionalmente curto e parece completamente inofensivo na superfície. Quando um desenvolvedor tenta fazer uma alteração, o gancho é executado silenciosamente em segundo plano, identifica o sistema operacional e contata um servidor remoto em um domínio projetado para parecer ligado à infraestrutura legítima de desenvolvedores.
Esse servidor entrega um payload diferente dependendo do sistema da vítima. No macOS e Linux, ele serve um script de shell. No Windows, entrega um payload compatível com batch. Ambas as versões instalam implantes capazes de roubar credenciais, drenar carteiras de criptomoedas e relatar de volta aos operadores — tudo enquanto o commit parece ter sucesso sem qualquer problema.
Malware multiplataforma e persistência
O que torna esta campanha distinta é o quão limpo ela roda em várias plataformas. A maioria do malware é construída com um sistema operacional em mente, mas este ataque entrega um payload personalizado para usuários de macOS, Linux e Windows a partir de um único ponto de entrada. Esse nível de flexibilidade aponta para um grupo experiente e bem financiado que investe pesadamente para manter suas campanhas ativas.
Os implantes entregues nesta campanha pertencem a famílias de malware que o Grupo Lazarus usou em operações anteriores, incluindo BeaverTail e InvisibleFerret. Essas ferramentas suportam keylogging, acesso remoto, roubo de dados do navegador e exfiltração de arquivos. Pesquisadores também notaram o uso de ganchos post-checkout, que disparam toda vez que um desenvolvedor muda de branch, dando ao malware múltiplas chances de reexecutar sem qualquer ação visível do usuário.
Indicadores de comprometimento (IoCs)
Os seguintes indicadores foram identificados e devem ser monitorados em ambientes de desenvolvimento:
- Domínio (C2): precommit[.]vercel[.]app (Servidor C2 hospedando payloads por plataforma)
- URLs de Payload: https://precommit[.]vercel[.]app/percival[.]macflag (macOS/Linux), https://precommit[.]vercel[.]app/winds[.]cmd (Windows)
- Arquivo Malicioso: .githooks/pre-commit (Script de gancho pre-commit malicioso)
- Repositório GitHub: github[.]com/precommit[.]vercel[.]app/percival[.]checkout[.]maclag
Medidas de mitigação recomendadas
Desenvolvedores e equipes de segurança podem tomar medidas concretas para reduzir sua exposição. Qualquer repositório recebido através de um processo de emprego ou de uma fonte desconhecida deve ser tratado como hostil até ser verificado. Inspecionar o diretório .githooks antes de abrir um projeto, executar repositórios desconhecidos dentro de máquinas virtuais isoladas sem credenciais salvas e adotar políticas de inspeção de ganchos do Git em toda a organização são todas defesas significativas.
Relatar padrões suspeitos de gancho pre-commit às plataformas de inteligência de ameaças também ajuda a comunidade de segurança mais ampla a responder muito mais rápido. A inspeção de ganchos do Git deve ser parte integrante da política de segurança de desenvolvimento (DevSecOps) para prevenir a execução de código não autorizado durante o fluxo de trabalho de desenvolvimento.
O que os CISOs devem fazer imediatamente
1. Política de Repositórios: Proíba o uso de repositórios de terceiros não verificados em ambientes de desenvolvimento corporativo.
2. Inspeção de Ganchos: Implemente ferramentas que varrem diretórios .githooks em busca de scripts não assinados ou suspeitos.
3. Isolamento: Exija que testes de codificação externos sejam realizados em ambientes isolados (sandbox) sem acesso à rede corporativa.
4. Monitoramento de Rede: Bloqueie ou monitore tráfego para domínios suspeitos como precommit.vercel.app.