Um novo caso de malware no VS Code mostra que até mesmo uma ação aparentemente simples, como abrir uma pasta de projeto em um editor de código, pode se transformar em um risco de segurança. Pesquisadores identificaram uma campanha sofisticada que usa repositórios aparentemente legítimos, pacotes npm e Go comprometidos para instalar um infostealer capaz de roubar informações sensíveis de desenvolvedores.
A descoberta foi feita por equipes de segurança da JFrog e da Nextron Systems, que analisaram uma nova etapa da campanha conhecida como Fonte Falsa, relacionada ao grupo norte-coreano associado à operação Contagious Interview. O ataque explora a confiança dos programadores em projetos open source e processos comuns de desenvolvimento.
O objetivo principal da ameaça é atingir ambientes de desenvolvimento em Linux, Windows e macOS, buscando credenciais, chaves de acesso, tokens, dados de navegadores e informações usadas diariamente por profissionais de tecnologia.
Como o malware no VS Code dribla o npm usando tarefas automatizadas
O diferencial desta campanha está na forma como os criminosos evitam mecanismos tradicionais de detecção. Em vez de depender apenas dos conhecidos scripts de instalação do npm, que costumam ser monitorados por ferramentas de segurança, os invasores abusam de recursos internos do VS Code.
O ataque utiliza o arquivo de configuração tasks.json, presente em projetos do editor, configurado com a diretiva runOn: “folderOpen”. Na prática, isso permite executar automaticamente uma tarefa assim que o desenvolvedor abre a pasta do projeto.
Essa técnica transforma o próprio fluxo de trabalho do programador em uma porta de entrada para o malware. O usuário acredita estar apenas analisando um código ou realizando um teste técnico, mas o ambiente pode iniciar uma rotina maliciosa em segundo plano.
A estratégia também ajuda a escapar de análises tradicionais porque não depende diretamente do comportamento esperado de um pacote malicioso do npm. O código perigoso é ativado pelo sistema de tarefas do editor, reduzindo a visibilidade do ataque.
Outro detalhe usado pelos criminosos foi o disfarce de arquivos JavaScript maliciosos. Alguns componentes foram apresentados como arquivos de fontes web, utilizando extensões como .woff2, tentando parecer recursos legítimos de interface.

A conexão com a Coreia do Norte e a campanha Fonte Falsa
A campanha está ligada à operação Fonte Falsa, uma atividade atribuída a grupos de ameaça norte-coreanos que utilizam engenharia social para atacar desenvolvedores de software.
A abordagem começa com falsas oportunidades profissionais. Os criminosos entram em contato com programadores oferecendo supostos processos seletivos, testes técnicos ou projetos de avaliação.
Durante a interação, a vítima recebe links para repositórios hospedados em plataformas como o GitHub, apresentados como exemplos de código ou tarefas de programação. Ao baixar e executar os projetos, o desenvolvedor acaba ativando o mecanismo malicioso.
Essa técnica explora um ponto fraco importante na rotina de profissionais de tecnologia: a necessidade constante de avaliar códigos de terceiros, bibliotecas e projetos compartilhados.
O ataque à cadeia de suprimentos aproveita exatamente essa confiança. Em vez de atacar diretamente uma empresa, os criminosos tentam comprometer ferramentas e ambientes utilizados por desenvolvedores.
O uso inovador da blockchain como escudo
Um dos aspectos mais avançados da campanha envolve o uso de redes blockchain para dificultar o bloqueio da infraestrutura criminosa.
O malware utiliza serviços como TronGrid e redes baseadas em Aptos para buscar partes do código malicioso final. Dessa forma, os operadores conseguem armazenar instruções ou componentes sem depender exclusivamente de servidores tradicionais de comando e controle.
Essa abordagem torna a remoção mais complicada porque bloquear um domínio ou derrubar um servidor específico deixa de ser suficiente.
A utilização de blockchain em campanhas maliciosas mostra uma evolução das técnicas usadas por grupos avançados, que procuram meios descentralizados para manter suas operações funcionando.
O estrago do infostealer em sistemas Linux e ecossistemas dev
Após ser executado, o malware instala um ladrão de informações conhecido como InvisibleFerret. O objetivo é coletar dados valiosos do ambiente de desenvolvimento e das contas utilizadas pelo profissional.
O script desenvolvido em Python procura principalmente:
- Chaves SSH usadas para acesso a servidores e repositórios.
- Credenciais do GitHub CLI, incluindo arquivos como hosts.yml.
- Tokens de autenticação de serviços de desenvolvimento.
- Dados armazenados em navegadores.
- Carteiras de criptomoedas.
- Informações de configuração de ferramentas usadas por programadores.
Os usuários de Linux são alvos especialmente importantes porque muitos desenvolvedores trabalham nesse ecossistema. O malware tenta acessar armazenamentos de credenciais como o Linux Secret Service e o KDE Wallet.
No macOS, a ameaça busca informações protegidas pelo Keychain, onde ficam armazenadas senhas, certificados e chaves utilizadas por aplicativos.
No Windows, o foco continua sendo capturar dados de navegadores, tokens e informações que possam permitir acesso a ambientes corporativos.
Esse tipo de infostealer representa um risco elevado porque um único computador comprometido pode abrir caminho para invasões maiores, incluindo acesso a códigos privados, servidores e contas empresariais.
Pacotes npm e Go afetados: verifique seus projetos
Os pesquisadores identificaram pacotes comprometidos publicados em ecossistemas populares de desenvolvimento. Entre os pacotes npm maliciosos encontrados estão:
- html-para-gutenberg
- fetch-page-assets
Além disso, a campanha atingiu projetos escritos em Go hospedados no GitHub. Desenvolvedores que utilizam dependências desses repositórios devem revisar seus ambientes.
Os 16 repositórios Go identificados incluem:
- github.com/Auto-xx/AutoGPT
- github.com/aiwaves-cn/agents
- github.com/AlexanderGrooff/inspektor
- github.com/anchore/grype
- github.com/aquasecurity/trivy
- github.com/charmbracelet/bubbletea
- github.com/docker/compose
- github.com/go-chi/chi
- github.com/golang/go
- github.com/kubernetes/kubernetes
- github.com/moby/moby
- github.com/projectdiscovery/nuclei
- github.com/swaggo/swag
- github.com/traefik/traefik
- github.com/urfave/cli
- github.com/zeromicro/go-zero
A recomendação para equipes de desenvolvimento é revisar dependências instaladas recentemente, analisar alterações inesperadas em arquivos de configuração do VS Code e verificar processos executados automaticamente ao abrir projetos.
Como se proteger contra malware no VS Code e ataques à cadeia de suprimentos
A primeira medida de defesa é tratar projetos externos com cautela. Um repositório enviado durante um suposto teste de emprego ou contato inesperado deve ser analisado antes de ser aberto no ambiente principal.
O recurso Workspace Trust do VS Code deve permanecer ativo. Essa camada ajuda a limitar comportamentos automáticos de projetos desconhecidos e reduz o risco de execução de tarefas suspeitas.
Também é importante:
- Evitar executar códigos recebidos de desconhecidos sem análise prévia.
- Revisar arquivos como tasks.json antes de abrir projetos.
- Conferir dependências instaladas em projetos npm e Go.
- Usar autenticação multifator nas contas de desenvolvimento.
- Manter sistemas e ferramentas atualizados.
- Monitorar alterações em chaves SSH e tokens de acesso.
Desenvolvedores que instalaram os pacotes afetados ou interagiram com repositórios suspeitos devem agir rapidamente. A recomendação é revogar chaves de API, substituir senhas, invalidar tokens de acesso e limpar diretórios ocultos relacionados ao VS Code.
A campanha Fonte Falsa reforça um alerta importante para toda a comunidade open source: a segurança do desenvolvimento moderno depende não apenas do código escrito, mas também das ferramentas, dependências e projetos que entram no ambiente de trabalho.
O crescimento de ataques envolvendo npm, Go, automações do VS Code e técnicas de engenharia social mostra que desenvolvedores precisam tratar cada projeto externo como um possível risco até que sua origem e comportamento sejam confirmados.