Uma cópia envenenada de uma das extensões de programação com IA mais usadas chegou aos programadores através do próprio marketplace do Cursor. A empresa informou a 29 de outubro que a versão 2.1.313 da extensão Anthropic.claude-code publicada na sua loja de extensões para VS Code era uma compilação maliciosa, que não foi criada pela Anthropic, e que, no máximo, 5000 utilizadores a instalaram ou atualizaram. O Cursor garante que vai contactar diretamente essas pessoas.
Segundo o Cursor, o pacote adulterado esteve acessível entre as 2h27 e as 13h35, hora do Pacífico. Assim que era carregado, recolhia o nome da máquina e do utilizador, o sistema operativo, a arquitetura do processador, as pastas pessoal e de trabalho, os nomes das variáveis de ambiente, o endereço de email configurado no Git e o IP público. Depois tentava juntar uma chave controlada pelo atacante ao ficheiro authorized_keys, ativar o serviço SSH local e abrir um túnel SSH inverso para um servidor remoto, repetindo a tentativa mais ou menos a cada minuto e enviando o seu estado por HTTP para um ponto de recolha na porta 8099.
O código malicioso procurava também sobreviver aos reinícios. No macOS registava um LaunchAgent com um nome que imita componentes da Apple; no Windows tentava criar uma tarefa agendada com privilégios SYSTEM e, se falhasse, deixava um script na pasta de arranque. A OpenSourceMalware, que analisou o pacote de forma independente, encontrou um carregador de 66 linhas colocado no início do ficheiro JavaScript principal da extensão, antes do código legítimo. Como corre logo que o módulo é carregado, a vítima nem precisava de abrir uma conversa com o Claude. Os investigadores detetaram ainda uma variante para Linux, que acrescenta uma entrada ao crontab no arranque, e notaram que a fase de reconhecimento registava os nomes, mas não os valores, de até 40 variáveis com aspeto de chaves, tokens ou segredos.
Os estragos têm limites. O Cursor explica que ligar o serviço SSH exige direitos de administrador que a extensão não tem na maioria dos computadores macOS e Windows e que erros no próprio código malicioso faziam esse passo falhar fora de configurações invulgares, pelo que o atacante, em regra, não conseguia entrar pelo túnel. Ainda assim, a chave intrusa, os scripts de persistência e o relatório sobre a máquina foram gravados ou enviados. A empresa acrescenta que trabalhou com o fornecedor de alojamento para desligar o servidor do atacante, o que neutraliza o túnel e o envio de dados.
A resposta do Cursor não se ficou pela remoção da versão. A empresa diz ter bloqueado a distribuição, desligado por precaução todo o marketplace de extensões para VS Code, auditado os acessos, confirmado que nenhuma outra extensão foi alterada, trocado as suas chaves e reconstruído a loja antes de a reabrir. Não explicou como é que o atacante conseguiu publicar o pacote modificado. A Reuters, ao noticiar o caso, descreveu o Cursor como propriedade da SpaceX e indicou que a Anthropic não respondeu de imediato a um pedido de comentário.
Quem instalou a 2.1.313 a partir do marketplace do Cursor nesse intervalo deve procurar no ficheiro authorized_keys uma chave com a etiqueta svc-telemetry, isolar qualquer máquina com sinais do código malicioso, executar os scripts de limpeza disponibilizados pelo Cursor e renovar credenciais a partir de um sistema de confiança. O Cursor avisa que desinstalar a extensão não chega, porque ficam para trás scripts de persistência autónomos, e que a recolha limitada de dados não exclui um roubo posterior de credenciais através do acesso remoto.
Os primeiros relatos públicos divergiram quanto à origem da versão maliciosa. A empresa de segurança Phorion descreveu-a como um comprometimento da extensão no Open VSX, enquanto a OpenSourceMalware corrigiu a sua análise depois de ser contactada pelo Cursor: a origem foi o marketplace do Cursor, e a listagem no Open VSX, o pacote npm e a versão da loja da Microsoft não estavam infetados. O próprio Cursor afirma não ter indícios de que outras versões ou a distribuição oficial tenham sido afetadas.