Atak na łańcuch dostaw npm: nowa fala zagrożeń dla programistów i firm
Grupa TeamPCP przeprowadziła serię ataków na rejestr npm, infekując popularne pakiety, w tym narzędzia SAP i Bitwarden. Ofiarami padają głównie programiści i środowiska CI/CD. Artykuł wyjaśnia mechanizm ataku i podaje praktyczne kroki obrony.
W kwietniu 2026 roku rejestr npm stał się areną zmasowanego ataku na łańcuch dostaw oprogramowania. Grupa przestępcza TeamPCP skompromitowała cztery pakiety należące do ekosystemu SAP oraz pakiet podszywający się pod narzędzie Bitwarden. Łączna liczba tygodniowych pobrań zaatakowanych pakietów SAP sięga około 570 tysięcy. Ofiarami są przede wszystkim programiści i środowiska CI/CD, które automatycznie instalują zależności. Najskuteczniejszą obroną jest natychmiastowe sprawdzenie używanych pakietów i rotacja tokenów dostępowych.
Mechanizm ataku: preinstall jako brama dla malware
Jak opisują badacze z Unit 42, skompromitowane pakiety SAP (@cap-js/sqlite, @cap-js/postgres, @cap-js/db-service oraz mbt) otrzymały dwa dodatkowe pliki: setup.mjs i execution.js. Do pliku package.json dodano wpis „preinstall”: „node setup.mjs”. Złośliwy kod uruchamia się automatycznie podczas instalacji pakietu, jeszcze przed zakończeniem procesu. Setup.mjs pobiera środowisko uruchomieniowe Bun, a następnie wykonuje główny ładunek — 11,7 MB zaciemnionego credential stealera.
Co kradnie malware i jak się rozprzestrzenia
Główny plik execution.js to framework propagacyjny. Zbiera tokeny GitHub, tokeny npm, zmienne środowiskowe, sekrety z GitHub Actions, dane uwierzytelniające do AWS, Azure, GCP oraz Kubernetes. Co istotne, malware zawiera rosyjski killswitch — jeśli systemowa lokalizacja to ru, kończy działanie bez uruchamiania payloadu. Zebrane dane są kompresowane, szyfrowane algorytmem AES-256-GCM i wysyłane do publicznych repozytoriów GitHub o losowych nazwach. Do komunikacji z serwerem C2 wykorzystywane jest wyszukiwanie commitów z frazą OhNoWhatsGoingOnWithGitHub.
Powiązania z wcześniejszymi atakami TeamPCP
To nie pierwsza operacja tej grupy. W marcu 2026 roku TeamPCP zaatakował narzędzia bezpieczeństwa, takie jak Trivy i LiteLLM. Według źródeł, grupa mogła wykraść ponad 300 GB danych i 500 tysięcy poświadczeń z około 500 tysięcy zainfekowanych maszyn. Atak na pakiety SAP jest kontynuacją tej samej kampanii — wykorzystuje identyczne narzędzia, zaciemnianie i logikę propagacji. Badacze wskazują na trzy precyzyjne powiązania kryminalistyczne między pakietem @bitwarden/cli a obecną falą, co sugeruje współdzielone autorstwo lub bezpośrednie ponowne użycie kodu.
Jak się bronić przed atakami na łańcuch dostaw
Dla administratorów i programistów kluczowe są trzy działania. Po pierwsze, należy natychmiast sprawdzić, czy w projekcie nie występują skompromitowane wersje pakietów SAP (@cap-js/sqlite w wersji 2.2.2, @cap-js/postgres 2.2.2, @cap-js/db-service 2.10.1, mbt 1.2.48) oraz @bitwarden/cli 2026.4.0. Po drugie, warto rotować wszystkie tokeny GitHub i npm, które mogły być przechowywane w środowiskach CI/CD. Po trzecie, dobrym zwyczajem jest blokowanie preinstalacyjnych hooków w plikach package.json lub używanie narzędzi do skanowania zależności, które wykrywają podejrzane skrypty. W dłuższej perspektywie warto rozważyć uruchamianie pipeline’ów w izolowanych kontenerach z ograniczonym dostępem do sekretów.
Ataki na łańcuch dostaw npm nie zwalniają tempa. Po wrześniowej epidemii robaka Shai-Hulud, kwiecień 2026 przyniósł kolejną, bardziej zaawansowaną falę. Programiści i firmy korzystające z ekosystemu JavaScript powinni traktować każdą zależność jak potencjalne zagrożenie i weryfikować jej integralność przed użyciem.


