Um grupo de 77 extensões na loja Open VSX foi identificado como imitador de ferramentas legítimas de desenvolvimento, ao mesmo tempo em que transmitia informações sobre os sistemas e os ambientes de desenvolvimento nos quais foram instaladas.
As extensões, uma espécie de “gêmeo malicioso”, foram enviadas ao repositório entre 26 de julho e 1º de agosto de 2026, segundo a Manifold Security. Os pacotes foram removidos da Open VSX em 3 de agosto de 2026.
“Na maioria dos pacotes, ele envia pouco mais do que o nome da máquina”, afirmaram os pesquisadores de segurança Ax Sharma e Cody Nash. “Em 19 deles, envia uma descrição detalhada da máquina, do repositório aberto no editor e do sistema de CI em que o editor está sendo executado.”
Das extensões identificadas, 58 foram descritas como ferramentas leves projetadas para exfiltrar o nome da máquina e, em alguns casos, o nome da pasta de trabalho ou a versão do editor. As demais são payloads de reconhecimento que transmitem informações ligadas ao desenvolvimento: nome local da máquina e nome de usuário do sistema operacional, nome do editor, versão, tipo de host e ID da máquina, plataforma e arquitetura, idioma e fuso horário, além do nome da pasta do espaço de trabalho aberto e o caminho completo no sistema de arquivos.
Ambos os grupos compartilham o mesmo domínio de exfiltração de dados, além de semelhanças no código e no comportamento.
Os nomes das 19 extensões estão listados abaixo.
amd.gaia-vscode
artsy.artsy-studio-extension-pack
configcat.configcat-feature-flags
iotaledger.iota-move
marketplace.visualstudio
obyte.oscript-vscode-plugin
openeuphoria.vscode-euphoria
oss.sfmc-devtools-vscode
rumbledb.jsoniq-vscode
ssagov.uef-snippets
taskfile.vscode-task
doi.fileheadercomment
mengsiCode.vscode-django-boilerplate
move.move-analyzer
uavcan.dsdl
vs-publisher-988541.apexsql-power-tools
casualjim.gotemplate
jcamp.dotnet-test-provider-view
superposition.supertoml-analyzer
O ponto mais notável da campanha é que ela reutiliza nomes, namespaces e descrições de extensões reais da Open VSX, mas os publica por meio de contas sem relação com os projetos originais e com um número de versão baixo, como 0.0.1. A principal mudança está na substituição do conteúdo do arquivo empacotado extension.js, que passa a capturar e transmitir dados, enquanto a coleta é apresentada como “métricas de uso anônimas”.
Nenhuma das extensões oferece a funcionalidade anunciada em suas descrições. Em vez disso, elas exibem um item na barra de status e uma mensagem informando que estão ativas, antes de iniciar a etapa de exfiltração de dados.
Nas 77 extensões, os dados são enviados para mangorbit[.]com, domínio registrado em 15 de julho de 2026, 11 dias antes da publicação dos primeiros pacotes.
As extensões do segundo grupo identificado também foram vistas executando as seguintes etapas: inspecionar arquivos no diretório .git do espaço de trabalho para obter hosts remotos e organizações do Git, o domínio do e-mail configurado pelo desenvolvedor, a branch atual e o hash SHA do commit HEAD; enumerar até 60 IDs de extensões instaladas e capturar o nome do host do proxy a partir das variáveis de ambiente; coletar os nomes de marcadores de CI presentes e, separadamente, os valores de GITHUB_REPOSITORY, CI_PROJECT_PATH, a URI da coleção do Azure DevOps, o identificador da organização no Buildkite, o nome de usuário do projeto no CircleCI, o nome do Codespace e a URL do contexto do espaço de trabalho no Gitpod a partir de ambientes de CI; e ler a configuração de telemetria do próprio editor para verificar se a opção de recusa está habilitada e enviar o status.
Análises adicionais indicam que o código malicioso tem planos de contingência para consultar um registro DNS TXT e obter uma URL alternativa de exfiltração caso o domínio principal seja bloqueado ou derrubado. A variante de reconhecimento também traz um mecanismo de repetição que adia a coleta para mais tarde, o que sugere que o objetivo vai além de um simples experimento pontual.
“Na variante de reconhecimento, as tentativas ocorrem em cerca de 15 minutos, 50 minutos e três horas e meia, depois a cada sete ou oito horas, retomando a cada reinício do editor e desistindo apenas após sete dias”, explicaram os pesquisadores. “Uma máquina offline, protegida por firewall ou atrás de um proxy que descarta a primeira solicitação volta a ser consultada por uma semana.”
“A variante de reconhecimento verifica se o próprio devcontainer.json ou o arquivo .vscode/extensions.json do espaço de trabalho aberto referencia o ID da extensão e reporta a resposta como um único indicador. Em termos práticos, ela distingue instalações impostas pela configuração de um repositório daquelas escolhidas por uma pessoa. Esse é o dado que você quer se a pergunta for como estou sendo incluído e por qual caminho.”
A divulgação ocorre no momento em que 450 pacotes únicos do npm, distribuídos em 2.244 artefatos, foram comprometidos como parte de um novo ataque à cadeia de suprimentos de software para entregar um infostealer e usar o token roubado do npm para publicar versões trojanizadas contendo o mesmo malware. A campanha de comprometimento recebeu o nome de ChainDrop.
“As versões maliciosas contêm uma variante do Mini Shai-Hulud, um worm de roubo de credenciais com capacidade de autorreplicação, entregue por meio de um payload JavaScript baseado em Bun, grande e fortemente ofuscado”, afirmou a Microsoft. “O malware normalmente é executado automaticamente por meio de um gancho de ciclo de vida preinstall do npm, antes de a instalação do pacote ser concluída.”
“O malware também pode usar credenciais roubadas do GitHub para inserir arquivos de configuração do Claude e do Visual Studio Code nos repositórios, estabelecendo persistência e criando um caminho adicional de infecção de desenvolvedor para desenvolvedor.”
Embora as táticas se assemelhem às observadas em atividades anteriores do worm Shai-Hulud no npm, a campanha ainda não foi atribuída a um responsável.
“Esta amostra também mostra técnicas não documentadas em relatos anteriores sobre o Shai-Hulud: ela baixa um runtime autônomo do Bun para executar uma segunda etapa empacotada, usa um distribuidor modular com canais separados de entrega via GitHub e domínio, e planta ganchos de inicialização em .claude e .vscode para alcançar desenvolvedores e agentes de codificação de IA que clonam o código-fonte”, disse a Socket.
A OX Security observou que os ataques em andamento à cadeia de suprimentos, voltados ao npm, exigem uma camada de proteção que vá além de bloquear scripts de instalação e exigir autenticação de dois fatores (2FA) para contas de mantenedores.
“É preciso um controle granular de permissões sobre o que um pacote pode e não pode fazer”, disse o pesquisador de segurança Moshe Siman Tov Bustan. “Pacotes do npm deveriam exigir permissão antes de conseguir exfiltrar chaves da AWS e credenciais do GitHub em um único comando.”
Publicidade
Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Guardsi: qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...