Dois pacotes npm e dezenas de pacotes Go foram comprometidos numa campanha de supply chain que transforma o VS Code em arma silenciosa contra desenvolvedores. A operação está ligada ao grupo Lazarus, da Coreia do Norte, e já rouba credenciais de navegadores, carteiras de criptomoedas e chaves de desenvolvedor há meses.

O ataque foi revelado hoje (29 de junho) por pesquisadores da The Hacker News, com análise técnica detalhada da JFrog e monitoramento contínuo da plataforma OpenSourceMalware. Dois pacotes npm — html-to-gutenberg e fetch-page-assets — e 16 pacotes Go foram hijackados entre maio e junho de 2026. Todos já foram removidos dos registos, mas quem instalou as versões comprometidas pode estar infectado sem saber.

A anatomia do ataque Fake Font

A campanha Fake Font não usa lifecycle scripts do npm — a técnica mais comum em ataques de supply chain. Em vez disso, esconde a execução maliciosa dentro de uma tarefa do VS Code. O ficheiro .vscode/tasks.json contém uma tarefa chamada eslint-check com a diretiva runOn: 'folderOpen'. Quando o desenvolvedor abre a pasta do projeto no VS Code ou no Cursor, o código executa automaticamente — sem clique, sem aviso.

O payload disfarça-se como um ficheiro de fonte: public/fonts/fa-solid-400.woff2. O ficheiro não contém dados tipográficos — é JavaScript puro, codificado em múltiplas camadas de Base91. Segundo a OpenSourceMalware, que rastreia a campanha desde janeiro de 2026, esta é a terceira sub-campanha da operação Contagious Interview, em curso desde 2023.

Blockchain como blindagem contra takedowns

Um detalhe técnico que diferencia o Fake Font de ataques comuns é o uso de infraestrutura blockchain como dead drop resolver. O malware consulta a rede TronGrid (e Aptos como fallback) para obter o endereço do próximo estágio de JavaScript — não um servidor DNS tradicional ou IP fixo. Isso torna praticamente impossível derrubar a infraestrutura de C2 com bloqueios de domínio. O JavaScript recuperado repete o padrão para configurar um servidor de comando e controle baseado em Socket.io.

O backdoor Socket.io concede ao atacante controle remoto total: execução de shell, harvest de clipboard, operações no sistema de ficheiros, upload de ficheiros e execução arbitrária de JavaScript. Em paralelo, um componente Python descarrega um infostealer sofisticado do servidor C2.

O que o infostealer rouba

O payload Python não é selectivo. Segundo a OpenSourceMalware, o malware sifona dados de:

  • Navegadores Chromium e Firefox (cookies, passwords, histórico)
  • Gerenciadores de passwords e apps de autenticação
  • Carteiras de criptomoedas (extensões de browser e desktop)
  • Credenciais Git, GitHub CLI e logs do GitHub Desktop
  • VS Code global storage e configurações
  • Windows Credential Manager, Linux Secret Service, KDE Wallet e macOS Keychain
  • Metadados de cloud storage: Dropbox, Google Drive, OneDrive, iCloud, Box, Mega e pCloud

Os dados coletados são comprimidos em arquivos ZIP e enviados ao servidor C2 — e, quando configurado, também a um bot do Telegram. O atacante recebe tudo em tempo real.

16 pacotes Go também comprometidos

A Nextron Systems identificou 16 pacotes Go infectados com a mesma cadeia de ataque. A maioria são pacotes aparentemente legítimos cuja versão mais recente incluiu malware junto ao conteúdo original, mantendo a estrutura e o ficheiro de fonte falso. Entre os pacotes estão github.com/lambda-platform/lambda, github.com/dexbotsdev/uniswap-v2-v3-arbitrage e github.com/zainirfan13/graphql-client.

A campanha cruza cinco ecossistemas de open source — npm, PyPI, Go, Cargo e Packagist — acompanhando credenciais roubadas de registos conforme são coletadas. Segundo a OpenSourceMalware, o Lazarus Group já acumulou mais de 2.600 registros de pacotes, repositórios, URLs, domínios e carteiras de criptomoeda associados às suas operações.

Quem está por trás

A atribuição ao Lazarus Group, grupo patrocinado pelo estado da Coreia do Norte, é de alta confiança. As famílias de payload, padrões de infraestrutura e técnicas operacionais foram corroboradas por anos de pesquisa independente. Segundo a SC Media, o Fake Font demonstra uma escalada clara das operações da Coreia do Norte: dos ataques de engenharia social originais via LinkedIn para técnicas que eliminam completamente o fator humano, usando repositórios GitHub comprometidos que disparam automaticamente quando clonados.

A campanha Contagious Interview já passou por três fases: inicialmente usava dependências npm maliciosas, depois evoluiu para apps web maliciosas e agora explora as tarefas automatizadas do VS Code. A evolução mostra que o grupo aprende com cada takedown e antecipa respostas defensivas — inclusive criando vetores redundantes como o ficheiro spellright.dict, que funciona como backup caso o desenvolvedor detecte e remova o tasks.json.

O que fazer agora

A JFrog recomenda uma lista de ações imediatas para qualquer desenvolvedor que tenha instalado estes pacotes:

  1. Remover imediatamente html-to-gutenberg e fetch-page-assets e verificar os 16 pacotes Go listados
  2. Buscar tarefas ocultas .vscode/tasks.json em todas as máquinas de desenvolvimento
  3. Rotacionar todas as credenciais: tokens de API, chaves cloud, passwords de browser, carteiras de criptomoeda
  4. Rever histórico de clones de repositórios Git nos últimos 60 dias
  5. Configurar o VS Code para não confiar automaticamente em pastas de workspace

O ecossistema open source continua a ser o campo de batalha principal de grupos nation-state. Enquanto ferramentas como VS Code oferecem automação poderosa para desenvolvedores, o abuso dessas mesmas capacidades transforma cada projeto clonado em potencial vetor de comprometimento. A lição é repetida: verificar antes de instalar, questionar antes de confiar, e nunca tratar pacotes como inofensivos só porque estão num registo público.

Referências