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/keyi /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/

















































































































































































Nie nowy atak, tylko naprawiony błąd. Co łatka Gemini CLI mówi o tym, że tryb –yolo w potoku CI/CD to nie jest dobry pomysł