Segurança cibernética

Campanha GhostAction esconde malware que rouba credenciais em falsos arquivos de fonte em 94 repositórios do GitHub

Atacantes ampliaram a campanha GhostAction no GitHub com uma segunda etapa que disfarça JavaScript malicioso como arquivo de fonte e mira estações de desenvolvedores por meio de tarefas do Visual Studio Code. Pesquisadores identificaram 94 repositórios comprometidos.


Eswar Domingo - 18 de Outubro de 2026 às 17:02
GBHackers

Atacantes da GhostAction ampliaram a campanha de roubo de credenciais no GitHub com uma segunda etapa que disfarça JavaScript malicioso como arquivo de fonte e mira estações de trabalho de desenvolvedores por meio de tarefas do Visual Studio Code.

Jenn Gile identificou 94 repositórios comprometidos pertencentes a 66 proprietários, confirmando a carga maliciosa em todos os 79 repositórios disponíveis para análise. Os 15 restantes estavam inacessíveis.

A OpenSourceMalware investigou o caso depois que o pesquisador da Jamf Threat Labs Thijs Xhaflaire descobriu o conjunto de repositórios ao procurar infecções do PolinRider. A atividade dá continuidade a uma operação que antes se concentrava em fluxos de trabalho maliciosos do GitHub Actions, que roubam segredos de repositórios e credenciais expostas no histórico do Git.

Campanha GhostAction esconde malware que rouba credenciais

O ataque coloca um iniciador em .vscode/tasks.json e armazena sua carga útil em public/fonts/fa-solid-400.woff2. Embora se assemelhe a um recurso da Font Awesome, o arquivo contém 38 linhas de código Node.js sem ofuscação. Uma tarefa chamada eslint-check invoca o Node.js contra o script disfarçado.

A tarefa usa runOn: folderOpen para solicitar a execução quando os desenvolvedores abrem o projeto, enquanto as configurações de apresentação suprimem a visibilidade do terminal.

A execução exige um workspace confiável e permissão para tarefas automáticas. Clonar ou abrir simplesmente um repositório afetado não comprova que o malware foi executado.

Uma vez em execução, o roubador coleta nomes de usuário, nomes de host, variáveis de ambiente selecionadas e arquivos de credenciais associados à AWS (Amazon Web Services), ao npm (Gerenciador de Pacotes do Node.js), ao PyPI (Índice de Pacotes Python), ao Git, ao Kubernetes, ao Claude e ao Gemini.

Ele lê integralmente as chaves privadas SSH (Secure Shell) RSA e Ed25519, enquanto limita a leitura de outros oito arquivos de credenciais aos primeiros 3.000 caracteres.

Uma busca recursiva varre o diretório pessoal em busca de padrões de credenciais, incluindo tokens da AWS, da Anthropic, do GitHub, do npm e do PyPI. As informações coletadas são enviadas por meio de um HTTP POST (método de requisição do Protocolo de Transferência de Hipertexto) na porta 8080. Jenn Gile vinculou a infraestrutura ao endereço 193[.]32[.]204[.]199.

Em sistemas que suportam cron (agendador de tarefas do Unix e Linux), a carga útil instala um comando agendado que é executado a cada cinco minutos. Ele obtém um script por meio de um caminho de servidor específico para o nome de host e envia a resposta diretamente para o Bash (interpretador de comandos), possibilitando comandos adicionais adaptados a cada máquina.

A entrada carrega a marcação #ghc2, e a instalação remove entradas correspondentes existentes antes de adicionar outra. Excluir os arquivos maliciosos do repositório, portanto, deixa essa base de acesso intacta.

Jenn Gile não havia obtido a carga útil subsequente entregue pelo servidor, o que deixa sua funcionalidade sem esclarecimento. O Windows não possui o mecanismo de crontab visado, embora a coleta de credenciais ainda possa ser executada.

A maioria das adições de segunda etapa ocorreu em 15 de outubro. Dois proprietários que haviam removido fluxos de trabalho maliciosos anteriores foram reinfectados, o que mostra que a limpeza de arquivos não eliminou o acesso dos atacantes.

Apesar das semelhanças com o iniciador de fonte falsa do PolinRider, Jenn Gile constatou que não há indicadores compartilhados que estabeleçam operadores em comum.

Os responsáveis pela resposta devem revogar o acesso comprometido ao GitHub antes da limpeza, inspecionar todos os repositórios com permissão de escrita, remover tarefas e fluxos de trabalho maliciosos e investigar a persistência nos endpoints.

Credenciais expostas em arquivos, variáveis de ambiente ou no histórico do Git precisam ser rotacionadas a partir de um dispositivo limpo após a contenção.

IOCs (Indicadores de Comprometimento)

Nota: Endereços IP e domínios foram intencionalmente desfigurados (por exemplo, [.]) para evitar resolução ou hiperlink acidentais. Reverta a desfiguração apenas em plataformas controladas de inteligência de ameaças, como a MISP (plataforma de compartilhamento de inteligência de ameaças), o VirusTotal ou seu SIEM (sistema de gerenciamento de informações e eventos de segurança).

GitHub Malware Segurança cibernética

FONTE

GBHackers