
Atak na 42 pakiety npm TanStack – co się stało?
42 pakiety npm z ekosystemu TanStack zostały skompromitowane w ataku na łańcuch dostaw. Złośliwy kod zinfekował 84 artefakty w 27 minut, kradnąc poświadczenia CI z GitHub Actions. To jeden z najszybciej rozprzestrzeniających się incydentów w historii rejestru npm. TL;DR: Grupa TeamPCP przeprowadziła atak „Mini Shai-Hulud„ na pakiety TanStack, kompromitując 84 artefakty w 27 minut. Atak wykorzystuje zatruwanie pamięci podręcznej GitHub Actions oraz kradzież tokenów OIDC do infekcji potoków CI. Złośliwy kod celuje w poświadczenia chmurowe i zmienne środowiskowe platform wdrożeniowych.
Jak przebiegł atak na 42 pakiety TanStack?
Atak rozpoczął się od skompromitowania infrastruktury CI/CD projektu. Złośliwy kod zdołał zainfekować 84 osobne artefakty npm w zaledwie 27 minut od momentu początkowego wektora. Atakujący wykorzystali mechanizm GitHub Actions cache poisoning, zatruwając pamięć podręczną potoków integracji. Gdy zainfekowany potok uruchomił się, ładunek automatycznie rozprzestrzenił się na kolejne pakiety, działając z prędkością około trzech zainfekowanych pakietów na minutę.
Kampania nosi nazwę „Mini Shai-Hulud„ i jest powiązana z grupą TeamPCP. Metoda działania opiera się na mechanizmach typu worm, które automatycznie replikują się w środowisku CI. Zainfekowane pakiety publikowane są bezpośrednio w rejestrze npm, zastępując legalne wersje. W efekcie deweloperzy pobierający zaktualizowane biblioteki otrzymywali wersje z dodanym złośliwym kodem.
Czym jest metoda Mini Shai-Hulud?
„Mini Shai-Hulud„ to nazwa kampanii ataku przypisana do grupy TeamPCP, wykorzystującej mechanizmy robaka do automatycznej replikacji złośliwego kodu. Metoda ta celuje w systemy CI/CD. Technika pozwala na błyskawiczne rozprzestrzenianie się infekcji na dziesiątki pakietów bez bezpośredniej interakcji atakującego po początkowym wektorze. Model działania przypomina zachowanie piaskowego robaka z uniwersum Diuny, stąd nazwa operacji.
Atakujący wykorzystują skradzione tokeny OIDC do uwierzytelniania w imieniu zainfekowanych potoków. Następnie modyfikują konfigurację budowania, wstrzykując ładunek kradnący poświadczenia. Cały proces jest w pełni zautomatyzowany. Po zatruwaniu pamięci podręcznej, każdy kolejny proces budowania uruchamia złośliwy kod.
Jakie pakiety TanStack zostały skompromitowane?
Zainfekowanych zostało 42 pakiety z ekosystemu TanStack, obejmujące 84 skompromitowane artefakty wykryte przez zespół Socket. Atak objął popularne biblioteki frontendowe używane przez dziesiątki tysięcy projektów komercyjnych. Wśród zainfekowanych pakietów znajdują się kluczowe komponenty do zarządzania stanem aplikacji, routingu oraz obsługi formularzy w aplikacjach webowych:
- TanStack Query – biblioteka do zarządzania stanem serwerowym i asynchronicznym pobieraniem danych
- TanStack Table – narzędzie do budowania zaawansowanych tabel danych z sortowaniem i filtracją
- TanStack Router – system routingu oparty na typach dla aplikacji JavaScript i TypeScript
- TanStack Form – biblioteka do obsługi formularzy z walidacją i zarządzaniem stanem
- TanStack Virtual – komponent do wirtualizacji długich list i renderowania dużych zbiorów danych
- TanStack Store – system zarządzania stanem aplikacji z mechanizmem subskrypcji
Zainfekowane artefakty obejmowały wersje deweloperskie i produkcyjne poszczególnych pakietów oraz pakiety pomocnicze zawierające narzędzia developerskie i skrypty budowania. Skala kompromitacji jest znaczna, ponieważ ekosystem TanStack jest powszechnie stosowany w aplikacjach enterprise. Poniższa tabela przedstawia podział zainfekowanych artefaktów.
| Kategoria pakietów | Liczba zainfekowanych artefaktów | Wektor kompromitacji |
|---|---|---|
| Pakiety Query | 18 | Cache poisoning |
| Pakiety Table | 14 | Cache poisoning |
| Pakiety Router | 12 | OIDC token theft |
| Pakiety Form | 10 | OIDC token theft |
| Pakiety Virtual | 8 | Cache poisoning |
| Pakiety Store | 6 | Cache poisoning |
| Pozostałe narzędzia | 16 | Hybrydowy |
Jak działa GitHub Actions cache poisoning?
GitHub Actions cache poisoning to technika polegająca na zatruwaniu pamięci podręcznej używanej przez potoki CI/CD do przyspieszania budowań. Atakujący zyskują możliwość zapisu do pamięci podręcznej współdzielonej przez potok, wstrzykując tam złośliwy kod. Gdy proces budowania uruchamia się ponownie, pobiera zatrute dane z cache, wykonując ładunek atakującego w kontekście potoku z podwyższonymi uprawnieniami.
W przypadku ataku na TanStack technika ta pozwoliła na ominięcie standardowych zabezpieczeń repozytorium. Złośliwy kod wykonywał się wewnątrz zaufanego środowiska CI, mając dostęp do tokenów uwierzytelniających i zmiennych środowiskowych. Metoda ta jest trudna do wykrycia, ponieważ zainfekowane budowania wyglądają jak standardowe procesy wydawnicze. Podobną technikę zaobserwowano w przypadku narzędzia CLI Bitwarden skompromitowanego w trwającej kampanii ataku na łańcuch dostaw informowanej przez Checkmarx, gdzie atakujący wykorzystali mechanizmy CI do rozprzestrzeniania złośliwego kodu.
Jakie dane kradnie złośliwy kod z pakietów TanStack?
Złośliwy kod wstrzyknięty do artefaktów TanStack celuje przede wszystkim w poświadczenia CI oraz tokeny chmurowe. Według analizy przeprowadzonej przez zespół Socket, malware wykrada zmienne środowiskowe z potoków GitHub Actions. Kradzież obejmuje poświadczenia dostępowe do platform wdrożeniowych oraz klucze API usług zewnętrznych. Zainfekowane pakiety wysyłają zebrane dane do serwerów kontrolowanych przez grupę TeamPCP.
Atakujący uzyskali w ten sposób dostęp do mechanizmów OIDC, co pozwalało na podszywanie się pod legalne potoki budowania. Malware filtrował zmienne środowiskowe pod kątem słów kluczowych związanych z usługami chmurowymi. Skradzione tokeny mogły zostać wykorzystane do dalszej eskalacji ataku na infrastrukturę deweloperów. Złośliwy ładunek operuje z prędkością około trzech zainfekowanych pakietów na minutę, co potwierdza raport byteiota. Taka szybkość działania pozwala na masową kradzież poświadczeń zanim zespół bezpieczeństwa zareaguje na incydent.
Jak zespół TanStack zareagował na atak?
Zespół TanStack natychmiastowo zablokował publikację nowych wersji zainfekowanych pakietów po wykryciu anomalii przez systemy monitoringu. Projekt opublikował oficjalne komunikaty bezpieczeństwa zalecające deweloperom natychmiastowe obrócenie poświadczeń oraz weryfikację integralności pobranych pakietów. Podjęto również działania mające na celu usunięcie zatrutych wersji z rejestru npm.
Reakcja na incydent obejmowała współpracę z zespołem bezpieczeństwa GitHub w celu zabezpieczenia potoków CI/CD. Zidentyfikowano luki w konfiguracji pamięci podręcznej Actions, które pozwoliły na przeprowadzenie ataku cache poisoning. Następnie wdrożono dodatkowe mechanizmy weryfikacji kroków budowania. Działania naprawcze obejmowały również pełny audyt konfiguracji potoków oraz rotację wszystkich tokenów dostępowych. Zespół podjął współpracę z badaczami bezpieczeństwa w celu analizy wektora ataku oraz opracowania strategii zapobiegającej podobnym incydentom w przyszłości.
Jakie są skutki ataku dla deweloperów korzystających z TanStack?
Skutki ataku na łańcuch dostaw TanStack dotykają bezpośrednio organizacje, które pobrały zainfekowane wersje pakietów w oknie 27 minut od momentu kompromitacji. Złośliwy kod miał potencjalną możliwość wykradzenia poświadczeń chmurowych, tokenów wdrożeniowych oraz wrażliwych zmiennych środowiskowych z potoków CI. Organizacje muszą założyć, że wszystkie sekrety używane w zainfekowanych potokach zostały skompromitowane.
Atak wymusza przeprowadzenie pełnej inwentaryzacji zależności oraz audytu logów z systemów integracji. Deweloperzy muszą zweryfikować integralność wszystkich pobranych artefaktów z rejestru npm. Podobne konsekwencje zaobserwowano w przypadku wcześniejszych ataków na łańcuch dostaw w ekosystemie JavaScript, gdzie skradzione poświadczenia były wykorzystywane do dalszych infiltracji infrastruktury firmowej.
FAQ
Czym był atak „Mini Shai-Hulud„ na ekosystem TanStack?
To zautomatyzowany atak na łańcuch dostaw przeprowadzony przez grupę TeamPCP. Wykorzystał on mechanizmy przypominające robaki (worm) do błyskawicznej infekcji 84 artefaktów w 27 minut, zastępując legalne pakiety w rejestrze npm ich złośliwymi wersjami.
Co to jest GitHub Actions cache poisoning?
To technika polegająca na zatruwaniu pamięci podręcznej współdzielonej przez potoki CI/CD. Atakujący wstrzykuje złośliwy kod do pamięci podręcznej, który jest następnie pobierany i wykonywany z podwyższonymi uprawnieniami podczas kolejnych procesów budowania aplikacji.
Jakie dane były celem kradzieży w ataku na pakiety TanStack?
Złośliwy kod był zaprojektowany do filtrowania i kradzieży poświadczeń CI, tokenów chmurowych, kluczy API oraz wrażliwych zmiennych środowiskowych. Uzyskane w ten sposób dane były wysyłane na serwery kontrolowane przez grupę TeamPCP.
Co powinni zrobić deweloperzy, którzy korzystali z zainfekowanych pakietów TanStack?
Deweloperzy muszą natychmiast obrócić wszystkie poświadczenia, tokeny i sekrety, które mogły zostać wyeksponowane w potokach CI/CD. Ponadto konieczna jest weryfikacja integralności pobranych artefaktów, audyt logów systemowych oraz pełna inwentaryzacja zależności w projekcie.