NOWOŚĆ! Szkolenie AI w pracy admina
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
NOWOŚĆ! Szkolenie AI w pracy admina
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Badacze bezpieczeństwa z firmy SafeDep poinformowali o wykryciu masowego ataku na łańcuch dostaw w ekosystemie npm. Złośliwy kod został wykryty w keyv@6.0.0 przeznaczonym do zarządzania pamięcią podręczną w środowisku Node.js oraz powiązanych z nim pakietów z rodziny cacheable, flat-cache oraz cache-manager. Charakter infekcji wskazuje na samoreplikującego się robaka, zdolnego do kradzieży danych uwierzytelniających, tokenów oraz kluczy prywatnych. Głównym celem atakujących były konta deweloperskie, wykorzystywane do automatycznego rozprzestrzeniania malware na kolejne paczki.
TLDR:


Druga ścieżka skierowana była przede wszystkim do deweloperów i aktywowała się podczas otwarcia pobranego repozytorium w środowisku programistycznym. W tym scenariuszu cyberprzestępcy umieścili złośliwe pliki konfiguracyjne w katalogach .claude oraz .vscode.
W przypadku narzędzia Claude Code, plik .claude/settings.json zawierał hook SessionStart uruchamiający skrypt .vscode/setup.mjs. Z kolei dla Visual Studio Code plik .vscode/tasks.json definiował zadanie Environment Setup z parametrem runOn: folderOpen, które po otwarciu katalogu wywoływało .claude/setup.mjs.
Takie krzyżowe wywoływanie skryptów między katalogami edytorów tworzyło spójną sieć powiązań wewnątrz sklonowanego projektu, a jego głównym celem było utrudnienie procesu analizy. Warto dodać, że ścieżka ta nie wykonywała się bezwarunkowo. Aby atak miał szanse powodzenia, deweloper musiał wyrazić zgodę (Workspace Trust) na uruchamianie skryptów dostarczonych wraz z kodem źródłowym.


Warto również wspomnieć o persystencji na zainfekowanych maszynach. Atakujący zaimplementowali mechanizm ciągłego monitorowania skradzionych poświadczeń, który instaluje się jako usługa systemd (Linux) lub LaunchAgent (macOS). W przypadku systemu Windows nie zaobserwowano dedykowanych mechanizmów persystencji (takich jak wpisy w rejestrze czy też harmonogramie zadań). Skrypt został przygotowany w środowisku Bash, więc jego wykonanie jest możliwe głównie za pośrednictwem WSL.
W przypadku systemów Linux skrypt monitorujący uruchamia się z opcją lingering, która pozwala procesom użytkownika działać w tle nawet po jego wylogowaniu. Usługa co 60 sekund wysyła zapytanie do API GitHuba ([api.github.com/user](https://api.github.com/user)), korzystając z przejętego tokena. Jeżeli wykryje, że token został unieważniony (serwer zwróci kod błędu HTTP z rodziny 40X), natychmiast uruchamiany jest handler. We wcześniejszych tego typu atakach unieważnienie tokena skutkowało aktywacją mechanizmu odwetowego i usunięciem katalogu domowego użytkownika (rm -rf ~/*). Biorąc pod uwagę fakt, że kod handlera nie został jak dotąd jednoznacznie określony, należy założyć najgorszy scenariusz.
Chociaż na podstawie zaobserwowanych taktyk, technik i procedur (TTPs) trudno jednoznacznie powiązać kampanię z konkretną grupą cyberprzestępczą, to istnieją poszlaki wskazujące na użycie narzędzi z rodziny złośliwego oprogramowania Shai-Hulud. Na dowód powyższego, tymczasowe punkty odbioru danych (dead-drop C2) były tworzone w publicznych repozytoriach GitHuba z opisem Shai-Hulud: Here We Go Again oraz katalogiem results.

Przedstawiona kampania pokazuje, że współczesne ataki na łańcuchy dostaw nie polegają jedynie na jednorazowej podmianie pojedynczego pakietu. Użycie samoreplikującego się robaka wykradającego poświadczenia oraz publikującego zainfekowane wersje pakietów sprawia, że skala operacji rośnie w zastraszającym tempie.
Najsmutniejsze w tym wszystkim jest to, że usunięcie zainfekowanego pakietu wcale nie chroni przed skutkami ataku. Wykradzione tokeny i klucze API pozwalają atakującemu na dalsze działania w infrastrukturze, dlatego jedyną skuteczną reakcją jest sprawdzenie czy w systemie nie został uruchomiony skrypt monitorujący ważność tokenów, a następnie unieważnienie wszystkich sekretów.
Źródło: safedep.io
~_secmike