Plugin działał dokładnie tak, jak obiecywał. Kradł tylko jedną rzecz: twój klucz do AI. A potem sprzedawał go komuś innemu.

cze 18, 2026 | Cyberflux

16 czerwca JetBrains usunął z Marketplace 15 wtyczek, które przez osiem miesięcy po cichu kradły klucze API do dostawców AI. Kampanię wykryła firma Aikido Security. Wtyczki — udające asystentów kodowania opartych na DeepSeek, OpenAI i SiliconFlow — działały dokładnie tak, jak reklamowano: oferowały czat, generowanie commitów, recenzję kodu, znajdowanie błędów, testy jednostkowe. I jednocześnie, w momencie gdy wpisywałeś klucz API, wysyłały go na serwer atakującego. Łącznie blisko 70 000 instalacji, siedem kont wydawców, najstarsze wersje z końca października 2025, najnowsze z 10 czerwca 2026.

Ale najciekawsze w tej historii nie jest to, że wtyczki kradły klucze. Najciekawszy jest model biznesowy tego, co działo się z tymi kluczami potem — bo pokazuje, że klucz do AI stał się towarem samym w sobie.

Mechanizm: kradzież w jednym kliknięciu, ukryta przez wyłączenie TLS

Sposób działania jest pouczający, bo jest tak prosty, że trudno go nazwać exploitem — to nadużycie zaufanego, rutynowego gestu.

Żeby użyć którejkolwiek z wtyczek, otwierasz panel ustawień i wklejasz klucz API do dostawcy AI — OpenAI, DeepSeek albo SiliconFlow. Wtyczka potrzebuje tego klucza, by wołać model w twoim imieniu, więc podanie go wydaje się rutyną. Ale w momencie, gdy klikasz „Apply", handler ustawień zapisuje klucz lokalnie i jednocześnie przekazuje go atakującemu metodą save(). Wywołanie odpala się natychmiast po wpisaniu klucza — bez żadnego promptu, ekranu zgody, bez śladu w interfejsie.

Destynacja nie była endpointem dostawcy AI. Był to zaszyty na stałe serwer dowodzenia pod adresem 39.107.60[.]51, osiągany przez nieszyfrowany HTTP, uwierzytelniany statycznym tokenem wbitym w binarkę wtyczki. Klucz leciał jako zwykły tekst w payloadzie JSON.

I tu jest szczegół techniczny wart odnotowania, bo pokazuje świadomość atakującego: żeby zapobiec wykryciu anomalnych połączeń przez lokalne sieci i debugery IDE, wtyczki po cichu instalowały X509TrustManager obejmujący całą maszynę wirtualną Javy — co aktywnie wyłączało standardowe ostrzeżenia o niepodpisanych i samopodpisanych certyfikatach TLS. Innymi słowy: wtyczka nie tylko kradła klucz, ale najpierw rozbrajała mechanizm, który mógłby tę kradzież zauważyć. Wyłączała ostrzeżenia TLS w całej maszynie wirtualnej — co jest samo w sobie poważnym osłabieniem bezpieczeństwa, wykraczającym poza samą eksfiltrację.

Model biznesowy, który jest sednem: okradnij darmowych, sprzedaj płatnym

Tu jest część, która czyni tę kampanię czymś więcej niż zwykłą kradzieżą poświadczeń — i którą warto rozłożyć, bo jest nowa.

Aikido odkrył, że wtyczki mają płatny poziom. Po tym, jak użytkownik zapłaci niewielką opłatę przez wbudowaną w wtyczkę „ściankę darowizn", serwer odsyła klucz API z powrotem do klienta, i wtyczka zaczyna używać tego klucza do wywołań modelu zamiast twojego. Aikido nazywa to wprost dziwacznym — bo żaden legalny operator nie wręczyłby po prostu użytkownikowi działającego, nieograniczonego klucza do płatnego dostawcy AI.

Hipoteza Aikido układa to w spójny, niepokojący obraz: operatorzy zbierają klucze od darmowych użytkowników, a następnie dostarczają je płatnym. Czyli ofiara A instaluje wtyczkę, wkleja swój klucz OpenAI — klucz leci do atakującego. Użytkownik B płaci atakującemu małą opłatę — i dostaje do użytku klucz ofiary A. Ofiara A płaci rachunek za compute, którego używa użytkownik B, a atakujący inkasuje opłatę od B i zbiera klucze od kolejnych ofiar.

To jest zamknięty, samofinansujący się rynek skradzionych zasobów obliczeniowych. Jak ujmuje to jedna z analiz: operator pobiera płatności od jednej grupy użytkowników, jednocześnie wyciągając poświadczenia od drugiej. Organizacje ponoszące koszt skompromitowanych kluczy efektywnie finansują operacyjne koszty atakujących. To nie jest kradzież dla jednorazowego zysku — to jest infrastruktura biznesowa zbudowana na cudzych kluczach.

Klucz do AI jako łup — nowy cel, ten sam wzorzec

Warto zatrzymać się nad tym, co dokładnie jest tu celem, bo to jest zmiana, którą śledzimy od tygodni.

Dawniej łupem w atakach na deweloperów były tokeny GitHub, klucze AWS, poświadczenia do baz danych. Klucz API do dostawcy AI to nowa kategoria celu — i ta kampania pokazuje, że stał się wystarczająco wartościowy, by zbudować wokół niego wyspecjalizowaną operację trwającą osiem miesięcy. Pisaliśmy przy Langflow, że platformy AI stają się „skarbcami kluczy"; przy Agentjacking, że agent kodujący jest nową powierzchnią ataku. JetBrains domyka ten obraz: klucz do AI jest teraz łupem na tyle płynnym, że ma własny czarny rynek z modelem subskrypcyjnym.

Co istotne, to nie jest odosobniony przypadek — równolegle z kampanią JetBrains wykryto coś pokrewnego. Dwa rozszerzenia Chrome (blokery reklam) przyłapano na przechwytywaniu rozmów użytkowników z chatbotami AI: ChatGPT, Claude, Gemini, Copilot, Perplexity, DeepSeek, Grok i Meta AI. Operację nazwano PromptSnatcher, a samą technikę — „Prompt Poaching". Rozszerzenia przechwytywały pełną historię rozmów, użycie modelu i poziom subskrypcji z ośmiu platform, wysyłając to do operatora pod pozorem „ulepszonej ochrony". Co znamienne — te rozszerzenia istniały od lat, a funkcje kradzieży danych AI dodano w aktualizacjach. To jest ten sam wzorzec, co przy Smart TV i Bright Data: zaufane narzędzie, które po cichu zaczyna zbierać twoją aktywność AI.

Razem JetBrains i PromptSnatcher rysują jedną tezę: wszystko, co dotyka twojej interakcji z AI — klucz, prompt, historia rozmów — stało się towarem. Atakujący przesunęli się z kradzieży tradycyjnych poświadczeń na kradzież twojej relacji z modelem.

Czego nie złapała weryfikacja — i co to mówi o marketplace'ach

Jest tu lekcja o samym modelu zaufania do marketplace'ów narzędzi deweloperskich, którą JetBrains uczciwie nazwał.

Wtyczki przeszły przez ręczny proces recenzji JetBrains przed trafieniem do Marketplace — a mimo to mały fragment logiki ukryty w skądinąd działającej wtyczce się prześlizgnął. JetBrains wyjaśnił, dlaczego: ich narzędzie Plugin Verifier było zaprojektowane jako sprawdzacz kompatybilności i użycia API, nie jako dedykowany skaner przepływu danych czy antymalware. Ponieważ rdzenne API używane przez wtyczki wyglądały normalnie w izolacji, pojedyncze zaszyte endpointy i niestandardowe konfiguracje TLS nie zostały oznaczone.

To jest dokładnie ten sam problem, który widzieliśmy przy npm i VS Code Marketplace: weryfikacja sprawdza, czy pakiet działa i jest zgodny — nie czy robi coś złośliwego. JetBrains dodał ważne zastrzeżenie o swoim Verified Vendor Badge: potwierdza on, że profil wydawcy jest autentyczny i powiązany z realnym podmiotem prawnym, ale to weryfikacja organizacyjna. Nie jest stuprocentową techniczną gwarancją bezpieczeństwa wtyczki ani jakości kodu.

To jest kluczowe rozróżnienie dla każdego, kto polega na odznakach zaufania w marketplace'ach. „Zweryfikowany wydawca" znaczy „wiemy, kto to jest", nie „sprawdziliśmy, że kod jest bezpieczny". Te dwie rzeczy są często mylone — a ta kampania pokazuje cenę tego pomylenia.

Dlaczego ten wyciek jest trudniejszy do wykrycia niż zwykły

Jest praktyczny szczegół, który czyni ten typ kradzieży podstępniejszym niż klasyczny wyciek sekretu — i warto go nazwać.

Wyciek klucza przez Git zostawia ślad w treści repozytorium i często łapie go skanowanie sekretów w repo. Ta ścieżka wycieku idzie przez ustawienia IDE i eksfiltrację sieciową — więc skanowanie repozytoriów może ją całkowicie przeoczyć. Deweloper może nigdy nie zobaczyć klucza w kodzie źródłowym, a wtyczka nadal działa normalnie. Wykrycie zależy bardziej od inwentaryzacji wtyczek, inspekcji endpointów, przeglądu użycia u dostawcy i logów sieciowych.

To jest istotne, bo większość programów bezpieczeństwa skupia detekcję sekretów na repozytoriach kodu. Klucz wykradziony z ustawień IDE i wysłany przez HTTP nie pojawi się w żadnym skanie repo. Jedynym sygnałem jest nietypowe użycie klucza u dostawcy AI — anomalia geograficzna albo wolumenowa — albo połączenie do serwera C2 w logach sieciowych.

Co zrobić

Jeśli zainstalowałeś którąkolwiek z 15 wtyczek i wpisałeś klucz API — potraktuj go jako skompromitowany i unieważnij natychmiast. Wejdź do konsoli OpenAI, DeepSeek, SiliconFlow lub odpowiedniego dostawcy, odwołaj klucz na stałe i wygeneruj nowy. JetBrains zdalnie wyłączył wtyczki przez backend, ale to nie cofa kradzieży już wpisanych kluczy.

Rotuj klucze współdzielone. Jeśli klucz wpisany w wtyczkę był używany przez więcej niż jednego dewelopera albo w skryptach, zadaniach CI, notatnikach — zaktualizuj wszystkie te miejsca po rotacji.

Sprawdź wskaźniki kompromitacji. Przeszukaj logi sieciowe pod kątem adresu 39.107.60[.]51 oraz ścieżek /api/software/key/api/software/check. Przejrzyj użycie u dostawcy AI pod kątem nieoczekiwanych wywołań, nietypowych kosztów, wyczerpania limitów lub nieznanych wzorców dostępu. Jeśli wpisałeś klucz w dotkniętą wtyczkę, zakładaj kompromitację nawet bez śladów w logach.

Traktuj wtyczki IDE jak każdą zależność z twoimi uprawnieniami. To jest najtrwalsza lekcja: wtyczka działa na twojej stacji inżynierskiej z twoimi uprawnieniami, więc zasługuje na tę samą ostrożność, co biblioteka, którą dodajesz do projektu. Nie wklejaj długożyciowych sekretów do narzędzi, których nie zweryfikowałeś — a „zweryfikowany wydawca" to nie to samo, co „zweryfikowany kod".

Wprowadź rotację kluczy nieludzkich jako rutynę. Tylko 11% organizacji regularnie rotuje lub audytuje konta serwisowe i poświadczenia nieludzkie — co zostawia długożyciowe tokeny wystawione bezterminowo. Klucz API, który się rotuje co kwartał, jest mniej wartościowy dla atakującego niż taki, który żyje wiecznie.

Źródła

Aikido Security — oryginalny research z analizą mechanizmu i modelu płatnego poziomu: https://www.aikido.dev/blog/multiple-jetbrains-ide-plugins-caught-stealing-ai-keys

JetBrains — oficjalny komunikat z mechanizmem technicznym (X509TrustManager, C2) i działaniami naprawczymi: https://blog.jetbrains.com/platform/2026/06/marketplace-ecosystem-security-update-malicious-ai-plugins/

BleepingComputer — niezależna weryfikacja aktywnego kodu kradzieży i analiza płatnego poziomu: https://www.bleepingcomputer.com/news/security/malicious-jetbrains-marketplace-plugins-steal-ai-api-keys-from-developers/

The Hacker News — kontekst równoległej kampanii PromptSnatcher i techniki Prompt Poaching: https://thehackernews.com/2026/06/malicious-jetbrains-plugins-steal-ai.html

Penligent — analiza, dlaczego ten typ wycieku wymyka się skanowaniu repozytoriów: https://www.penligent.ai/hackinglabs/malicious-jetbrains-plugins/