Ir para o conteúdo principal
Segurança online

Contas do GitHub sequestradas: wfx-loot rouba segredos

Publicado em 13 min de leitura
Uma árvore de repositório de código com chaves sendo sugadas de uma branch, ilustrando a campanha wfx-loot de sequestro de contas do GitHub

Em resumo

Segundo relatos de pesquisadores publicados em 12 de novembro de 2026, a campanha wfx-loot usou cerca de 4.800 contas do GitHub comprometidas para sondar mais de 61.000 repositórios e plantar um ladrão de segredos de CI, que, segundo a Aikido, foi executado em pelo menos 1.806 deles [1]. Ela abusa de tokens roubados, e não de uma falha do GitHub [2], e desfaz suas alterações em cerca de um minuto [1].

Principais pontos

  1. A Aikido Security diz que a campanha começou por volta das 12:45 UTC de 10 de novembro de 2026 [1].
  2. 4.837 contas comprometidas abriram pull requests de sondagem intitulados “docs: dependency audit notes” em 61.764 repositórios [1].
  3. O ladrão foi executado em pelo menos 1.806 repositórios, número que, segundo a Aikido, pode subestimar o impacto [1].
  4. Ele captura segredos do GitHub Actions, credenciais de nuvem e chaves de serviços de IA, depois reverte seu commit e apaga a execução do workflow [1][2].
  5. A ausência de um número de execução de workflow logo após um commit suspeito é o sinal mais confiável de que o ladrão foi executado [2].
  6. Se ele foi executado, troque todos os segredos que o workflow podia alcançar e remova backdoors na nuvem, porque a troca por si só não basta [2].
Nesta página 12 seções
  1. O que é a campanha wfx-loot no GitHub?
  2. Qual o tamanho do ataque wfx-loot?
  3. Como funciona o ladrão wfx-loot?
  4. Por que trocar os segredos não basta?
  5. Como verificar se meus repositórios do GitHub foram atingidos?
  6. O que fazer se o ladrão foi executado?
  7. Quais pacotes foram afetados?
  8. Quem está por trás da wfx-loot e como obteve os tokens?
  9. Erros comuns
  10. Perguntas frequentes
  11. Glossário
  12. Fontes

O que é a campanha wfx-loot no GitHub?

A wfx-loot é uma campanha em que um atacante usa credenciais roubadas do GitHub para enviar um workflow malicioso a repositórios em que essas contas podem gravar, roubando segredos do GitHub Actions e credenciais de nuvem [1]. A Aikido Security, que a relatou primeiro, deu esse nome a partir do nome que o próprio atacante usa para o malware (“wfx”) e da palavra empregada para os segredos roubados (“loot”) [1]. A SafeDep também credita à Aikido o primeiro relato [5].

A StepSecurity chama o mesmo ladrão de “wfx” e destaca um ponto-chave: o atacante não explora uma falha do GitHub Actions [2]. Em vez disso, ele usa tokens válidos de contas reais de desenvolvedores e de bots, abrindo pull requests e enviando commits como um desenvolvedor faria [2][4].

A Aikido acredita que o objetivo principal são os segredos de CI, e não se espalhar por pacotes de software, embora a carga maliciosa tenha chegado a pelo menos um pacote do Packagist e um do Go por meio de gatilhos de publicação automatizada [1]. O BleepingComputer, com base na análise da Aikido, relata que algumas das contas comprometidas pertenciam a grandes organizações [3].

Qual o tamanho do ataque wfx-loot?

A Aikido contabiliza 4.837 contas comprometidas que abriram pull requests de sondagem em 61.764 repositórios, com o ladrão executado em pelo menos 1.806 repositórios [1]. Os números diferem um pouco entre os pesquisadores porque cada um pesquisou o GitHub em um momento diferente, enquanto a campanha ainda estava ativa.

  • Aikido: 4.837 contas, 61.764 repositórios; 10.431 pull requests foram para repositórios que a conta não possui; 92% ainda abertos; pelo menos 50 usuários comprometidos publicam pacotes no npm, Go, Packagist, PyPI ou crates [1].
  • Aikido (número do resumo): pelo menos 1.835 repositórios executaram a carga e tiveram credenciais levadas; o BleepingComputer usa esse número [1][3].
  • StepSecurity: mais de 63.000 pull requests de sondagem às 07:40 UTC de 12 de novembro, cerca de 90% ainda abertos [2].
  • SafeDep: 8.093 repositórios receberam commits maliciosos entre 10 e 12 de novembro, número que, como observa o SecurityWeek, não significa necessariamente que o ladrão tenha sido executado [5][4].

A Aikido alerta que sua contagem de execuções pode subestimar o impacto, porque os logs de execução foram apagados nos repositórios afetados [1].

Como funciona o ladrão wfx-loot?

Para cada repositório em que um token roubado pode gravar, o atacante sonda, envia a carga maliciosa e depois limpa os rastros em cerca de um minuto [1].

  1. Sondagem: um pull request intitulado “docs: dependency audit notes”, a partir de uma branch chamada wfx-docs, adiciona um pequeno arquivo de notas. “O pull request não faz nada por si só”, diz a StepSecurity; ele apenas mostra que o token tem acesso de gravação [2][4].
  2. Carga maliciosa: um script de shell de cerca de 1.500 linhas chega de uma entre três formas: injetado em um workflow existente (“ci: refresh build cache”), como um script mais um hook postinstall do npm (“chore: add ci helper”), ou como um novo workflow em uma branch chore/ descartável (“chore: add dependency audit workflow”) [1].
  3. Limpeza: o atacante reverte a alteração e apaga a execução do workflow e seus logs [1]. Um número de execução ausente costuma ser o único vestígio [1].

O script coleta segredos e tokens do GitHub Actions, todo o ambiente do runner, arquivos de credenciais da AWS, Azure, Google Cloud, Docker, Kubernetes, npm, PyPI, SSH e mais, históricos de shell e chaves de provedores de IA e de ferramentas de desenvolvimento [1][3]. Ele chega a ler a memória dos processos em execução no runner [1][4]. A Aikido constatou que as cópias que analisou enviavam os dados roubados apenas por HTTP POST a servidores controlados pelo atacante [1]. A StepSecurity viu depois uma mudança: a partir de cerca das 05:30 UTC de 12 de novembro, as novas cópias passaram a enviar dados somente pelo Telegram, de modo que bloquear apenas os endereços de servidor divulgados já não as detém [2].

Cubos brilhantes em uma esteira com um cubo rachado despejando moedas douradas em um cano, mostrando segredos de CI roubados
O ladrão coleta todos os segredos que o workflow consegue alcançar.

Por que trocar os segredos não basta?

Porque o ladrão tenta plantar backdoors que sobrevivem à troca de credenciais [1][2]. A Aikido descreve três truques de persistência [1]:

  • Verificações de status falsificadas: a Aikido diz que ele publica falsas verificações de “sucesso” com os nomes das verificações obrigatórias de um repositório, o que pode liberar as barreiras de merge da proteção de branch [1]. A StepSecurity constatou esse recurso desativado em todas as 101 amostras que examinou [2].
  • Reescrita da política de confiança da AWS: ele pode definir a política de confiança de uma role para permitir qualquer conta da AWS [1].
  • Injeção de identidade federada no Azure: ele pode adicionar credenciais federadas chamadas wfx-ci-… a aplicativos do Azure AD, permitindo que workflows do repositório comprometido se autentiquem sem um segredo armazenado [1].

Ele também pode gerar tokens OIDC do GitHub e trocá-los por sessões da AWS, do Google Cloud e do Azure, encadear outras roles IAM e criar chaves de acesso da AWS de longa duração [1][3]. Por isso a StepSecurity diz para “remover a persistência, porque a troca por si só não a remove” [2].

Um cofre de aço em forma de nuvem com um cadeado dourado e uma pequena escotilha iluminada em vermelho entreaberta, ilustrando backdoors ocultos na nuvem
Trocar chaves não fecha os backdoors já plantados na AWS ou no Azure.

Como verificar se meus repositórios do GitHub foram atingidos?

Procure o pull request de sondagem e as mensagens de commit do atacante desde 10 de novembro e depois verifique se há lacunas nos números de execução dos workflows [2][1].

  1. Pesquise pull requests com “docs: dependency audit notes” e branches chamadas wfx-docs ou chore/ seguidas de oito caracteres [1][2].
  2. Pesquise commits desde 10 de novembro com “ci: refresh build cache”, “ci: restore”, “ci: cleanup”, “chore: add ci helper” e “chore: add dependency audit workflow” [2].
  3. Para cada resultado, abra a aba Actions e procure um número de execução ausente logo após o commit; a StepSecurity chama isso de o sinal mais confiável de que o ladrão foi executado [2].
  4. Anote qual conta enviou os commits: os tokens dessa conta foram roubados [2]. Se existe um pull request de sondagem, a conta está comprometida mesmo que nenhuma carga tenha sido executada [1].

Não confie na ausência de artefatos. A Aikido diz que a ausência de artefatos wfx-loot, de entradas de cache wfx- ou de resumos de etapa especiais não significa que os dados não foram levados, porque esses canais foram desativados nesta campanha [1]. A Aikido também sugere que a carga pode ser implantada em repositórios privados além dos públicos [1].

Uma fileira de blocos com um faltando, ilustrando a execução de workflow apagada que revela o ataque wfx-loot no GitHub
Um número de execução ausente é o sinal mais confiável de que o ladrão foi executado.

O que fazer se o ladrão foi executado?

Presuma que todo segredo e toda role de nuvem disponíveis ao workflow afetado estão comprometidos, troque-os e depois procure por persistência [1][2].

  • Trocar: todos os segredos de repositório, de ambiente e de organização que o job podia alcançar, não apenas os que o workflow cita; tokens de publicação do npm, do PyPI e de outros; e chaves de nuvem armazenadas como segredos [2].
  • Verificar pacotes: procure versões de pacotes publicadas depois do commit malicioso [2].
  • AWS: procure políticas de confiança que permitam qualquer principal da AWS, chaves de acesso IAM criadas desde 10 de novembro e sessões do CloudTrail começando com wfx- [2].
  • Azure: exclua as credenciais de identidade federada chamadas wfx-ci-* nos registros de aplicativos [2].
  • Google Cloud, Vault, Kubernetes: revise a geração de tokens e os logins feitos com tokens de autenticação do GitHub Actions [2].
  • GitHub: exclua as branches remanescentes, feche os pull requests de sondagem, verifique se nada foi mesclado com uma verificação falsificada e revogue os tokens, as concessões OAuth e as chaves SSH da conta [2].
  • Tokens, segundo a documentação do GitHub: revise seus tokens de acesso pessoal em Settings, Developer settings e exclua os que você não reconhece ou não precisa; o GitHub recomenda tokens refinados (fine-grained), apenas as permissões mínimas necessárias e uma data de expiração, porque um token clássico pode acessar todos os repositórios que você acessa [6].

O hook do npm também é executado em máquinas de desenvolvedores: quem executou npm install durante a curta janela rodou o ladrão localmente e deve trocar também as próprias credenciais [2]. O SecurityWeek resume a orientação de várias empresas de segurança: revogar tokens comprometidos, trocar segredos expostos e verificar alterações não autorizadas na nuvem [4]. Para contas de bot, a StepSecurity também sugere avaliar se elas precisam mesmo de permissão para contornar a proteção de branch [2]. Uma proteção de login forte dificulta campanhas com contas roubadas; veja Autenticação em dois fatores explicada: qual método de 2FA é o mais seguro?.

Quais pacotes foram afetados?

A Aikido lista um pacote do Packagist e um módulo Go que receberam a carga por publicação automatizada [1].

  • Packagist: digitalelvis/neuronai-studio versão 3.14.3; a Aikido diz para tratar como comprometida qualquer máquina que o tenha instalado ou aberto [1].
  • Go: github.com/onuragtas/docker-env v1.0.278 e v1.0.280; a carga está apenas em um arquivo de workflow do GitHub Actions, o código-fonte e os binários do Go não mudaram, e as compilações do Go nunca executam arquivos de workflow, mas a Aikido ainda recomenda remover essas versões [1].

As contagens diferem: a SafeDep diz que três pacotes no Packagist e no proxy de módulos do Go levam a carga, e o SecurityWeek menciona versões de dois módulos Go [5][4]. A SafeDep acrescenta que a carga não foi executada para os consumidores típicos que instalam esses pacotes com composer require ou go get [5]. Consulte a lista atual de cada pesquisador antes de confiar em qualquer uma delas.

Quem está por trás da wfx-loot e como obteve os tokens?

Nenhum dos relatos citados aqui identifica o atacante, e a StepSecurity diz que não estabeleceu como os tokens foram obtidos [2][4].

A StepSecurity encontrou 173 pull requests de sondagem, de 19 contas, feitos com tokens emitidos ao GitHub App da Fly.io; disse que não conseguiu determinar como foram obtidos e que não tinha evidências de que a infraestrutura da Fly.io tenha sido violada [2][4].

A Aikido encontrou sobreposição com contas atingidas pela onda GhostAction de outubro e viu a wfx-loot injetada em arquivos de workflow do GhostAction em mais de 100 repositórios, mas avaliou as duas como campanhas distintas, provavelmente conduzidas por agentes diferentes, já que credenciais roubadas costumam acabar nas mãos de vários grupos [1]. Também notou comentários em indonésio em algumas versões mais novas do malware [1]. Guardar os tokens com cuidado importa aqui; Gerenciadores de senhas explicados: como funcionam e se são seguros cobre o básico.

Números da campanha wfx-loot por pesquisador (conforme relatado em 12 de novembro de 2026)
MedidaNúmeroFonte
Contas comprometidas4.837Aikido
Repositórios sondados61.764Aikido
Repositórios em que o ladrão foi executadopelo menos 1.806-1.835Aikido
Repositórios com commits maliciosos8.093SafeDep
Pull requests de sondagemmais de 63.000 (12 nov., 07:40 UTC)StepSecurity

Erros comuns

  • Supor que uma branch limpa significa que não houve roubo.

    Como fazer certo: O atacante reverte os commits; procure números de execução ausentes [1][2].

  • Trocar apenas os segredos que o workflow cita.

    Como fazer certo: A varredura de memória coleta o resto; troque tudo o que era alcançável [2].

  • Parar depois da troca.

    Como fazer certo: Remova também a persistência na AWS e no Azure [2].

  • Culpar uma falha do GitHub Actions.

    Como fazer certo: O atacante usa tokens roubados válidos [2].

  • Ignorar um pull request de sondagem aberto.

    Como fazer certo: Ele significa que a conta está comprometida [1].

Perguntas frequentes

O que é a campanha wfx-loot no GitHub?

Uma campanha que usa tokens roubados do GitHub para plantar um ladrão de segredos de CI em repositórios [1].

Qual o tamanho do ataque wfx-loot?

4.837 contas sondaram 61.764 repositórios; o ladrão foi executado em pelo menos 1.806 [1].

Como funciona o ladrão wfx-loot?

PR de sondagem, depois um script de ~1.500 linhas via workflow ou hook do npm, depois reversão e exclusão dos logs [1].

Por que trocar os segredos não basta?

A Aikido descreve backdoors na AWS e no Azure que sobrevivem à troca; a StepSecurity diz para remover a persistência porque a troca por si só não a remove [1][2].

Como verificar se meus repositórios do GitHub foram atingidos?

Procure o PR de sondagem e as mensagens de commit e depois verifique se há números de execução ausentes [2].

O que fazer se o ladrão foi executado?

Troque todos os segredos alcançáveis, verifique os pacotes e remova a persistência na nuvem [2].

Quais pacotes foram afetados?

A Aikido lista o digitalelvis/neuronai-studio 3.14.3 do Packagist e o docker-env v1.0.278 e v1.0.280 do Go; a SafeDep lista mais [1][5].

Quem está por trás da wfx-loot e como obteve os tokens?

Não identificado nos relatos; a StepSecurity rastreou algumas sondagens até tokens do GitHub App da Fly.io e não estabeleceu como foram obtidos [2].

Glossário

GitHub Actions
O sistema de CI/CD integrado do GitHub, que executa workflows a cada alteração de código [1].
Segredo de CI
Uma senha, token ou chave armazenada para uso por workflows de build automatizados [1].
Token OIDC
Um token de identidade de curta duração que um workflow pode trocar por acesso à nuvem [1].
Pull request de sondagem
Um PR de aparência inofensiva usado para testar o acesso de gravação [2].
Persistência
Acesso que o atacante mantém depois que as credenciais originais são trocadas [2].

Fontes

  1. wfx-loot campaign pushes CI secret stealer to tens of thousands of repositories Aikido Security · 2026-11-12
  2. WFX Phantom: The GitHub Actions Secret Stealer That Deletes Its Tracks StepSecurity · 2026-11-12
  3. Hackers compromise 4,800 GitHub accounts to steal cloud credentials BleepingComputer · 2026-11-12
  4. Attacker Targets 60,000 GitHub Repositories in Credential Theft Campaign SecurityWeek · 2026-11-12
  5. wfx: GitHub Actions Credential Stealer Hits 8,000 Repos SafeDep · 2026-11-12
  6. Managing your personal access tokens GitHub Docs
Compartilhe este guia Telegram WhatsApp X
0 curtidas

Comentários

Principais comentários

Sobre a equipe Pouyam Política editorial

No Pouyam

Explore o Pouyam

Os guias são só um canto do Pouyam. Veja aonde ir agora.

Navegação rápida