Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!

Nie tylko przeglądarki – złośliwe wtyczki w Visual Studio Code

07 stycznia 2026, 14:20 | W biegu | komentarzy 5

Złośliwe wtyczki pojawiają się nie tylko w przeglądarkach. Środowiskiem, w którym rozpowszechnia się malware są także rozszerzenia do edytorów kodu, np. Visual Studio Code. Pisaliśmy już o takich przypadkach zarówno w oficjalnym repozytorium VSCode, jak i alternatywnym OpenVSX.

TLDR:

  • Złośliwe wtyczki pojawiają się nie tylko dla przeglądarek – zagrożeniem są także inne programy o podobnej architekturze, takie jak np. Visual Studio Code.
  • Badacze z Koi odkryli złośliwe rozszerzenia Bitcoin Black i Codo AI – oba od tego samego wydawcy.
  • Malware przechwytuje ekran, schowek i zainstalowane aplikacje, wysyłając dane na zdalny serwer.
  • Wtyczki pobierają złośliwą DLL wraz z oryginalną binarką programu Lightshot, co utrudnia wykrycie.
  • Warto ograniczać liczbę dodatków, a w organizacjach stosować whitelisty lub ręczne zatwierdzanie rozszerzeń np. przez własny “sklep” z pluginami.

Badacze z Koi odkryli złośliwe wtyczki, które przechwytują ekran i wysyłają jego zawartość do atakującego. Wykradają również hasła WiFi, treści w schowku i przejmują sesje przeglądarki. Wszystko przez niewinną instalację jednego z dwóch rozszerzeń – dodatkowego motywu lub asystenta AI. Oba pochodziły od tego samego wydawcy.

Wtyczka Bitcoin Black miała służyć do ustawienia eleganckiego, ciemnego motywu wraz z tłami i żywymi pomarańczowo-złotymi akcentami w edytorze. Z kolei drugie rozszerzenie – Codo AI – miało być asystentem opartym na AI, integrującym Visual Studio Code z ChatGPT i DeepSeek. 

Rys. 1, 2 – Bitcoin Black i Codo AI w Koidex, źródło: koi.ai

Wtyczka Bitcoin Black ma jednak zdefiniowaną aktywację (activation event)  jako *, a więc uruchamia się każdorazowo przy uruchomieniu edytora. To już jest dziwne, ponieważ po motywie spodziewalibyśmy się co najwyżej podmiany kolorów, a nie ciągłego wykonywania kodu…

Codo AI wygląda więc bardziej wiarygodnie, ponieważ faktycznie działa jako asystent AI – użytkownik może korzystać z ChatGPT lub DeepSeek bezpośrednio w VS Code. Rozszerzenie dostarcza realną funkcjonalność, dzięki czemu wzbudza mniej podejrzeń.

Badacze przeanalizowali jednak kod i znaleźli ciekawy fragment. Pozostawiono nawet komentarze wskazujące złośliwe elementy.

Rys. 3 – Plik extension.js, źródło: koi.ai

Pierwsza analizowana wersja wtyczki (2.5.0) wykonywała skrypt PowerShell. Payload był plikiem ZIP (z zapisanym na stałe hasłem 123), który pobierano przez HTTP i rozpakowywano na kilka sposobów – zarówno domyślnymi binarkami Windows, ale też 7-Zip czy biblioteką DotNetZip.

Co ciekawe okno PowerShell dla złośliwego procesu nie było ukrywane (windowsHide: false). Najprawdopodobniej zostało to przeoczone przy tworzeniu wtyczki.

W wersji 3.3.0 atakujący znacznie uprościł całość – payload nie był już plikiem ZIP, zniknęły też dodatkowe metody rozpakowywania. Zamiast nich pojawił się skrypt batch, który korzystając z narzędzia curl pobierał plik wykonywalny i bibliotekę DLL (Dynamic-Link Library). Okno PowerShell, które było widoczne we wcześniejszych wersjach zostało ukryte.Nazwa DLL przypomina narzędzie do zrzutów ekranu – Lightshot. Sama biblioteka została zidentyfikowana jako złośliwa przez 29 z 72 silników dostępnych w VirusTotal:

Rys. 4 – wyniki VirusTotal, źródło: koi.ai

Malware tworzy katalog w %APPDATA%\Local\Evelyn\ i zbiera informacje takie jak: 

  • zawartość schowka,
  • lista zainstalowanych programów,
  • uruchomione procesy,
  • zrzut ekranu pulpitu,
  • zapisane poświadczenia sieci WiFi,
  • dodatkowe informacje o systemie.

Malware uruchamia także Chrome i Edge w trybie headless. Tryb ten powoduje, że użytkownik nie zauważy tego działania. Przeglądarki uruchamiane są też z dodatkowymi flagami:

chrome.exe --headless=new --disable-gpu --no-sandbox
--window-position=-10000,-10000 --window-size=1,1
--incognito about:blank

“Ukrycie” okna (Windows pozwala ustawić ujemne współrzędne oraz rozmiar 1×1) było w tym przypadku nieco redundantne, skoro i tak wykorzystano flagę –headless. Tryb incognito powoduje, że taka przeglądarka standardowo nie korzysta z zapisanych lokalnie danych stron, takich jak cookies czy localStorage. Dane te nie były więc wykradane bezpośrednio z przeglądarki.

Złośliwa DLL używa COOL_SCREENSHOT_MUTEX_YARRR. To dokładnie taki sam Mutex, jakiego używa prawdziwy program Lightshot. Atakujący stworzyli bibliotekę na bazie oryginalnego kodu Lightshot, dodając funkcje kradnące dane. Dzięki temu złośliwa DLL zachowuje się podobnie do prawdziwego programu, co może utrudnić jej wykrycie.

Atakujący nie tylko nazwali payload “Lightshot” – używają też oryginalnego pliku Lightshot.exe. Dzięki temu sama binarka może nie wzbudzić np. programu antywirusowego, a także znajdować się na whitelistach. Przy uruchomieniu ładowana jest jednak złośliwa biblioteka (DLL hijacking) i to ona pełni funkcję infostealera.

Wtyczki zdają się docierać do dwóch grup:

  • Bitcoin Black do programistów zainteresowanych kryptowalutami – a więc tych, którzy prawdopodobnie posiadają portfele kryptowalutowe,
  • Codo AI do szerszej grupy – programistów chcących wykorzystać AI przy pracy z kodem.

Malware głównie łączy się z domeną syn1112223334445556667778889990[.]org, pod którą działa serwer C2 oraz udostępniany jest payload. Badacze znaleźli również prawdopodobnie zapasowy serwer C2 – server09[.]mentality[.]cloud:40207

Pomimo niedopatrzeń takich jak pozostawione w kodzie komentarze, użycie DLL hijacking z prawidłowo podpisaną, oryginalną binarką jest całkiem sprytne. Programista może zainstalować z pozoru nieszkodliwe narzędzie AI lub motyw, a w ciągu kilku sekund jego hasła WiFi, zawartość schowka i inne dane są wysyłane na serwer atakujących.

Należy pamiętać, że każda instalowana wtyczka to po prostu kolejna aplikacja – z technicznego punktu widzenia możliwości “dodatku”, choć mniejsze od standardowego programu, wciąż mogą wyrządzić niemałe szkody. Warto więc ograniczać liczbę takich wtyczek do minimum. W organizacjach warto rozważyć wdrożenie whitelist lub manualnego zatwierdzania rozszerzeń przed instalacją u użytkowników, np. przez własny “sklep” z pluginami.

Źródło: koi.ai

~Tymoteusz Jóźwiak

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Marek

    Są jakieś rozwiązania (antywirusy), które są w stanie wykrywać takie złośliwe wtyczki? Wiem że wyżej wymienione Koi dostarcza takie rozwiązanie, ale szukam czegoś bardziej mainstreamowego co można by na prywatnym lapku zainstalować.

    Odpowiedz
  2. Marek

    Zna ktoś jakis patent na zarządzenia wtyczkami w vs code na windows w organizacji?

    Odpowiedz
  3. L

    Dlaczego CERT nie zablokuje w naszym kraju domen należących do Lightshot(print.sc, prntscr.com itp)? Przecież to ruskie narzędzie do hackowania.

    Odpowiedz
  4. CERT nie jest w stanie zablokować nawet mojej byłej domeny, na której stoi ukradziona cała zawartość fotograficzna, merytoryczna i intelektualna. Pisałem do nich chyba z 10 razy. Nikt się nie przejmuje. A CERT robi więcej wizerunkowo medialnie dla siebie niż cokolwiek sensownego dla ograniczenia internetowego zła.

    Odpowiedz
  5. Maciej

    >własny “sklep” z pluginami.

    Ale byku, officially build vscode nie obsługuje czegoś takiego jak podpięcie własnego “sklep z pluginami”.

    Odpowiedz

Odpowiedz na Marek