Do 42 pakietów NPM TanStack zintegrowano samorozprzestrzeniającego się robaka

W wyniku kompromitacji procesu tworzenia wersji opartego na GitHub Actions w projekcie TanStack, atakujący opublikowali w repozytorium NPM 84 złośliwe wersje, obejmujące 42 pakiety NPM ze stosu TanStack. Niektóre z kompromitowanych pakietów miały ponad 10 milionów pobrań tygodniowo.

Dostęp do publikacji wersji uzyskano z powodu błędnej konfiguracji pull_request_target „Pwn Request” w GitHub Actions (należycie skonfigurowana maska spowodowała uruchomienie pull_request_target dla pull requestów w zewnętrznych forach), skażenia pamięci podręcznej GitHub Actions przez fork oraz możliwości pobrania tokena OIDC z pamięci uruchomionego procesu runnera (Runner.Worker) poprzez odczytanie zawartości /proc//mem.

Pakiety NPM ze złośliwymi zmianami zostały opublikowane 11 maja w godzinach 22:20–22:26 (MSK), zauważone po 20 minutach i zablokowane po półtorej godziny. Dla każdego z dotkniętych pakietów NPM wydano po dwie złośliwe wersje, w które zintegrowano kod aktywujący robaka mini-shai-hulud, który przeszukiwał tokeny i dane logowania w aktualnym środowisku. W przypadku wykrycia tokena połączenia z katalogiem NPM, robak automatycznie publikował nowe złośliwe wersje dla pakietów opracowywanych w danym środowisku, dotykając drzewa zależności. W ten sposób zarażono ponad 400 pakietów NPM, które wykorzystywały pakiety TanStack wśród zależności.

Robak znajdował się w pliku router_init.js i aktywował się podczas ręcznej instalacji zarażonego pakietu przez programistę lub automatycznie w środowisku ciągłej integracji za pomocą komend „npm install”, „pnpm install” lub „yarn install”. Po uruchomieniu robak przeszukiwał system w poszukiwaniu tokenów do NPM (~/.npmrc), AWS, GCP, Azure, HashiCorp i Kubernetes K8s, a także kluczy SSH. Znalezione dane były wysyłane do przestępców przez zdecentralizowany komunikator P2P getsession.org.

W robaku przewidziano przeprowadzanie destrukcyjnych działań w przypadku unieważnienia przechwyconego tokena NPM — w systemie ustawiało się okresowe uruchamianie skryptu ~/.local/bin/gh-token-monitor.sh, który co 60 sekund sprawdzał aktywność tokena poprzez zapytania do api.github.com/user i w przypadku unieważnienia tokena wykonywał polecenie „rm -rf ~/”.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster