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

Okta alerta para campanha de vishing “Pink” que registra passkeys adversariais em contas Microsoft 365

Grupo O-UNC-066/Pink combina chamadas telefônicas com páginas falsas do Entra ID para enrolar passkeys controlados…

11 horas ago

CISA publica post-mortem de vazamento de chaves AWS GovCloud em GitHub pessoal de contratado

CISA detalha resposta a incidente em que credenciais AWS GovCloud e código de infraestrutura interno…

11 horas ago

Zimbra alerta para falha crítica de XSS armazenado no Classic Web Client; patch 10.1.19 é obrigatório

Zimbra emite alerta crítico após identificar vulnerabilidade stored XSS no Classic Web Client que permite…

11 horas ago

ANPD publica o 1º relatório do sandbox de IA: Metatext, Synapse AI e Prevvine sob supervisão desde março

ANPD divulga 1º Relatório Parcial do Sandbox Regulatório de IA: Metatext, Synapse AI e Prevvine…

15 horas ago

Grok 4.5 gasta 4,2x menos tokens que Opus 4.8 no SWE-Bench Pro: SpaceXAI aposta na eficiência para vencer no custo por tarefa

Grok 4.5 chega com foco em código e agentes: 15.954 tokens médios em SWE-Bench Pro…

15 horas ago

Qualcomm compra Modular por US$ 3,9 bi para atacar o fosso do CUDA: MAX e Mojo entram na guerra por data centers

Qualcomm anuncia compra da Modular por ~US$ 3,9 bi para desafiar CUDA da NVIDIA com…

15 horas ago