Extensão Nx Console comprometida: stealer entregue por commit órfão no GitHub afeta 2,2 milhões de usuários do VS Code

A extensão Nx Console (rwl.angular-console), com mais de 2,2 milhões de instalações no Marketplace do Visual Studio Code, foi comprometida na versão 18.95.0 e usou um commit órfão escondido no repositório oficial nrwl/nx para entregar um stealer de credenciais de 498 KB que exfiltra segredos de desenvolvedores via HTTPS, GitHub API e tunelamento DNS, alertaram pesquisadores da StepSecurity nesta semana.

O que aconteceu

Pesquisadores de cibersegurança identificaram uma versão maliciosa da extensão Nx Console publicada no Marketplace oficial do Visual Studio Code. O artefato afetado é o pacote rwl.angular-console, em sua versão 18.95.0, que serve como interface visual para o monorepo Nx em editores como VS Code, Cursor e JetBrains. Apenas a publicação do Marketplace foi atingida; a versão equivalente disponível no Open VSX permaneceu limpa.

De acordo com a análise da StepSecurity, segundos após o desenvolvedor abrir qualquer workspace no VS Code, a extensão buscava silenciosamente um payload ofuscado de 498 KB hospedado em um commit órfão, sem assinatura, dentro do próprio repositório nrwl/nx no GitHub. O código então instalava o runtime JavaScript Bun e executava um arquivo index.js responsável por coletar credenciais e estabelecer persistência.

A causa raiz, segundo os mantenedores, foi a compromissão prévia da máquina de um colaborador, cujas credenciais do GitHub vazaram em um incidente anterior não detalhado publicamente. Esse acesso permitiu ao atacante empurrar o commit malicioso para a raiz oficial do projeto. A janela de exposição foi curta — entre 14:36 e 14:47 CEST do dia 18 de maio de 2026 —, mas suficiente para que vários usuários fossem comprometidos.

Como o ataque funciona

O payload é descrito pela StepSecurity como uma ferramenta multifásica de roubo de credenciais e envenenamento de cadeia de suprimentos. Após detectar o fuso horário da vítima, o malware se interrompe em máquinas localizadas na Rússia e na CEI e prossegue como processo background destacado. Em seguida, varre o sistema em busca de segredos: tokens do GitHub, credenciais do npm, configurações de clientes Anthropic e cofres 1Password.

A exfiltração usa três canais distintos para dificultar a detecção: requisições HTTPS comuns, abuso da própria GitHub API e tunelamento via DNS. Em sistemas macOS, o stealer instala ainda um backdoor escrito em Python que utiliza a GitHub Search API como dead drop resolver, recebendo novos comandos por meio de buscas a repositórios controlados pelos operadores. Esse backdoor permite shell remoto, captura de tela, upload e download de arquivos e execução arbitrária de Python.

“Segundos após um desenvolvedor abrir qualquer workspace, a extensão comprometida baixou silenciosamente e executou um payload ofuscado de 498 KB a partir de um commit órfão escondido dentro do repositório oficial nrwl/nx no GitHub.”

Ashish Kurmi, pesquisador da StepSecurity

Quem é afetado e quais são os indicadores

Qualquer desenvolvedor que tenha instalado ou atualizado o Nx Console no VS Code durante a janela de exposição precisa assumir comprometimento. Os mantenedores publicaram uma lista de indicadores que permitem detecção rápida em estações afetadas.

  • Instalação da versão 18.95.0 do Nx Console entre 14:36 e 14:47 CEST do dia 18 de maio de 2026.
  • Presença de arquivos como ~/.local/share/kitty/cat.py, ~/Library/LaunchAgents/com.user.kitty-monitor.plist, /var/tmp/.gh_update_state ou /tmp/kitty-*.
  • Processos Python executando cat.py ou com a variável de ambiente __DAEMONIZED=1 ativa.
  • Atividade anômala em tokens do GitHub, contas npm, vaults 1Password ou cofres Anthropic.

Análise

Este é o segundo incidente sério no ecossistema Nx em menos de um ano — em agosto de 2025, diversos pacotes npm da mesma família também foram envenenados com código malicioso. A repetição revela um padrão preocupante: atacantes estão deliberadamente mirando ferramentas centrais do dia a dia de desenvolvedores, sabendo que essas plataformas concentram acesso a registries, repositórios privados, segredos de CI/CD e, cada vez mais, configurações de provedores de IA como Anthropic e OpenAI.

A escolha de hospedar o payload em um commit órfão dentro do próprio repositório oficial é particularmente engenhosa. Commits órfãos não aparecem na árvore principal de branches, escapam de revisões manuais e permanecem acessíveis via SHA enquanto o repositório existir. Combinada com abuso da GitHub API como canal de C2 e dead drop, a campanha demonstra que o GitHub está sendo cada vez mais usado como infraestrutura ofensiva — uma evolução que ecoa táticas vistas em incidentes recentes envolvendo pacotes como common-tg-service, exiouss e a campanha de 38 pacotes npm orquestrada por um ator de língua indonésia explorando dependency confusion.

Para times de defesa, a mensagem é direta: o perímetro do desenvolvedor é hoje uma das superfícies de ataque mais valiosas. Um único colaborador com credenciais comprometidas, em uma organização com 2,2 milhões de downstreams, basta para gerar um incidente global.

Recomendações práticas

  • Atualizar imediatamente o Nx Console para a versão 18.100.0 ou superior.
  • Encerrar processos relacionados a cat.py e __DAEMONIZED=1 e remover artefatos em ~/.local/share/kitty/, LaunchAgents e /tmp/kitty-*.
  • Rotacionar todos os segredos acessíveis a partir da máquina afetada: tokens do GitHub, npm, chaves SSH, segredos do 1Password e configs de provedores de IA.
  • Auditar logs do GitHub e npm em busca de uso anômalo de tokens nas últimas semanas.
  • Implementar policies de assinatura obrigatória para commits e bloquear extensões VS Code não pinadas em ambientes corporativos.
  • Monitorar conexões DNS suspeitas e tráfego HTTPS para domínios não conhecidos saindo de estações de desenvolvimento.

Fonte: The Hacker News

TheNinja

Recent Posts

Chaves de API do Google continuam válidas por até 23 minutos após exclusão, alerta Aikido Security

Pesquisadores documentam atraso entre exclusão de chave de API do GCP e bloqueio efetivo de…

10 horas ago

GitHub lança publicação em estágios no npm para conter ataques à supply chain de software

Recurso staged publishing exige aprovação humana com 2FA antes que pacotes do npm fiquem instaláveis.…

10 horas ago

Underminr: nova vulnerabilidade em CDNs compartilhadas permite esconder C2 atrás de domínios confiáveis

Falha afeta cerca de 88 milhões de domínios e permite que atacantes contornem filtros de…

1 dia ago

Hospitais universitários alemães sofrem vazamento de dados de pacientes após ataque a prestadora de faturamento

Ataque à Unimed expõe dados de pacientes em ao menos seis hospitais alemães. Colônia e…

1 dia ago

Pacotes PHP do Laravel-Lang são comprometidos para entregar credential stealer multiplataforma

Atacantes publicaram mais de 700 versões maliciosas dos pacotes Laravel-Lang em 22 e 23 de…

1 dia ago

Operation Ramz: Interpol prende 201 em ofensiva inédita contra cibercrime no Oriente Médio e Norte da África

Interpol coordena operação multinacional de quatro meses em 13 países MENA: 201 prisões, 53 servidores…

5 dias ago