Szklany robak złośliwy

Nowa fala kampanii malware GlassWorm aktywnie atakuje łańcuchy dostaw oprogramowania, wykorzystując skradzione tokeny GitHub do wstrzykiwania złośliwego kodu do setek repozytoriów. Operacja ta koncentruje się głównie na projektach opartych na Pythonie, w tym aplikacjach Django, kodzie badawczym uczenia maszynowego, panelach sterowania Streamlit i pakietach PyPI.

Wektor ataku jest pozornie prosty, ale niezwykle skuteczny: zamaskowane złośliwe oprogramowanie jest dołączane do często uruchamianych plików, takich jak setup.py, main.py i app.py. Każdy programista, który instaluje zależności za pomocą pip install lub wykonuje sklonowany kod z zainfekowanego repozytorium, nieświadomie aktywuje złośliwy ładunek.

Ciche przejęcia repozytoriów: technika ForceMemo

Ta ewolucja kampanii, obecnie znana jako ForceMemo, wprowadza ukrytą metodę włamywania się do repozytoriów. Aktorzy uzyskują dostęp do kont programistów i manipulują repozytoriami, nie pozostawiając po sobie konwencjonalnych śladów.

Poprzez rebazowanie prawidłowych commitów ze złośliwym kodem i wymuszone przenoszenie ich do gałęzi domyślnej, atakujący zachowują oryginalne metadane commitów, w tym komunikat, autora i znacznik czasu, skutecznie maskując włamanie. Takie podejście eliminuje widoczne wskaźniki, takie jak żądania ściągnięcia (pull request) czy podejrzane historie commitów, co znacznie utrudnia wykrycie.

Łańcuch realizacji ataku: od kradzieży danych uwierzytelniających do dostarczenia ładunku

Kampania ForceMemo opiera się na ustrukturyzowanym i wieloetapowym procesie włamań:

  • Środowiska programistyczne są początkowo zagrożone za pomocą złośliwych rozszerzeń Visual Studio Code i Cursor zawierających komponenty GlassWorm, których celem jest zbieranie poufnych danych uwierzytelniających, w tym tokenów GitHub.
  • Następnie skradzione dane uwierzytelniające są wykorzystywane do wstrzykiwania zakodowanych w formacie Base64 ukrytych ładunków do plików Pythona we wszystkich repozytoriach powiązanych z naruszonym kontem.
  • Wbudowane złośliwe oprogramowanie przeprowadza kontrole środowiska, unikając uruchomienia w systemach skonfigurowanych z rosyjską lokalizacją. Następnie wysyła zapytanie do portfela blockchain Solana, aby dynamicznie pobrać adres URL dostarczający dane.
  • Pobierane są dodatkowe ładunki, w tym zaszyfrowany kod JavaScript przeznaczony do kradzieży kryptowalut i eksfiltracji danych.

Dowodzenie i kontrola oparte na technologii blockchain: odporna infrastruktura

Cechą charakterystyczną tej kampanii jest jej wykorzystanie blockchaina Solana jako mechanizmu dowodzenia i kontroli (C2). Zamiast tradycyjnych serwerów, atakujący przechowują adresy URL danych w polach notatek transakcyjnych powiązanych z konkretnymi adresami portfeli.

Analiza ujawnia, że aktywność związana z głównym portfelem rozpoczęła się już 27 listopada 2025 roku, na miesiące przed zaobserwowaniem naruszeń repozytoriów. Portfel przetworzył dziesiątki transakcji, a lokalizacje danych były aktualizowane często, czasami kilka razy dziennie. To zdecentralizowane podejście zwiększa odporność i komplikuje działania mające na celu eliminację zagrożeń.

Rozszerzanie powierzchni ataku: npm i infekcje międzyekosystemowe

Kampania rozszerzyła się poza ekosystemy Pythona, obejmując łańcuchy dostaw JavaScript. Dwa pakiety npm React Native: react-native-international-phone-number (wersja 0.11.8) i react-native-country-select (wersja 0.3.91), zostały tymczasowo naruszone i rozprzestrzenione z osadzonym złośliwym oprogramowaniem.

Te złośliwe wersje wprowadziły haki preinstalacyjne, wykonujące zaciemniony kod JavaScript, który inicjuje podobny łańcuch infekcji. Szkodliwe oprogramowanie ponownie omija rosyjskie systemy, pobiera instrukcje dotyczące ładunku za pośrednictwem portfela Solana i wdraża zagrożenia specyficzne dla danej platformy.

Wykonywanie kodu odbywa się w całości w pamięci, z wykorzystaniem technik środowiska wykonawczego, takich jak eval() czy sandboxing Node.js, co minimalizuje ilość artefaktów kryminalistycznych. Dodatkowo, mechanizm trwałości zapobiega ponownej infekcji w ciągu 48 godzin, przechowując lokalnie znacznik czasu.

Zaawansowane taktyki unikania i dystrybucji

Najnowsze wersje GlassWorma wykazują coraz większe wyrafinowanie w dostarczaniu i ukrywaniu. Wykorzystując mechanizmy extensionPack i extensionDependencies, atakujący dystrybuują złośliwe ładunki tranzytowo poprzez zaufane ekosystemy rozszerzeń.

Wcześniejsze kampanie powiązane z tym samym zagrożeniem przejęły ponad 151 repozytoriów GitHub, wykorzystując niewidoczne znaki Unicode do ukrywania złośliwego kodu. Pomimo zróżnicowanych strategii zaciemniania i dystrybucji, wszystkie kampanie konsekwentnie opierają się na tej samej infrastrukturze opartej na Solanie, co potwierdza ujednoliconą strukturę operacyjną.

Złośliwe rozszerzenia IDE: ataki na środowiska programistyczne

Kampania zinfiltrowała również narzędzia programistyczne za pomocą złośliwego rozszerzenia zidentyfikowanego jako reditorsupporter.r-vscode-2.8.8-universal, atakującego środowisko programistyczne Windsurf. Pod przykrywką wtyczki do obsługi języka R, wdraża ono program wykradający informacje oparty na Node.js.

Po zainstalowaniu rozszerzenie pobiera zaszyfrowane dane z transakcji blockchain, uruchamia je w pamięci i wdraża skompilowane komponenty w celu wyodrębnienia poufnych danych z przeglądarek opartych na Chromium. Trwałość jest osiągana poprzez zaplanowane zadania i modyfikacje rejestru systemu Windows, co gwarantuje wykonanie po uruchomieniu systemu.

Szkodliwe oprogramowanie atakuje głównie środowiska programistyczne, wykluczając przy tym systemy rosyjskie. Jest to odzwierciedlenie zachowań obserwowanych w przypadku innych wariantów GlassWorm.

Wskaźniki skali i wpływu

Analiza bezpieczeństwa wskazuje, że kampania naruszyła znaczną część ekosystemu open source, wpływając na ponad 433 projekty na wielu platformach. Należą do nich repozytoria GitHub (Python i JavaScript), rozszerzenia VS Code oraz biblioteki npm.

Wszystkie ścieżki infekcji ostatecznie prowadzą do wdrożenia programu kradnącego informacje opartego na języku JavaScript, co dowodzi, że spójnym celem końcowym jest zbieranie danych uwierzytelniających i ich eksfiltracja.

  • Ponad 433 potwierdzonych zagrożonych projektów i pakietów
  • Wiele wektorów dostarczania, w tym rozszerzenia GitHub, npm i IDE
  • Konsekwentne wykorzystanie infrastruktury blockchain Solana do dostarczania ładunków
  • Powtarzające się wykluczanie systemów rosyjskich we wszystkich wariantach

Ocena strategiczna: Nowa era ataków na łańcuchy dostaw

Kampania ForceMemo oznacza znaczący wzrost zagrożeń dla łańcucha dostaw oprogramowania. Połączenie ukrytej manipulacji historią Git, infrastruktury C2 opartej na blockchainie i wieloplatformowych wektorów infekcji świadczy o wysokim poziomie dojrzałości operacyjnej.

Ponowne wykorzystanie infrastruktury wraz z ewoluującymi mechanizmami dostarczania wskazuje na adaptacyjnego przeciwnika, zdolnego do skalowania ataków, zachowując jednocześnie uporczywość i unikanie. To przejście od izolowanych zagrożeń do skoordynowanych, wieloekosystemowych włamań podkreśla rosnące ryzyko, z jakim borykają się współczesne środowiska programistyczne i społeczności open source.

Popularne

Najczęściej oglądane

Ładowanie...