Przejdź do treści
Cyberataki

Nowa fala ataków Shai-Hulud infekuje setki pakietów NPM i PyPI. Co to oznacza dla programistów?

Grupa TeamPCP przeprowadziła skoordynowane ataki na łańcuch dostaw, infekując ponad 100 pakietów w ekosystemach NPM i PyPI. Złośliwe oprogramowanie kradnie dane uwierzytelniające i samo się rozprzestrzenia. Artykuł wyjaśnia mechanizm ataku i podaje praktyczne kroki obronne.

4 min read
An abstract digital ecosystem shaped like a branching tree, with one branch glowing in a sickly green color spreading a web of fine threads toward other nodes, while a translucent shield with a padlock icon hovers partially over the network. No text or readable labels.

W ostatnich dniach czerwca 2026 roku doszło do eskalacji ataków na łańcuch dostaw oprogramowania z wykorzystaniem kolejnych wariantów samoreplikującego się robaka Shai-Hulud. Grupa stojąca za tymi incydentami, określana jako TeamPCP, przeprowadziła szeroko zakrojone operacje wymierzone w ekosystemy NPM (dla JavaScript) i PyPI (dla Pythona). Według doniesień badaczy bezpieczeństwa, w ciągu zaledwie kilku dni zidentyfikowano 471 złośliwych artefaktów, w tym setki zainfekowanych pakietów. Atak ten bezpośrednio zagraża firmom i programistom, którzy polegają na otwartych bibliotekach w swoich projektach. Zrozumienie mechanizmu i wdrożenie odpowiednich zabezpieczeń to klucz do ochrony kodu i danych.

Jak działają nowe warianty Shai-Hulud?

Ataki opisane przez badaczy z SecurityWeek są kontynuacją kampanii, które rozpoczęły się we wrześniu 2025 roku. Od połowy maja 2026 roku, po ujawnieniu przez grupy źródła kodu robaka, pojawiły się jego pierwsze klony. Nowa fala, która rozpoczęła się 1 czerwca, przyniosła dwa główne warianty: Miasma (uderzający w NPM) oraz Hades (uderzający w PyPI).

Wariant Miasma to wieloetapowe narzędzie do dostarczania ładunku, które wykonuje się podczas instalacji pakietu NPM. Jak wskazali analitycy, skanuje on lokalny system i podłączone usługi w chmurze w poszukiwaniu danych uwierzytelniających, kluczy API i tokenów. Zebrane dane są następnie wykorzystywane do samorozprzestrzeniania się – robak infekuje pakiety, do których ofiara ma dostęp. Wariant Hades, działający w ekosystemie PyPI, został określony jako „odgałęzienie Miasma”. Zawierał ten sam mechanizm kradzieży poświadczeń i samopowielania, a skradzione dane były publikowane w nowych repozytoriach GitHub.

Co istotne, atakujący stale ewoluują swoje metody. W drugiej fali Hadesa badacze z EndorLabs i Socket zaobserwowali unikanie wykrycia poprzez rozdzielenie ładunku i mechanizmu ładującego na dwa osobne elementy, co utrudnia tradycyjne metody detekcji.

Skala ataku i konkretne cele

Według danych z kilku firm bezpieczeństwa (Snyk, Sonatype, StepSecurity), do 5 czerwca zidentyfikowano co najmniej 57 pakietów NPM i ponad 300 złośliwych wersji pakietów związanych z wariantem Miasma. Atak dotknął m.in. zestaw SDK Vapi, a także ekosystemy ai-sdk-ollama, autotel, awaitly, executable-stories, node-env-resolver i wrangler-deploy.

W przypadku PyPI pierwsza fala Hadesa objęła 19 pakietów, a druga – co najmniej 29 kolejnych. Wśród ofiar znalazły się pakiety związane z bioinformatyką, uczeniem maszynowym na grafach oraz tematyką MCP (Model Context Protocol). Niepokojące jest, że ataki te nie ograniczają się tylko do mało znanych bibliotek. W maju grupa TeamPCP zaatakowała znane projekty, takie jak TanStack, co doprowadziło do dalszych kompromitacji. Przykładowo, jak opisał SecurityWeek, w wyniku ataku na TanStack doszło do włamania do repozytoriów GitHub firmy Grafana i kradzieży kodu źródłowego.

Reakcja GitHub i zmiany w npm

W odpowiedzi na narastające zagrożenie GitHub ogłosił istotne zmiany w menedżerze pakietów npm. Jak informuje BleepingComputer, nadchodząca wersja npm v12 (planowana na lipiec 2026) wprowadzi domyślne blokowanie najbardziej ryzykownych zachowań. Od teraz:

  • Skrypty preinstall, install i postinstall nie będą uruchamiane automatycznie, chyba że programista wyraźnie na to pozwoli.
  • Pakiety pobierane bezpośrednio z repozytoriów Git lub zdalnych URL-i (np. tarballi) nie będą rozwiązywane bez jawnej zgody.
  • Ograniczone zostanie również wykonywanie skryptów do budowy natywnych modułów (node-gyp).

GitHub rekomenduje, aby deweloperzy przygotowali się na te zmiany już teraz, instalując npm 11.16.0 lub nowszy, który wyświetla ostrzeżenia o wszystkich działaniach, które w wersji 12 przestaną działać. Pozwoli to z wyprzedzeniem zidentyfikować problematyczne zależności.

Jak chronić się przed atakami na łańcuch dostaw?

Ataki takie jak Shai-Hulud pokazują, że samo używanie popularnych menedżerów pakietów nie jest bezpieczne. Programiści i administratorzy powinni wdrożyć kilka podstawowych zasad:

  • Regularnie aktualizuj zależności i śledź ostrzeżenia o bezpieczeństwie publikowane przez dostawców (np. GitHub Advisory Database).
  • Używaj narzędzi do skanowania zależności w poszukiwaniu znanych luk i podejrzanego kodu (np. Snyk, Dependabot, Trivy).
  • Ogranicz uprawnienia tokenów CI/CD i stosuj zasady minimalnego dostępu. Atak na Grafana pokazał, że nieodwołany token GitHub pozwolił na dalsze szkody.
  • Weryfikuj nowe pakiety przed ich dodaniem do projektu – sprawdzaj autora, liczbę pobrań, historię zmian i ewentualne zgłoszenia bezpieczeństwa.
  • Po aktualizacji do npm v12 dokładnie przetestuj skrypty instalacyjne w izolowanym środowisku.

Obecna kampania pokazuje, że zagrożenie ze strony złośliwych pakietów w repozytoriach open source nie słabnie. Kluczowe znaczenie ma zarówno czujność deweloperów, jak i systemowe zmiany po stronie platform dystrybucyjnych. Zapowiedziane przez GitHub zmiany w npm są krokiem w dobrym kierunku, ale nie zwalniają one z odpowiedzialności za własne bezpieczeństwo.

Redakcja sekuret.pl

Redakcja sekuret.pl

AUTHOR