GlassWorm: nowy, natywny dropper w Zig zakaża wszystkie edytory VS Code
Nowa faza kampanii GlassWorm wykorzystuje fałszywe rozszerzenie WakaTime w Open VSX do wdrożenia natywnego binarku w języku Zig. Kod ten przekracza granice JS-sandboxa, skanuje system i instaluje szkodliwy kod we wszystkich IDE kompatybilnych z VS Code — od VS Code po Cursor i Positron.
Badacze z Aikido Security odkryli rozszerzenie code-wakatime-activity-tracker, identyczne z legalnym WakaTime, ale z modyfikowaną funkcją activate(). Ta funkcja ładuje plik binarny win.node (Windows) lub mac.node (macOS), który uruchamia pełny cykl infekcji.
Mechanizm uruchomienia
W funkcji activate() następuje require natywnego dodatku:
const bw = process.platform === "win32" ? "./bin/win.node" : "./bin/mac.node";
const { install } = require(bw);
install();
Binarki to native addons Node.js (DLL PE32+ na Windows, Mach-O na macOS dla x86_64/arm64), skompilowane w języku Zig. Inżynierują się w środowisko Node z uprawnieniami systemowymi, obejmując JS-sandbox. Symbole debugowe w wersji macOS wskazują na projekt /Users/davidioasd/Downloads/vsx_installer_zig.
Następnie binarka przegląda ścieżki do IDE:
- Windows:
%LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code.cmd %LOCALAPPDATA%\Programs\Cursor\resources\app\bin\cursor.cmd- Podobnie dla VS Code Insiders, Windsurf, VSCodium, Positron.
Na macOS — /Applications/*.app dla tych samych edytorów. Jeśli na maszynie znajduje się kilka IDE, wszystkie są skompromitowane.
Druga faza: podmiana autoimportu
Binarka pobiera plik .vsix floktokbok.autoimport z GitHub Releases (klon steoates.autoimport z ponad 5 milionami instalacji). Instalacja przez CLI każdej IDE:
cmd.exe /d /e:ON /v:OFF /c "<ide_path> --install-extension <vsix_path>"
Po instalacji cleanupVsix() usuwa ślady. Drugi dropper pomija lokalizacje rosyjskie, używa blockchaina Solana do C2 (adres z transakcji portfela). Exfiltruje dane poufne, instaluje RAT oraz Chrome-infostealer do zbierania ciasteczek i logowania klawiszy.
Zalety i wady ataku:
- Zalety: kod natywny nie jest widoczny w DevTools; C2 na Solanie zapewnia odporność na blokady domen.
- Wady: ciągi binarne są statyczne (aż do ponownej kompilacji); ograniczone do Windows i macOS.
Ewolucja GlassWorm
Kampania trwa od marca 2025: od npm z payloadem Unicode po GitHub i Marketplace VS Code. Kluczowy przełom — dodatki w Zig zamiast JS, co wymaga analizy na poziomie systemu operacyjnego. Zainfekowanych zostało setki projektów.
Indykatory kompromitacji
Rozszerzenia:
specstudio.code-wakatime-activity-trackerfloktokbok.autoimport
SHA-256 binarek:
- win.node:
2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02 - mac.node:
112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44
ciągi tekstowe: vsx_installer_zig, davidioasd.
Co ważne
- Natywne dodatki w Zig obchodzą analizę JS; monitoruj pliki
.node/.dllw rozszerzeniach. - Infekcja łańcuchowa: jedno rozszerzenie kompromituje wszystkie forki VS Code na maszynie.
- C2 przez Solana: blokada domen bezcelowa — potrzebny monitoring blockchaina.
- Pominięcie rosyjskiej lokalizacji — sygnał celowej akcji; obracaj klucze przy wykryciu.
- Profilaktyka: sprawdzaj autora i liczbę instalacji; skanuj foldery EDR z rozszerzeniami.
Działania czyszczenia
- Sprawdź rozszerzenia we wszystkich IDE (VS Code, Cursor itp.).
- Usuń podejrzane; obróć klucze SSH, tokeny (npm, GitHub PAT, AWS).
- Oczyść Chrome z nieznanych rozszerzeń, wyloguj się wszędzie.
- Wprowadź białą listę rozszerzeń i EDR dla dodatków natywnych.
— Editorial Team
Brak komentarzy.