Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
We wrześniu 2025 pisaliśmy o kampanii Shai-Hulud, w ramach której infekowano paczki npm. Wszystko wskazuje na to, że kampania nie tylko wciąż trwa, ale też doczekała się wersji dla PyPI – umieszczającej złośliwy kod w pakietach Python.
Badacze bezpieczeństwa z OX Security odkryli złośliwe aktualizacje pakietów Lightning (PyPI) oraz intercom-client (npm), które kradną poświadczenia i rozprzestrzeniają się dalej w kolejnych paczkach.
Zainfekowane są następujące wersje pakietów:
| Nazwa | Zainfekowane wersje | Oryginalna wersja |
| lightning | 2.6.2, 2.6.3 | 2.6.1 i poprzednie |
| intercom-client | 7.0.4 | 7.0.3 i poprzednie |
Pakiet lightning to biblioteka dla PyTorch (framework do uczenia maszynowego) do trenowania modeli. Został zainfekowany nowym wariantem Shai-Hulud, który z poziomu kodu Python uruchamia payload JavaScript, który działa podobnie do poprzednich wariantów kampanii. Paczka jest pobierana ponad 8,3 mln razy w miesiącu i 2,1 mln tygodniowo.
Z kolei intercom-client to SDK dla Node.js do integracji z API Intercom (platforma obsługująca komunikację z klientami – widgety czatu na stronach, tickety itp.) – ta paczka notuje ponad 1,3 mln pobrań miesięcznie i 300 tys. tygodniowo.
Złośliwy payload w tego typu kampaniach dla paczek npm zazwyczaj uruchamiany był przez skrypty preinstall/postinstall, jednak paczki w Pythonie działają nieco inaczej – malware uruchamia się więc przez plik __init__.py. Finalny payload jest jednak napisany w JavaScript (router_runtime.js).
Szuka on poświadczeń zapisanych na urządzeniu ofiary – głównie tokenów npm i GitHub. Endpoint eksfiltracji danych odczytywany jest z zaciemnionych wartości. Badaczom udało się je zdeobfuskować – ustalili, że dane są wysyłane do: https[:]//zero[.]masscan[.]cloud:443/v1/telemetry

Malware wykorzystuje pozyskane z urządzenia ofiary tokeny npm do pobrania danych konta z API oraz sprawdzenia, do jakich paczek dostęp ma jego właściciel. Pakiety, w których dany token umożliwia publikowanie nowych wersji są modyfikowane, a malware ponownie publikuje je w npm, rozpowszechniając złośliwy kod w kolejnych paczkach.

Podobnie działa z tokenami GitHub. Szuka Personal Access Tokens (zaczynających się od ghp_/gho_) i wykonuje żądanie do API w celu uzyskania danych użytkownika. Wyniki są także przesyłane do endpointu atakujących.

Malware publikowało także wykradzione dane w repozytoriach GitHub. Zawierają one fragment “A Mini Shai-Hulud has Appeared” w opisie repozytorium – w kodzie jest on zaciemniony:

Badacze zidentyfikowali ponad 1 800 repozytoriów utworzonych w ten sposób:

Jeśli instalowaliście/aktualizowaliście wymienione paczki do zainfekowanych wersji, polecamy pilnie zresetować wszystkie istotne poświadczenia, które mieliście na urządzeniu (tokeny GitHub, npm, ale też usługi chmurowe np. AWS, GCP). Oczywiście należy usunąć zainfekowane paczki, warto także wyczyścić cache menadżera pakietów.
Programistom polecamy – w miarę możliwości – ograniczać wszelkie tokeny / klucze API do konkretnych adresów IP oraz limitować ich uprawnienia/dostępy. Paczki w npm można publikować przez trusted publishing. Bardziej wrażliwe poświadczenia (jak np. klucze SSH) warto obsługiwać sprzętowo, za pomocą np. klucza FIDO. Dobrą praktyką będzie też skorzystanie z tzw. canary tokens do wczesnego wykrycia złośliwej aktywności.
Paczki:
Domena eksfiltracji: zero[.]masscan[.]cloud
Źródło: ox.security
~Tymoteusz Jóźwiak
Malware shai-hulud sie opublikowalo jako open source na gicie, ale git wzion i usunal i nie ma skad wziac paczki (o, tu bylo: https://github.com/%5Bcensored%5D). No prawie nie ma, nie?
Mozna se wziac stad…
https://[censored]/tmp
Zależności pytorch ustrzelili, ładnie. Chociaż jest ich tak dużo, że szansa wcale nie była mała.
Dobrze, że to Python i wygenerowanie używanych wersji w “pip freeze” to moment. Syft też je pokaże, zarówno w venwach i kontenerowych obrazach.