
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
Mechanizm zadań w Microsoft Visual Studio Code został zaprojektowany jako wygodny sposób automatyzacji pracy deweloperów. Najnowsze kampanie przypisywane północnokoreańskim operatorom pokazują jednak, że funkcja ta może zostać wykorzystana jako wektor ataku. W analizowanych przypadkach plik tasks.json był używany do automatycznego uruchamiania złośliwego łańcucha wykonania po otwarciu projektu, co prowadziło do instalacji malware StoatWaffle.
Z perspektywy bezpieczeństwa problem jest szczególnie istotny, ponieważ atak nie wymaga od ofiary ręcznego uruchamiania podejrzanego pliku. Wystarczy otwarcie spreparowanego repozytorium lub katalogu projektu w edytorze, aby zainicjować kolejne etapy kompromitacji.
W skrócie
Kampania powiązana z operacją Contagious Interview wykorzystuje złośliwe projekty VS Code do infekowania środowisk programistycznych. Kluczowym elementem jest konfiguracja runOn: folderOpen, która wywołuje zadanie automatycznie po otwarciu katalogu projektu.
- Atak bazuje na zaufaniu do narzędzi deweloperskich i repozytoriów kodu.
- Łańcuch infekcji może sprawdzać obecność Node.js i w razie potrzeby instalować wymagane środowisko.
- Końcowym ładunkiem jest StoatWaffle, malware łączące funkcje stealera i zdalnego dostępu.
- Na celowniku znajdują się przede wszystkim programiści, zespoły DevOps oraz organizacje z sektorów kryptowalut i Web3.
Kontekst / historia
Opisana aktywność wpisuje się w szerszy schemat działań znany jako Contagious Interview. Kampanie tego typu od dłuższego czasu opierają się na socjotechnice naśladującej procesy rekrutacyjne. Ofiary otrzymują zadania techniczne, próbki kodu lub repozytoria, które rzekomo mają służyć do weryfikacji kompetencji, a w rzeczywistości stają się punktem wejścia do środowiska ofiary.
W ostatnich miesiącach operatorzy rozwijali ten model, wykorzystując złośliwe pakiety npm, publiczne repozytoria oraz kolejne rodziny malware, takie jak BeaverTail, OtterCookie, InvisibleFerret czy FlexibleFerret. Nadużycie zadań VS Code stanowi naturalną ewolucję tej taktyki, ponieważ osadza wykonanie złośliwego kodu w codziennym i wiarygodnym przepływie pracy programisty.
Analiza techniczna
Rdzeniem ataku jest spreparowany plik tasks.json zawarty w projekcie VS Code. Konfiguracja wykorzystuje parametr runOn: folderOpen, co powoduje automatyczne uruchomienie zadania w momencie otwarcia workspace lub katalogu projektu. W praktyce oznacza to, że użytkownik może zainicjować atak już na etapie zwykłego przeglądania repozytorium.
Pierwszy etap infekcji odpowiada za pobranie danych z infrastruktury operatora i przygotowanie środowiska uruchomieniowego. Z analiz wynika, że malware działa wieloplatformowo. Skrypt sprawdza obecność Node.js, a jeśli komponent nie jest zainstalowany, pobiera go i instaluje, aby następnie uruchomić downloader odpowiedzialny za pobieranie dalszych modułów.
Kolejne etapy mają charakter łańcuchowy. Downloader cyklicznie komunikuje się z serwerem zdalnym, pobiera następny moduł i wykonuje go jako kod Node.js. Taki model utrudnia analizę statyczną, ogranicza widoczność końcowego ładunku na początkowym etapie oraz pozwala operatorom dynamicznie podmieniać funkcjonalność bez modyfikowania samego repozytorium.
StoatWaffle zostało opisane jako modułowe malware zaimplementowane w Node.js. W badanych wariantach zapewniało co najmniej dwa podstawowe zestawy możliwości:
- moduł stealer służący do pozyskiwania danych uwierzytelniających oraz informacji o rozszerzeniach zapisanych w przeglądarkach opartych na Chromium i w Mozilla Firefox,
- moduł RAT umożliwiający odbieranie poleceń z serwera C2 i wykonywanie działań na zainfekowanym systemie.
Zakres funkcji zdalnego dostępu obejmuje między innymi zmianę bieżącego katalogu roboczego, enumerację plików i folderów, wykonywanie kodu Node.js, przesyłanie plików, rekursywne wyszukiwanie danych według określonych kryteriów, wykonywanie poleceń powłoki oraz zakończenie działania. W wariantach obserwowanych na macOS odnotowano również kradzież danych z iCloud Keychain, co dodatkowo zwiększa wartość operacyjną infekcji.
Na uwagę zasługuje także adaptacyjny charakter infrastruktury. W nowszych próbkach operatorzy modyfikowali sposób hostowania i pobierania kolejnych etapów, co wskazuje na aktywny rozwój narzędzi oraz szybkie reagowanie na publikacje analityczne i mechanizmy detekcji.
Konsekwencje / ryzyko
Ryzyko związane z tym wektorem ataku jest wysokie, ponieważ uderza on w środowisko, w którym naturalny poziom zaufania jest bardzo duży. Programiści regularnie otwierają obce repozytoria, analizują cudzy kod i uruchamiają zależności, co sprawia, że tradycyjne sygnały ostrzegawcze są słabsze niż w przypadku klasycznych kampanii phishingowych.
Najpoważniejsze skutki obejmują przejęcie danych logowania, wyciek sekretów deweloperskich, kompromitację tokenów dostępowych, kradzież danych z przeglądarek oraz uzyskanie trwałego zdalnego dostępu do stacji roboczej. W środowiskach inżynierskich może to prowadzić do przejęcia repozytoriów, systemów CI/CD, rejestrów pakietów, kont chmurowych i portfeli kryptowalutowych.
Szczególnie narażone pozostają organizacje z obszaru kryptowalut i Web3, gdzie pojedyncza kompromitacja stacji roboczej osoby o wysokich uprawnieniach może oznaczać nie tylko incydent bezpieczeństwa, lecz także bezpośrednią stratę finansową.
Rekomendacje
Organizacje powinny traktować środowiska deweloperskie jako systemy uprzywilejowane i objąć je dodatkowymi kontrolami bezpieczeństwa. Kluczowe znaczenie ma ograniczenie automatycznego wykonywania zadań w VS Code oraz zmiana procedur pracy z niezweryfikowanymi repozytoriami.
- Wyłączyć automatyczne uruchamianie zadań w VS Code i zweryfikować ustawienia bezpieczeństwa edytora.
- Aktualizować VS Code do wersji zawierających dodatkowe mechanizmy ostrzegania i ograniczenia dla auto-run tasks.
- Monitorować lub blokować wykonanie zadań z plików
tasks.jsonpochodzących z nieznanych workspace’ów. - Uruchamiać niezweryfikowane projekty wyłącznie w środowiskach izolowanych, takich jak kontenery lub maszyny wirtualne.
- Kontrolować instalację Node.js i innych interpreterów, zwłaszcza jeśli jest inicjowana poza standardowym procesem administracyjnym.
- Wdrożyć EDR lub XDR z regułami wykrywającymi nietypowe uruchomienia VS Code, procesów potomnych i pobieranie skryptów.
- Monitorować dostęp do przeglądarek, magazynów sekretów, portfeli kryptowalutowych i narzędzi deweloperskich.
- Ograniczyć uprawnienia do krytycznych repozytoriów, pipeline’ów oraz kluczy produkcyjnych.
- Szkolić zespoły techniczne w zakresie fałszywych procesów rekrutacyjnych i złośliwych repozytoriów testowych.
- Stosować odrębne konta, przeglądarki i środowiska do testów rekrutacyjnych oraz pracy produkcyjnej.
Warto również budować detekcje oparte na zachowaniu. Szczególnie istotne są alerty dotyczące otwierania workspace’ów z zadaniami automatycznymi, uruchamiania procesów node lub powłoki bez uzasadnionego kontekstu oraz nietypowych odczytów danych z profili przeglądarek.
Podsumowanie
Nadużycie mechanizmu auto-run tasks w VS Code pokazuje, jak skuteczne mogą być ataki osadzone w codziennych przepływach pracy programistów. StoatWaffle nie jest wyłącznie kolejnym stealerem, ale elementem szerszej i rozwijanej kampanii ukierunkowanej na osoby posiadające wysokie uprawnienia i dostęp do cennych zasobów.
Najważniejszy wniosek dla organizacji jest prosty: repozytorium kodu nie może być uznawane za bezpieczne tylko dlatego, że wygląda jak zadanie techniczne lub projekt open source. Środowisko pracy dewelopera powinno być chronione z taką samą rygorystycznością jak system administracyjny i każdy inny obszar dostępu uprzywilejowanego.
Źródła
- The Hacker News — North Korean Hackers Abuse VS Code Auto-Run Tasks to Deploy StoatWaffle Malware — https://thehackernews.com/2026/03/north-korean-hackers-abuse-vs-code-auto.html
- NTT Security — analiza kampanii StoatWaffle i nadużyć VS Code Tasks — https://jp.security.ntt/en/blog/stoatwaffle-abuses-vscode-tasks/
- Microsoft Visual Studio Code Release Notes 1.109 — https://code.visualstudio.com/updates/v1_109
- Microsoft Threat Intelligence — analizy kampanii Contagious Interview — https://www.microsoft.com/en-us/security/blog/
- Abstract Security — omówienie zabezpieczeń dla automatycznych zadań VS Code — https://www.abstract.security/blog