GlassWorm wraca: atak na macOS przez zainfekowane rozszerzenia z Open VSX

securitybeztabu.pl 2 dni temu

Wprowadzenie do problemu / definicja luki

Najnowsza fala kampanii GlassWorm pokazuje, jak niebezpieczny potrafi być łańcuch dostaw w ekosystemie deweloperskim: atakujący nie muszą łamać zabezpieczeń stacji roboczej „od zera”, jeżeli potrafią wstrzyknąć złośliwy kod do popularnego rozszerzenia IDE i poczekać, aż ofiary zaktualizują je automatycznie.

W omawianym incydencie wykorzystano Open VSX (otwarty rejestr rozszerzeń kompatybilnych z VS Code). Napastnik przejął dostęp do zasobów wydawniczych legalnego autora i wypchnął „podmienione” wersje czterech znanych rozszerzeń – łącznie z ponad 22 tys. pobrań – z loaderem GlassWorm, który finalnie celuje w macOS i kradzież danych: hasła, sekrety deweloperskie oraz artefakty portfeli krypto.

W skrócie

  • Złośliwe aktualizacje dotknęły 4 rozszerzenia opublikowane przez autora oorzc (m.in. narzędzia do SSH/SFTP, i18n, mindmap, SCSS→CSS).
  • Mechanizm infekcji to staged loader: zaszyfrowany blob jest odszyfrowywany w czasie uruchomienia i wykonywany (m.in. eval).
  • Łańcuch sterowania (C2) oparto o „dead drop” w memo transakcji na Solanie, co utrudnia blokowanie statycznymi IOC.
  • Payload (Stage 2) jest macOS-only, kradnie m.in. dane przeglądarek, Keychain, Apple Notes, konfiguracje VPN, a także sekrety AWS/SSH; tworzy persystencję przez LaunchAgent.
  • Operatorzy Open VSX wycofali złośliwe wydania, zdeaktywowali tokeny wydawcy; jedno z rozszerzeń usunięto szerzej ze względu na wiele podejrzanych wersji.

Kontekst / historia / powiązania

GlassWorm jest kojarzony z falami nadużyć w marketplace’ach rozszerzeń (w tym Open VSX) co najmniej od jesieni 2025. Wcześniejsze epizody obejmowały m.in. nadużycia wynikające z wycieków tokenów publikacyjnych po stronie deweloperów (błędy operacyjne autorów), a nie z kompromitacji samej infrastruktury rejestru.

W najnowszym incydencie istotne jest to, iż atakujący nie stawiali wyłącznie na podszywanie się/typosquatting, tylko weszli „frontowymi drzwiami” – przez przejęte uprawnienia wydawnicze istniejącego konta z historią i adopcją, co zwiększa wiarygodność w oczach użytkownika.

Analiza techniczna / szczegóły luki

1) Wektor: przejęte konto wydawcy i złośliwe aktualizacje

Według ustaleń badaczy, 30 stycznia 2026 opublikowano „zatrute” wersje czterech rozszerzeń autora oorzc w Open VSX:

  • oorzc.ssh-tools (v0.5.1)
  • oorzc.i18n-tools-plus (v1.6.8)
  • oorzc.mind-map (v1.0.61)
  • oorzc.scss-to-css-compile (v1.3.4)

Z perspektywy obrony najważniejsze jest, iż to nie „nowy, podejrzany” publisher, tylko konto z realnymi pobraniami (sygnały adopcji).

2) Stage 0: loader w extension.js + odszyfrowanie i wykonanie

We wszystkich czterech paczkach .vsix osadzono niemal identyczny loader w pliku extension.js. Ten loader używa AES-256-CBC do odszyfrowania długiego heksowego bloba i natychmiast uruchamia wynik przez eval(). To klasyczny wzorzec „runtime-decryption”, który utrudnia proste skanowanie statyczne.

3) Stage 1: geofencing + dead drop na Solanie

Po odszyfrowaniu kolejny etap:

  • wyklucza systemy z rosyjskimi ustawieniami językowymi / strefami czasowymi (operacyjne OPSEC),
  • pobiera instrukcję „co dalej” z memo transakcji na Solanie (dead drop), dzięki czemu atakujący mogą rotować infrastrukturę bez ponownego publikowania rozszerzeń.

4) Stage 2: macOS infostealer + persystencja

Stage 2 jest jawnie ukierunkowany na darwin (macOS). Zgodnie z analizą:

  • tworzy katalog roboczy w /tmp, pakuje dane do archiwum ZIP i eksfiltruje je na zdalne endpointy (w analizowanej próbce: IP 45.32.150[.]251, ścieżki m.in. /p2p, /2p2).
  • kradnie artefakty przeglądarek (cookies, bazy logowań, dane formularzy), portfele krypto (desktop i rozszerzenia), macOS Keychain, Apple Notes, cookies Safari, a choćby konfiguracje FortiClient VPN.
  • poluje na sekrety deweloperskie (np. ~/.aws, ~/.ssh) oraz tokeny związane z workflow (np. artefakty uwierzytelnienia używane w ekosystemie npm/GitHub).
  • ustanawia persystencję przez LaunchAgent w ~/Library/LaunchAgents (np. plist w stylu com.user.nodestart.plist).

Praktyczne konsekwencje / ryzyko

To nie jest „tylko” kradzież danych lokalnych. W realnym środowisku deweloperskim kompromitacja stacji roboczej przez rozszerzenie może eskalować do:

  • przejęcia chmury (skradzione klucze / konfiguracje),
  • przejęcia repozytoriów i pipeline’ów CI/CD (tokeny, sekrety, automaty publikacji),
  • poisoningu zależności (publikowanie złośliwych paczek / releasów przez skradzione uprawnienia),
  • dalszych włamań lateralnych dzięki SSH i artefaktom konfiguracyjnym.

Dodatkowo, użycie Solany jako kanału konfiguracji ogranicza skuteczność prostych blokad domen/IP – obrona przesuwa się w stronę telemetrii behawioralnej i szybkiej reakcji.

Rekomendacje operacyjne / co zrobić teraz

Jeśli w Twojej organizacji używa się Open VSX lub edytorów pobierających stamtąd rozszerzenia, potraktuj ten przypadek jak incydent ekspozycji poświadczeń.

A) Szybka weryfikacja (triage)

  1. Sprawdź, czy instalowano któreś z rozszerzeń i wersji wskazanych w IOC (patrz wyżej).
  2. Na macOS zweryfikuj persystencję:
  • ~/Library/LaunchAgents pod kątem nieznanych plist (np. podobnych do com.user.nodestart.plist).
  1. Szukaj artefaktów stagingu/eksfiltracji (np. nietypowe archiwa w /tmp i ślady wywołań curl do zewnętrznych IP).

B) Ograniczenie skutków

  • Usuń rozszerzenie i jego artefakty z dysku (nie tylko „disable” w IDE).
  • Rotuj sekrety w kolejności „największy blast radius”:
    1. tokeny GitHub / dostępy do repo + audit zdarzeń,
    2. tokeny npm / registry,
    3. klucze chmurowe (np. AWS),
    4. klucze SSH (zwłaszcza z dostępem do prod/CI).

C) Utwardzenie na przyszłość (supply chain dla rozszerzeń)

  • Wprowadź allowlistę rozszerzeń (publisher + identyfikator + dozwolone wersje) i ogranicz auto-update tam, gdzie to możliwe.
  • Monitoruj behawior: wykonywanie curl/pobieranie payloadów w kontekście procesu IDE, tworzenie LaunchAgents, masowy odczyt plików z profili przeglądarek, Keychain/Notes itp. (to lepiej łapie staged loader niż IOC z domen).
  • Edukuj autorów i zespoły: tokeny publikacyjne nie mogą lądować w publicznych repo; Open VSX wskazywał już wcześniej, iż wycieki tokenów były przyczyną nadużyć.

Różnice / porównania z innymi przypadkami

Co się zmieniło względem wcześniejszych fal GlassWorm?

  1. Od „ukrytych znaków” do loaderów szyfrowanych w runtime
    Wątek „niewidzialnych” znaków Unicode był charakterystyczny dla wcześniejszych odsłon, ale w tej fali widać większy nacisk na staging, szyfrowanie i dynamiczne pobieranie kolejnych etapów.
  2. Od masowego „podszywania się” do przejęć kont z historią
    Zatrute aktualizacje zostały opublikowane w ramach istniejącego konta, co z perspektywy użytkownika wygląda bardziej wiarygodnie niż świeży publisher z jedną podejrzaną paczką.
  3. Zmienność infrastruktury przez łańcuch bloków
    Dead drop w memo transakcji (Solana) zmniejsza wartość klasycznych IOC i premiuje szybkie wykrycie anomalii na endpointach.

Podsumowanie / najważniejsze wnioski

  • To kolejny dowód, iż IDE i ich rozszerzenia stały się atrakcyjnym wektorem do kradzieży sekretów deweloperskich i krypto.
  • Incydent łączy trzy trudne dla obrony elementy: kompromitację konta wydawcy, runtime-decryption oraz dynamiczny C2 przez Solanę.
  • Jeżeli Twoi developerzy instalowali wskazane wersje rozszerzeń, potraktuj to jak pełną ekspozycję poświadczeń: usuwanie artefaktów + rotacja sekretów + przegląd aktywności w repo/chmurze/CI.
  • Długoterminowo warto wdrożyć polityki supply chain także dla rozszerzeń (allowlista, kontrola wersji, monitoring zachowań na endpointach).

Źródła / bibliografia

  1. BleepingComputer – artykuł autorstwa Bill Toulas o nowej fali GlassWorm na macOS przez Open VSX. (BleepingComputer)
  2. Socket – analiza techniczna łańcucha infekcji, IOC, persystencji i eksfiltracji. (Socket)
  3. SecurityWeek – omówienie kampanii, zakresu kradzieży i mechanizmu C2 przez mema transakcji. (SecurityWeek)
  4. The Hacker News – zestawienie incydentu i lista zainfekowanych rozszerzeń/wariantów. (The Hacker News)
  5. Blog Mikaël Barbero – tło dot. tokenów i reakcji operatora Open VSX w 2025. (mikael.barbero.tech)
Idź do oryginalnego materiału