Przejdź do treści
Cyberataki

Nowa fala ataku Shai-Hulud: 639 złośliwych pakietów npm w godzinę. Co powinni zrobić programiści?

W maju 2026 roku opublikowano ponad 600 złośliwych wersji pakietów npm w ramach kampanii Shai-Hulud. Atakujący kradną dane uwierzytelniające z komputerów programistów i środowisk CI/CD. Artykuł wyjaśnia mechanizm zagrożenia i podaje konkretne kroki obronne.

3 min read
An abstract digital landscape showing a chain of connected cubes, with one cube glowing red and emitting a dark, branching web that spreads to adjacent cubes. In the background, a faint silhouette of a figure stands before a wall of code, while a translucent shield with a lock symbol hovers above the figure.

19 maja 2026 roku w ciągu zaledwie godziny opublikowano w repozytorium npm 639 złośliwych wersji pakietów. To najnowsza odsłona kampanii Shai-Hulud, która od września 2025 roku systematycznie atakuje łańcuch dostaw oprogramowania. Celem są przede wszystkim komputery programistów i środowiska CI/CD, z których malware kradnie tokeny, hasła i klucze dostępu.

Atak nie ominął popularnych bibliotek, takich jak echarts-for-react, @antv/g2, timeago.js czy canvas-nest.js. Część z nich przez lata nie doczekała się aktualizacji, co ułatwiło przejęcie kont wydawców. Według firmy Socket, która monitoruje zagrożenia w ekosystemie open source, atakujący wykorzystali skradzione tokeny publikacyjne, by wstrzyknąć do pakietów zaszyfrowany kod kradnący dane.

Jak działa Shai-Hulud?

Mechanizm ataku jest wieloetapowy i precyzyjnie zaprojektowany. Po pierwsze, przejmowane jest konto wydawcy w npm – w tym przypadku chodzi o konto atool, które publikuje pakiety z przestrzeni nazw @antv. Następnie do legalnych pakietów dodawany jest silnie zaciemniony plik index.js, który po uruchomieniu na komputerze programisty lub w środowisku CI/CD próbuje wykraść dane uwierzytelniające do Gita, npm, chmury, Kubernetes, Vault, Docker, baz danych i SSH.

Badacze z Endor Labs zwracają uwagę, że skradzione dane są serializowane, kompresowane Gzip, szyfrowane algorytmem AES-256-GCM i dodatkowo owijane RSA-OAEP. To czyni ruch sieciowy praktycznie niemożliwym do przechwycenia przez tradycyjne systemy wykrywania. Głównym kanałem eksfiltracji jest sieć P2P Session, a konkretnie endpoint filev2.getsession[.]org/file/. „Na poziomie sieci jest to ruch szyfrowany end-to-end na porcie TCP/443, nie do odróżnienia od legalnego ruchu aplikacji Session” – wyjaśniają badacze Endor Labs.

Nowa jakość: fałszywe podpisy i samorozprzestrzenianie

W tej wersji Shai-Hulud pojawiły się dwie szczególnie niebezpieczne funkcje. Po pierwsze, malware potrafi generować ważne poświadczenia Sigstore, nadużywając tokenów OIDC ze skompromitowanych środowisk CI/CD. Oznacza to, że złośliwe pakiety mogą przechodzić standardowe weryfikacje autentyczności, wyglądając jak legalnie podpisane.

Po drugie, atak ma zdolność samorozprzestrzeniania. Malware waliduje skradzione tokeny npm, pobiera listę pakietów należących do ofiary, ściąga ich archiwa, wstrzykuje złośliwy kod i publikuje zainfekowane wersje z podbitym numerem. W ten sposób jeden skompromitowany komputer programisty może doprowadzić do skażenia setek pakietów.

Firma Aikido Security dodaje, że w tej kampanii pojawiła się też trwałość przez backdoory w konfiguracjach VS Code i Claude Code. Badacze ostrzegają, że „atakujący myśli o tym, co się stanie po wstępnym wyczyszczeniu kompromitacji”.

Co powinni zrobić programiści i administratorzy?

Jeśli w swoim projekcie używasz któregokolwiek z wymienionych pakietów, natychmiast sprawdź, czy nie pobrałeś wersji opublikowanej po 18 maja 2026 roku. Najbezpieczniejszym krokiem jest przywrócenie wersji sprzed tej daty lub usunięcie pakietu i zastąpienie go alternatywą.

Następnie – i to jest kluczowe – zrewiduj i zresetuj wszystkie dane uwierzytelniające, które mogły być dostępne na komputerze programisty lub w środowisku CI/CD. Chodzi o tokeny GitHub, klucze chmurowe, hasła do baz danych, certyfikaty SSH. Każdy z tych elementów mógł zostać skradziony.

Warto też przejrzeć repozytoria GitHub pod kątem nieznanych repozytoriów opublikowanych z twojego konta. Atakujący często tworzą je automatycznie, by przechowywać skradzione dane. Według raportu Aikido Security istnieje już ponad 2700 takich fałszywych repozytoriów.

Dla zespołów utrzymujących pakiety w npm kluczowe jest włączenie uwierzytelniania dwuskładnikowego i korzystanie z OIDC trusted publishing, które utrudnia przejęcie konta nawet w przypadku wycieku tokena. Pakiety, które od dawna nie były aktualizowane, powinny zostać oznaczone jako nieutrzymywane lub usunięte.

Kampania Shai-Hulud pokazuje, że ataki na łańcuch dostaw oprogramowania stają się coraz bardziej wyrafinowane. Nie wystarczy już ufać podpisom cyfrowym ani popularności pakietu. Każda zależność wymaga świadomego zarządzania ryzykiem.

Redakcja sekuret.pl

Redakcja sekuret.pl

AUTHOR