Ataques
GlassWorm: Desmascarando o worm auto-replicante que utiliza código invisível em extensões do VS Code

Redator e editor de conteúdo
Atualizado
24 de out. de 2025
8 min
Em meados de outubro de 2025, pesquisadores de segurança da Koi Security revelaram um ataque à cadeia de suprimentos altamente sofisticado e inovador, executado por um malware batizado de GlassWorm. Esta descoberta marca um preocupante salto evolutivo no design de código malicioso, que se concentra especificamente em ambientes de desenvolvimento ao comprometer extensões do Open VSX Marketplace e do Microsoft VS Code Marketplace.
GlassWorm recebeu seu nome devido ao seu sigilo e transparência sem precedentes. Ele rapidamente se distinguiu de ameaças anteriores—como o verme Shai Hulud que afetou o ecossistema npm apenas um mês antes—ao introduzir uma série de técnicas de evasão avançadas: Verdadeira injeção de código invisível, uma infraestrutura de comando e controle (C2) indestrutível e de três camadas utilizando a blockchain Solana, e um trojan de acesso remoto de espectro completo (RAT) que transformava as máquinas infectadas dos desenvolvedores em uma rede proxy criminosa.
O ataque foi observado pela primeira vez em 17 de outubro, quando o motor de risco da Koi sinalizou alterações suspeitas de comportamento em uma extensão do Open VSX chamada CodeJoy, versão 1.8.3. Embora aparentemente fosse uma ferramenta legítima para a produtividade dos desenvolvedores, a extensão realizava conexões de rede suspeitas e tentava acessar credenciais sem autorização.
A análise inicial revelou que sete extensões do Open VSX foram comprometidas na primeira onda, resultando em aproximadamente 36.000 downloads. Como as extensões do VS Code são atualizadas automaticamente por padrão, essa ameaça autopropagável causou uma infecção silenciosa, generalizada e acelerada na comunidade de desenvolvedores.
O fantasma no código: injeção de malware invisível
A primeira característica da sofisticação do GlassWorm é seu método de implantação da carga útil inicial, uma técnica que rompe com os métodos tradicionais de revisão e detecção de código.
Eludindo a revisão de código com seletores de variação Unicode
Em vez de recorrer a ofuscações típicas ou esconder código em arquivos minificados, os atacantes aproveitaram caracteres Unicode invisíveis, especificamente os seletores de variação Unicode e caracteres da área de uso privado (PUA). Esses caracteres especiais fazem parte da especificação Unicode, mas são projetados para não produzir saída visual ou renderizar-se como simples espaços em branco em editores de código e ambientes de desenvolvimento integrados (IDEs) comuns.
Para um desenvolvedor que realiza uma inspeção manual de código, ou para uma ferramenta como a visualização de diff do GitHub, o código malicioso simplesmente aparece como linhas vazias ou espaço em branco. Como um pesquisador da Koi observou, o malware é invisível; não está ofuscado. Não está oculto em um arquivo minificado. É realmente invisível para o olho humano. O código parece legítimo, mas para o interpretador JavaScript, é código executável e ativo.
Esse método enganou com sucesso os desenvolvedores cujas contas foram comprometidas. Eles poderiam ter revisado os arquivos modificados—como aquele onde o código malicioso criou uma "brecha maciça" entre linhas de código funcional—e não ter visto nada de estranho, aprovando e distribuindo o malware involuntariamente para centenas de usuários.
Resiliência em três camadas: a infraestrutura C2 inquebrável
Ao ser executada, a carga útil invisível inicia a próxima etapa ao se conectar aos seus servidores de comando e controle (C2). O C2 do GlassWorm é talvez seu recurso mais resiliente, pois emprega um sistema de redundância em múltiplas camadas através de três mecanismos diferentes, tornando quase impossível desmontá-lo.
Blockchain Solana: o C2 primário imutável
O canal C2 primário utiliza a blockchain pública Solana. O malware é codificado com o endereço da carteira do invasor e procura na rede Solana por transações originadas daquele endereço. Quando uma transação é encontrada, o malware extrai um objeto JSON contendo um link codificado em Base64 do campo de memo da transação—um espaço para anexar texto arbitrário às transações da blockchain. Este link aponta para a carga útil do próximo estágio.
O uso de uma blockchain pública e descentralizada oferece aos atacantes vantagens significativas:
Imutabilidade e resiliência: Uma vez que uma transação é registrada na blockchain, ela não pode ser modificada ou deletada. Isso significa que as instruções C2 são permanentes e não podem ser desativadas via solicitações legais ou técnicas padrão.
Anonimato e resistência à censura: Carteiras de criptomoedas são pseudônimas, dificultando a atribuição. Além disso, não há um provedor de hospedagem central, registrador de domínio ou infraestrutura única que possa ser desativada.
Tráfego legítimo: As conexões aos nós RPC (remote procedure call) do Solana—os servidores usados para interagir com a blockchain—parecem normais e são improváveis de serem sinalizadas por ferramentas de monitoramento de segurança padrão.
Custo baixo e atualizações dinâmicas: O atacante pode atualizar a localização de sua carga útil simplesmente postando uma nova transação de baixo custo, permitindo que ele gire rapidamente a infraestrutura e evite bloqueios contra URLs de carga útil anteriores.
Google Calendar: o C2 de backup legítimo
Como um mecanismo de fallback altamente eficaz, o GlassWorm utiliza o Google Calendar. O malware é configurado para consultar uma URL de evento do Google Calendar específica e publicamente acessível. Oculta no título do evento está outra URL codificada em Base64, que também aponta para o próximo estágio da carga útil.
Esse método elude os controles de segurança usando um serviço legítimo, altamente confiável e amplamente utilizado. Nenhuma organização bloqueia o tráfego para o Google Calendar, o que fornece uma infraestrutura "indestrutível" que o invasor pode atualizar a qualquer momento simplesmente editando o título do evento.
Descriptografia da carga útil e gerenciamento de chaves
Os canais C2 apontam, em última instância, para endereços IP controlados diretamente pelos atacantes, como 217.69.3.218 ou 199.247.10.166. A carga útil obtida desses servidores não é imediatamente utilizável; ela é fortemente ofuscada, codificada em Base64 e protegida adicionalmente com criptografia AES-256-CBC.
Os atacantes implementaram uma defesa engenhosa contra a interceptação: A chave de descriptografia não é armazenada no próprio malware, mas é gerada dinamicamente por solicitação e passada em cabeçalhos de resposta HTTP personalizados. Isso significa que, mesmo que uma equipe de segurança intercepte a carga útil criptografada, não pode descriptografá-la sem fazer uma nova solicitação em tempo real para capturar as chaves únicas atuais.
ZOMBI: o trojan de acesso remoto de espectro completo
O estágio final descriptografado do GlassWorm é uma carga útil de JavaScript maciça denominada módulo ZOMBI—uma referência arrepiante à infraestrutura de zombie botnet que cria. Este módulo transforma cada estação de trabalho de desenvolvedor infectada em um nó completo dentro da rede criminosa do atacante.
Fase um: coleta de dados e roubo financeiro
As funções primárias do módulo ZOMBI são o roubo extenso de dados e ganho financeiro:
Roubo de credenciais para propagação: Ele coleta agressivamente tokens de autenticação do NPM, tokens do GitHub, credenciais do Open VSX e credenciais do Git. Essas são as chaves críticas necessárias para o ciclo de autopropagação do verme.
Drenagem de carteiras de criptomoedas: O malware visa especificamente e drena fundos de 49 diferentes extensões de carteiras de criptomoedas, incluindo algumas populares como Coinbase Wallet, MetaMask e Phantom.
Reconhecimento de rede: O módulo realiza reconhecimento, mapeando redes corporativas internas acessíveis pela estação de trabalho infectada. Todos os dados roubados são exfiltrados para pontos finais específicos controlados por atacantes (p. ex., 140.82.52.31).
Fase dois: transformar o host infectado em uma arma
Além do roubo de dados, o módulo ZOMBI proporciona aos atacantes controle abrangente e persistente sobre a máquina da vítima:
Implantação de proxy SOCKS: O malware instala um servidor proxy SOCKS na máquina infectada. Essa funcionalidade é inestimável para os atacantes, pois:
Anonimiza ataques: Os atacantes roteiam seu tráfego através do endereço IP da vítima, mascarando sua própria origem.
Elude os firewalls: Permite que atacantes externos acessem sistemas de rede internos que a máquina da vítima pode alcançar, transformando a estação de trabalho do desenvolvedor em um ponto de acesso interno à rede constante.
Fornece infraestrutura gratuita: O grupo criminoso obtém uma rede de servidores proxy distribuídos prontos para uso, sem incorrer em custos.
Computação em rede virtual oculta (HVNC): HVNC dá ao invasor acesso remoto gráfico completo à máquina, mas é completamente invisível para o usuário.
HVNC roda em uma área de trabalho virtual oculta que não aparece no Gerenciador de Tarefas e não exibe janelas na tela da vítima. O atacante pode operar silenciosamente em segundo plano, usando o navegador da vítima com todas as sessões iniciadas (p. ex., e-mail e ferramentas internas), lendo código-fonte confidencial, roubando credenciais adicionais e pivotando para outros sistemas dentro da rede corporativa—fazendo literalmente qualquer coisa que a vítima poderia fazer, mas sem que ela soubesse.
Canais de controle descentralizados: O GlassWorm garante que sua estrutura de comando seja o mais distribuída possível:
Implanta módulos WebRTC para estabelecer canais de comunicação peer-to-peer, que usam NAT transversal para eludir firewalls tradicionais e permitir controle direto em tempo real sem a necessidade de um servidor central.
Os comandos são distribuídos usando a rede BitTorrent Distributed Hash Table (DHT). Este sistema descentralizado, que torna o rastreamento de torrents quase impossível de ser desativado, permite que os comandos se espalhem por milhões de nós, garantindo que não haja um único servidor central que possa ser desconectado.
O ciclo de autopropagação: uma mudança fundamental
O propósito principal de roubar credenciais NPM, GitHub e Open VSX não é apenas o roubo, mas a propagação automatizada.
Este é o ciclo de auto-replicação:
Infecção inicial: Uma conta de desenvolvedor comprometida envia o código malicioso invisível para uma extensão legítima.
Coleta de credenciais: A carga útil invisível é executada e rouba novas credenciais de desenvolvedores vítimas.
Propagação automatizada: As credenciais roubadas são usadas para comprometer pacotes e extensões adicionais nas marketplaces.
Crescimento exponencial: Cada nova máquina de desenvolvedor infectada se torna um ponto de lançamento, um "vetor de infecção," levando a um crescimento exponencial em todo o ecossistema de desenvolvimento de software.
Esse mecanismo destaca uma mudança fundamental e preocupante no panorama das ameaças. Os atacantes não estão mais satisfeitos com compromissos pontuais; estão construindo malwares autônomos e autossustentáveis que podem se propagar rapidamente. Sua natureza autopropagadora, combinada com código invisível, C2 na blockchain e total capacidade de RAT, faz do GlassWorm um novo referencial para atacantes da cadeia de suprimentos.
Indicadores de comprometimento (IoCs) e recomendações
O ataque do GlassWorm já era uma ameaça ativa e em andamento antes de sua descoberta. Os usuários que haviam instalado extensões infectadas foram comprometidos imediatamente.
Extensões conhecidas comprometidas
A primeira onda de extensões comprometidas focou principalmente ao Open VSX Marketplace, com um caso encontrado no VS Code Marketplace da Microsoft (mais tarde removido):
Marketplace | Nome da extensão | Versões afetadas |
Open VSX | codejoy.codejoy-vscode-extension | 1.8.3, 1.8.4 |
Open VSX | l-igh-t.vscode-theme-seti-folder | 1.2.3 |
Open VSX | kleinesfilmroellchen.serenity-dsl-syntaxhighlight | 0.3.2 |
Open VSX | JScearcy.rust-doc-viewer | 4.2.1 |
Open VSX | SIRILMP.dark-theme-sm | 3.11.4 |
Open VSX | CodeInKlingon.git-worktree-menu | 1.0.9, 1.0.91 |
Open VSX | ginfuru.better-nunjucks | 0.3.2 |
Open VSX | ellacrity.recoil | 0.7.4 |
Open VSX | grrrck.positron-plus-1-e | 0.0.71 |
Open VSX | jeronimoekerdt.color-picker-universal | 2.8.91 |
Open VSX | srcery-colors.srcery-colors | 0.3.9 |
Open VSX | sissel.shopify-liquid | 4.0.1 |
Open VSX | TretinV3.forts-api-extention | 0.3.1 |
MS VS Code | cline-ai-main.cline-ai-agent | 3.1.3 |
Infraestrutura e IoCs de persistência
IPs primários C2: 217.69.3.218, 199.247.10.166
Pontos finais de exfiltração: 140.82.52.31:80/wall, 199.247.13.106:80/wall
Carteira Solana (atacante): 28PKnu7RzizxBzFPoLp69HLXp9bJL3JFtT2s5QzHsEA2
Link C2 to Google Calendar: https://calendar.app.google/M2ZCvM8ULL56PD1d6
Mecanismos de persistência (registro do Windows): Chaves definidas em HKCU\Software\Microsoft\Windows\CurrentVersion\Run e HKLM\Software\Microsoft\Windows\CurrentVersion\Run para garantir reinício automático em qualquer falha.
Ações recomendadas
Qualquer organização ou desenvolvedor que identificar esses IoCs em sua infraestrutura deve assumir imediatamente que foi comprometido.
Para sistemas infectados (medidas imediatas):
Quarentena e reformatar: A medida mais segura é assumir que a máquina está totalmente comprometida e isolá-la imediatamente, e depois formatá-la para garantir a eliminação do módulo ZOMBI.
Rotacionar todos os segredos: Rotacione todas as credenciais e segredos usados na máquina infectada, incluindo:
Tokens do NPM
Credenciais do GitHub e do Git
Tokens do Open VSX e do VS Code
Todas as senhas e chaves da API armazenadas
Monitorar atividades financeiras: Audite e monitore de perto toda atividade de carteira de criptomoedas em busca de transações não autorizadas.
Para todos os desenvolvedores (medidas preventivas):
Auditoria atenta de extensões: Audite regularmente todas as extensões do VS Code instaladas em relação a listas conhecidas de comprometimento e verifique se há atividades anômalas (p. ex., conexões de rede suspeitas, uso estranho de APIs).
Desativar atualizações automáticas: Considere desativar o recurso de atualização automática padrão para extensões em favor de um processo de revisão manual.
Avaliar extensões: Antes de instalar, avalie cuidadosamente as extensões verificando a reputação do editor, o histórico de avaliações e a frequência de atualizações, e certifique-se de instalar apenas aquelas que são absolutamente necessárias.
Controle centralizado: Para empresas, considere implementar uma lista de permissões centralizada para extensões do VS Code para minimizar a superfície de ataque.
A emergência do GlassWorm indica que o campo de batalha pela segurança da cadeia de suprimentos continua a mudar dramaticamente. A ameaça não se limita mais a registros de código comprometidos, mas agora inclui vermes autônomos projetados para se propagar exponencialmente por todo o ecossistema de desenvolvimento, utilizando técnicas que são invisíveis ao olho humano e altamente resilientes contra desmantelamento da infraestrutura. A vigilância e as práticas de segurança robustas são agora mais críticas do que nunca.
Se você tiver alguma dúvida, não hesite em nos contatar em help@fluidattacks.com. Convidamos você a se inscrever para um teste gratuito de 21 dias de nosso plano Essential do Hacking Contínuo.
Comece agora com o PTaaS da Fluid Attacks
Assine nossa newsletter
Mantenha-se atualizado sobre nossos próximos eventos e os últimos posts do blog, advisories e outros recursos interessantes.
Outros posts
















