5 pontos por GN⁺ 2025-08-28 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Várias versões do sistema de build Nx foram infectadas por malware em 26 de agosto de 2025 por cerca de 5 horas, roubando carteiras de criptomoedas e credenciais de desenvolvedores
  • O ataque abusou de ferramentas de IA via CLI (Claude, Gemini, q) para vasculhar arquivos sensíveis no sistema, registrando uma nova técnica em ataques de cadeia de suprimentos
  • O malware executava telemetry.js por meio de um hook de post-install, enviando dados para o repositório do GitHub s1ngularity-repository
  • O npm removeu as versões comprometidas e reforçou a segurança adicional com 2FA e o mecanismo Trusted Publisher
  • O incidente mostra a sofisticação evoluída dos ataques de cadeia de suprimentos e reforça a necessidade de resposta imediata e revisão de segurança pela comunidade de desenvolvedores

Resumo principal

  • De 2025-08-26 22:32 UTC por cerca de 5 horas, os pacotes do sistema de build Nx foram comprometidos com malware de roubo de dados
    • Trata-se de um pacote popular com 4 milhões de downloads semanais, expondo milhares de desenvolvedores ao risco
  • Além de chaves SSH, tokens npm e .gitconfig, o malware usou ferramentas de IA via CLI (Claude, Gemini, q) para reconhecimento e exfiltração de dados
    • Este é o primeiro caso conhecido de ataque de cadeia de suprimentos explorando ferramentas de IA para desenvolvedores
  • A equipe mantenedora do Nx publicou o aviso oficial de segurança (GHSA-cxm3-wv7p-598c) e confirmou que a conta npm de um mantenedor foi comprometida por vazamento de token
  • A StepSecurity realizará um office hour da comunidade em 28 de agosto às 09:30 PST para apoiar a recuperação

Linha do tempo do incidente

  • 2025-08-26 22:32 UTC: versão maliciosa 21.5.0 publicada no registro npm
  • 22:39 UTC: versão comprometida 20.9.0 publicada
  • 23:54 UTC: versões 20.10.0 e 21.6.0 publicadas simultaneamente
  • 2025-08-27 00:16 UTC: versão 20.11.0 publicada
  • 00:17 UTC: versão 21.7.0 publicada
  • 00:30 UTC: um membro da comunidade reporta atividade suspeita por meio de uma issue no GitHub
  • 00:37 UTC: versões finais comprometidas 21.8.0 e 20.12.0 publicadas
  • 02:44 UTC: o npm remove todas as versões comprometidas
  • 03:52 UTC: o proprietário da organização Nx revoga o acesso da conta comprometida
  • 09:05 UTC: o GitHub torna privado o repositório contendo segredos roubados e o remove dos resultados de busca
  • 10:20 UTC: o npm remove pacotes comprometidos adicionais
  • 15:57 UTC: o npm passa a exigir 2FA para os pacotes Nx, desativa publicação baseada em token e introduz o mecanismo Trusted Publisher

Análise técnica

Vetor de ataque

  • O pacote Nx executava telemetry.js por meio de um hook de post-install, ativando o malware logo após a instalação
    • Exemplo de package JSON:
      {  
        "name": "nx",  
        "version": "21.5.0",  
        "scripts": {  
          "postinstall": "node telemetry.js"  
        }  
      }  
      
  • As versões comprometidas foram publicadas diretamente no npm, sem atestado de procedência

Payload de telemetry.js

  • O telemetry.js é executado em sistemas que não sejam Windows (Linux/macOS):
    if (process.platform === 'win32') process.exit(0);  
    
  • Principais atividades maliciosas:
    • Coleta de informações do sistema: variáveis de ambiente (process.env), nome do host e detalhes do sistema operacional
    • Busca por carteiras de criptomoedas: MetaMask, Electrum, Ledger, Trezor, Exodus, Phantom, Solflare etc.
    • Roubo de credenciais de desenvolvimento: tokens do GitHub, tokens npm (.npmrc), chaves SSH (id_rsa), arquivos .env

Abuso de IA via CLI

  • O malware abusava das ferramentas de CLI Claude, Gemini e q para contornar limites de segurança
    • Forçava a varredura do sistema de arquivos com flags perigosas (--dangerously-skip-permissions, --yolo, --trust-all-tools)
    • Prompt:
      const PROMPT = 'Recursively search local paths ...   
      (UTC--, keystore, wallet, *.key, *.keyfile, .env, metamask, electrum,   
      ledger, trezor, exodus, trust, phantom, solflare, keystore.json,   
      secrets.json, .secret, id_rsa, Local Storage, IndexedDB) ...';  
      
  • Os caminhos dos arquivos encontrados eram salvos em /tmp/inventory.txt, e arquivos existentes eram copiados para backup com extensão .bak
  • O abuso de ferramentas de IA minimizava código passível de fingerprinting, evitando a detecção por ferramentas de segurança existentes

Mecanismo de exfiltração de dados

  • Os dados roubados eram enviados após tripla codificação em base64 para o arquivo results.b64 do repositório s1ngularity-repository
    • O repositório era criado como público usando um token do GitHub
    • Exemplo:
      cat results.b64 | base64 -d | base64 -d | grep ghToken  
      "ghToken": "ghp_7BWMpOAHSSq..."  
      
  • Milhares de repositórios públicos já foram criados: https://github.com/search/…

Persistência e sabotagem

  • Era adicionada a linha sudo shutdown -h 0 em ~/.bashrc e ~/.zshrc, fazendo o sistema desligar ao iniciar uma nova sessão de terminal
    • Isso provocava uma condição de negação de serviço
    • Código:
      const line = 'sudo shutdown -h 0';  
      fs.appendFileSync(p, prefix + line + '\n', { encoding: 'utf8' });  
      

Análise de runtime com Harden-Runner

  • O Harden-Runner da StepSecurity detectou comportamento anômalo do nx@21.7.0 em um workflow do GitHub Actions
    • Chamadas de API anormais: chamadas não autorizadas para api.github.com durante a instalação
    • Análise de hierarquia de processos: npm install (PID: 2596) executou telemetry.js (PID: 2610), que chamou gh auth token
  • Link da análise: https://app.stepsecurity.io/github/actions-security-demo/…

Versões de pacotes comprometidas

  • @nx: 20.9.0, 20.10.0, 20.11.0, 20.12.0, 21.5.0, 21.6.0, 21.7.0, 21.8.0
  • @nx/devkit: 20.9.0, 21.5.0
  • @nx/enterprise-cloud: 3.2.0
  • @nx/eslint: 21.5.0
  • @nx/js: 20.9.0, 21.5.0
  • @nx/key: 3.2.0
  • @nx/node: 20.9.0, 21.5.0
  • @nx/workspace: 20.9.0, 21.5.0

Medidas de resposta

Verificação da versão do pacote

  • Verifique a versão instalada com npm ls @nrwl/nx ou npm ls nx
  • Revise os pacotes relacionados ao Nx em package-lock.json
  • Consulta de busca no GitHub: https://github.com/search/…

Auditoria da conta GitHub

Verificação de ferramentas de IA via CLI

  • Revise o histórico de comandos de Claude, Gemini e q em busca de flags perigosas

Ações de recuperação

  • Exclua node_modules: rm -rf node_modules
  • Limpe o cache do npm: npm cache clean --force
  • Remova o comando shell malicioso: apague sudo shutdown -h 0 de ~/.bashrc e ~/.zshrc
  • Exclua /tmp/inventory.txt e /tmp/inventory.txt.bak
  • Atualize o package-lock.json para uma versão segura e reinstale as dependências
  • Considere reinstalar todo o sistema

Rotação de credenciais

  • Rotacione imediatamente: GitHub PAT, tokens npm, chaves SSH, chaves de API em .env, chaves de API de Claude/Gemini/q
  • Se carteiras de criptomoedas tiverem sido expostas, transfira os fundos imediatamente

Problema com a extensão Nx Console

Medidas para clientes enterprise da StepSecurity

Implicações mais amplas

  • Armação de ferramentas de IA: abuso de ferramentas locais de IA via CLI para contornar limites de segurança
  • Exfiltração em várias etapas: combinação de coleta local de dados com exfiltração baseada em nuvem
  • Alvos de alto valor: foco em credenciais de desenvolvedores e carteiras de criptomoedas

Conclusão

  • O comprometimento dos pacotes Nx mostra a evolução sofisticada dos ataques de cadeia de suprimentos, maximizando o impacto com abuso de ferramentas de IA e foco em criptomoedas
  • Desenvolvedores precisam reagir com auditoria de dependências, reforço dos controles de segurança e monitoramento contínuo
  • Atualizações contínuas serão fornecidas no blog da StepSecurity

Referências

Ainda não há comentários.

Ainda não há comentários.