Zatrute biblioteki TanStack w npm (CVE-2026-45321) kradły klucze, także dla ransomware
11 maja 2026 r. do npm trafiły 84 złośliwe wersje pakietów TanStack, opublikowane prawdziwą tożsamością wydawcy. CISA potwierdza ataki. Sprawdź, czy instalowaliście je tego dnia, i wymień klucze.
Ten alert jest dla zarządu, CTO i CFO firm, które mają aplikacje webowe pisane w JavaScript, własne lub zamówione w agencji. Werdykt: jeśli Twój projekt korzysta z bibliotek TanStack i 11 maja 2026 roku ktoś instalował w nim zależności, potraktuj komputer programisty i serwer budujący jako przejęte i wymień wszystkie klucze dostępowe dziś.
1. CO SIĘ STAŁO? Fakty w pigułce
Amerykańska agencja CISA 27 maja 2026 roku dopisała CVE-2026-45321 do katalogu KEV, czyli listy podatności, o których ma dowody wykorzystania w prawdziwych atakach. To nietypowy wpis: nie chodzi o błąd w kodzie, który trzeba załatać, tylko o atak na łańcuch dostaw oprogramowania. Wieczorem 11 maja 2026 roku, w oknie około sześciu minut (według GitHub między 19:20 a 19:26 UTC, czyli 21:20 i 21:26 czasu polskiego), do publicznego rejestru npm trafiły 84 złośliwe wersje w 42 pakietach projektu TanStack. Wersje te zawierały program kradnący hasła, tokeny i klucze.
Najważniejsze: złośliwe wersje zostały opublikowane prawdziwą, zaufaną tożsamością wydawcy projektu. Kontrola podpisu pakietu nie ostrzegłaby nikogo.
Element
Szczegóły
Identyfikator CVE
CVE-2026-45321
Data dodania do CISA KEV
2026-05-27
Termin naprawy wg CISA
2026-06-10
Produkt
TanStack, pakiety @tanstack/* w rejestrze npm (m.in. react-router, router-core, react-start, solid-router, vue-router)
Wersje zagrożone
84 konkretne wersje w 42 pakietach, po dwie na pakiet, np. @tanstack/react-router i @tanstack/router-core 1.169.5 oraz 1.169.8. Zagrożone jest każde środowisko, które zainstalowało taką wersję (komputer programisty, serwer CI)
Wersje bezpieczne
Złośliwe wersje wycofano z npm. Doradztwo GitHub wskazuje wersje poprawione o numer wyżej (np. react-router 1.169.9). W rejestrze npm pierwszym nowym wydaniem react-router po incydencie jest 1.170.0 z 15 maja 2026, najnowsze na 17 września 2026 to 1.170.38 (router-core: 1.171.32). Ostatnie czyste wydanie react-router sprzed incydentu: 1.169.2
Typ podatności
Osadzony złośliwy kod w bibliotece (atak na łańcuch dostaw); CWE-506. W katalogu CISA: „TanStack Unspecified Vulnerability”
Ocena CVSS
9.6 KRYTYCZNA (CVSS 3.1, ocena GitHub jako podmiotu rejestrującego). NVD nie wystawiło własnej oceny. Atak przez sieć, bez uprawnień, wymaga instalacji pakietu przez ofiarę, skutki wychodzą poza zaatakowany element
2. O CO CHODZI W PROSTYCH SŁOWACH?
Wyobraź sobie hurtownię, która od lat dostarcza do Twojej restauracji produkty w zaplombowanych skrzynkach z pieczęcią producenta. Pewnego wieczoru ktoś na kilka minut dostał się do linii pakującej i wydał dwie partie skrzynek z prawdziwą pieczęcią, ale z podmienioną zawartością. Kucharz otwiera skrzynkę, bo pieczęć się zgadza, a w środku jest urządzenie, które kopiuje klucze do zaplecza i sejfu.
Tak zadziałał atak na TanStack. Aplikacje nie powstają od zera, tylko z setek gotowych bibliotek pobieranych automatycznie. Rejestr npm ma mechanizm „zaufanego wydawcy”, który pozwala publikować tylko automatowi uruchomionemu z właściwego repozytorium. Napastnik nie łamał tego mechanizmu: połączył trzy znane słabości procesu budowania w GitHub Actions i wydobył z pamięci automatu prawdziwy token tożsamości. Zaufanie nie zostało podrobione, tylko pożyczone.
💡 npm to publiczny rejestr bibliotek dla JavaScript, z którego programiści i serwery budujące pobierają gotowe elementy aplikacji. CI (serwer budujący) to automat, który składa i wdraża aplikację. Token to cyfrowa przepustka, która zastępuje hasło w komunikacji między systemami. Łańcuch dostaw oprogramowania to wszystkie zewnętrzne elementy, z których składa się Twoja aplikacja.
Scenariusz
Normalnie
Z podatnością
Programista instaluje zależności
Pobiera sprawdzone wersje bibliotek
Pobiera wersję z programem kradnącym, który uruchamia się już przy instalacji
Kontrola podpisu wydawcy
Chroni przed podróbkami
Nie pomaga, bo podpis jest prawdziwy
Serwer budujący (CI)
Ma klucze do chmury i serwerów, by wdrażać aplikację
Te same klucze trafiają do napastnika
Klucze SSH, tokeny GitHub i npm
Znane tylko firmie lub agencji
Wysłane szyfrowanym kanałem poza firmę
Pakiety utrzymywane przez ofiarę
Publikowane przez uprawnione osoby
Program próbuje je przepublikować z tym samym złośliwym dodatkiem
źródło: Unsplash, Yosuke Ota
3. JAK HAKERZY TO WYKORZYSTUJĄ?
Poniżej typowy przebieg ataku dla tej klasy zdarzeń. To scenariusz poglądowy dopasowany do opisu z doradztwa GitHub, a nie odtworzenie konkretnego włamania do konkretnej firmy. Kluczowe jest to, że okno publikacji było jedno i już się zamknęło: dziś nie da się tą samą drogą zainfekować nowej instalacji, ale skutki kradzieży z 11 maja mogą trwać.
Etap
Czas
Akcja hakerów
Wynik
1. Publikacja
T+0 min
Wydanie złośliwych wersji 42 pakietów pod prawdziwą tożsamością TanStack
Zatrute biblioteki w publicznym rejestrze
2. Instalacja
T+minuty do godzin
Programista lub serwer CI uruchamia npm install, pnpm install albo yarn install
Program kradnący uruchamia się bez wiedzy użytkownika
3. Kradzież
T+sekundy od instalacji
Zbieranie kluczy AWS i GCP, tokenów Kubernetes, Vault, GitHub i npm oraz kluczy SSH
Przestój i żądanie zapłaty; CISA oznaczyła użycie w kampaniach ransomware
Konkretne scenariusze zagrożenia
🔴 Scenariusz 1: agencja odbudowała sklep internetowy 11 maja wieczorem, a serwer CI miał klucze do produkcyjnej bazy danych; po kilku dniach ktoś pobiera bazę klientów prawdziwym kontem technicznym.
🔴 Scenariusz 2: z laptopa programisty wyciekają klucze SSH i token GitHub, więc napastnik dopisuje własny kod do repozytorium firmowej aplikacji, który trafia do klientów przy najbliższym wdrożeniu.
🔴 Scenariusz 3: skradzione klucze do chmury trafiają do grupy ransomware, która kasuje kopie zapasowe w tym samym koncie chmurowym i szyfruje serwery.
4. DLACZEGO TO RYZYKO DLA TWOJEJ FIRMY?
Firma zamawiająca aplikację zwykle czuje się od tego daleko, bo sama nie instaluje bibliotek. Tymczasem złośliwy kod działał tam, gdzie leżą klucze do Twoich systemów: na komputerach programistów i serwerach budujących, często u zewnętrznego dostawcy. Widocznym skutkiem nie jest awaria, tylko późniejsze logowania prawdziwymi poświadczeniami.
Obszar biznesu
Potencjalny wpływ
Czas do wystąpienia
Koszty szacunkowe
Operacyjny
Wstrzymanie wdrożeń, wymiana wszystkich kluczy, audyt repozytoriów, możliwy przestój sklepu lub aplikacji
Dni
20 tys. do 150 tys. PLN (praca zespołu, odtwarzanie)
Bezpieczeństwo danych
Dostęp do baz klientów, kodu źródłowego i chmury przy użyciu skradzionych kluczy
Dni do tygodni
30 tys. do 250 tys. PLN (analiza powłamaniowa)
Finansowy
Nieautoryzowane zasoby w chmurze, okup, utracona sprzedaż
Tygodnie
50 tys. do 800 tys. PLN łącznie
Reputacyjny
Utrata zaufania klientów, szczególnie jeśli zatruty kod trafi do Twojej aplikacji
Miesiące
50 tys. do 400 tys. PLN (utracone kontrakty)
Prawny
Obowiązek zgłoszenia naruszenia do UODO w ciągu 72 godzin i ewentualnie powiadomienia osób; możliwa kara RODO do 20 mln EUR lub 4% rocznego obrotu, zależnie od okoliczności; spory z agencją o odpowiedzialność
72 godziny od wykrycia
20 tys. do 120 tys. PLN (obsługa prawna), bez ewentualnej kary
Kwoty są orientacyjnymi widełkami dla małej i średniej firmy, nie danymi z tego incydentu.
Macierz ryzyka dla firmy, której projekt używa TanStacki instalował zależności 11 maja 2026Wpływ 5 | . . ■ . . ← WYSOKIE 4 | . . . . . 3 | . . . . . 2 | . . . . . 1 | . . . . . +-------------------- 1 2 3 4 5 Prawdopodobieństwo
Interpretacja: skutek jest krytyczny, bo wyciekają klucze do całej infrastruktury, ale prawdopodobieństwo jest średnie, bo zależy od tego, czy instalacja zależności wypadła w krótkim oknie 11 maja; dla firm bez TanStack albo z przypiętymi starszymi wersjami ryzyko tej konkretnej sprawy jest bliskie zeru.
5. CO MUSISZ ZROBIĆ NATYCHMIAST?
Lp.
Priorytet
Działanie
Termin
Odpowiedzialny
1
🔴 NATYCHMIAST
Ustalić, czy którykolwiek projekt (także u agencji) używa pakietów @tanstack/*
Dziś
CTO / kierownik projektu
2
🔴 NATYCHMIAST
Sprawdzić pliki blokady wersji (package-lock.json, pnpm-lock.yaml, yarn.lock) i logi CI pod kątem złośliwych wersji oraz instalacji 11 maja 2026
Dziś
Programista / DevOps
3
🔴 NATYCHMIAST
Jeśli tak: wymienić wszystkie poświadczenia dostępne dla procesu instalacji (chmura, GitHub, npm, SSH, Vault, Kubernetes)
Dziś
DevOps / administrator
4
🟠 PILNIE
Przejrzeć logi audytowe chmury i GitHub od 11 maja pod kątem działań z nieznanych adresów
Do 3 dni
Dział IT / zespół bezpieczeństwa
5
🟠 PILNIE
Usunąć node_modules i plik blokady, zainstalować zależności od nowa na czystych wersjach
Do 3 dni
Programista
6
🟠 PILNIE
Sprawdzić, czy pakiety npm publikowane przez firmę nie dostały nieautoryzowanych wydań
Do 3 dni
Programista
7
🟡 WAŻNIE
Wprowadzić przypinanie wersji, opóźnienie przyjmowania świeżych wydań i minimalne uprawnienia serwera CI
Do 30 dni
CTO
Jeśli aktualizacja nie jest dostępna
Czyste wydania TanStack są dostępne, a złośliwe wersje wycofano z npm, więc samo „zaktualizowanie” nie wystarczy: najważniejsze jest ustalenie, czy do instalacji doszło, i wymiana kluczy. Poniższe miary ograniczają ryzyko podobnych zdarzeń. Oceny efektywności to ocena ekspercka.
Czasowa miara ochronna
Efektywność
Łatwość wdrożenia
Przypięcie wszystkich @tanstack/* do wersji sprzed 11 maja 2026 lub po incydencie (zalecenie GitHub)
Wysoka wobec tej sprawy
Łatwa
Wyłączenie skryptów instalacyjnych (npm config set ignore-scripts true, zalecenie GitHub)
Wysoka: ładunek uruchamiał się przy instalacji
Średnia: część narzędzi może przestać działać
Blokada ruchu do domen komunikatora Session z serwerów CI (wskazana w doradztwie)
Średnia: utrudnia wysłanie danych, nie usuwa kodu
Średnia
Instalowanie zależności tylko z plikiem blokady (npm ci)
Średnia: chroni przed nieplanowanym pobraniem nowych wersji
Łatwa
Przed i po działaniu
Stan
Przed działaniem
Po działaniu
Wiedza o narażeniu
Nie wiadomo, czy zatruta wersja była instalowana
Udokumentowana odpowiedź: tak lub nie, z dowodem z plików blokady i logów CI
Klucze i tokeny
Mogą być w rękach napastnika
Wymienione, stare unieważnione
Zależności
Mogą wskazywać na złośliwe wersje
Czyste wersje przypięte w pliku blokady
Serwer CI
Szerokie uprawnienia, klucze produkcyjne na stałe
Minimalne uprawnienia, krótkotrwałe tokeny
Relacja z agencją
Ogólne zapewnienie „nas to nie dotyczy”
Pisemna odpowiedź na trzy konkretne pytania
6. KONTEKST I SKALA ZAGROŻENIA
Aspekt
Informacja
Czy jest wykorzystywana?
TAK (potwierdzone przez CISA). Złośliwe wersje były publicznie dostępne w npm 11 maja 2026
Grupy przestępcze
Brak publicznych informacji o nazwie grupy
Kampanie ransomware
TAK (CISA KEV: Known), bez wskazania konkretnych kampanii
Ocena CVSS
9.6 KRYTYCZNA (CVSS 3.1, GitHub); brak własnej oceny NVD
PoC dostępny publicznie?
Nie dotyczy w zwykłym sensie: to gotowy złośliwy kod, a nie luka do wykorzystania. Doradztwo opisuje mechanizm i wskaźniki włamania
Liczba atakowanych firm
Brak publicznych informacji; zasięg zależy od liczby instalacji w oknie publikacji
Prognoza EPSS
0,02342 (około 2%) według odczytu z 23 sierpnia 2026; niska, bo okna ataku nie da się powtórzyć
Zasięg w danych NVD
Lista dopasowań produktów w bazie NVD liczy kilkaset pozycji (wg analizy źródłowej), więc nie jest miarą zasięgu zdarzenia
Wskaźniki mówią tu różne rzeczy, bo zdarzenie było jednorazowe. Dla decyzji zarządu liczy się pytanie, co budowano 11 maja i jakie klucze wtedy były dostępne:
Sygnały zagrożenia dla CVE-2026-45321CVSS 3.1 (GitHub) 9.6/10 ███████████████████░ KRYTYCZNACISA KEV TAK ████████████████████ ataki potwierdzoneRansomware (CISA) Known ████████████████████ używanaEPSS (próba w 30 dni) ~2% ░░░░░░░░░░░░░░░░░░░░ niska, okno zamknięteOkno publikacji ~6 min █░░░░░░░░░░░░░░░░░░░ krótkie, ale skuteczne
Linia czasu incydentu
2026-05-11 19:20-19:26 UTC: 84 złośliwe wersje w 42 pakietach TanStack w npm2026-05-12 GitHub publikuje doradztwo GHSA-g7cv-rxg3-hmpx2026-05-15 Pierwsze nowe wydanie @tanstack/react-router (1.170.0)2026-05-27 CISA dodaje CVE-2026-45321 do katalogu KEV, ransomware: Known2026-06-08 Ostatnia aktualizacja doradztwa GitHub2026-06-10 Termin naprawy wg CISA dla agencji federalnych ... ponad 3 miesiące od terminu CISA2026-09-17: TUTAJ JESTEŚMY
7. BEZPOŚREDNI LINK DO DZIAŁANIA: checklista dla CTO/CFO
Czy którykolwiek nasz projekt używa pakietów @tanstack/*?
TAK / NIE
🔴
2
Czy 11 maja 2026 na komputerach programistów lub serwerach CI instalowano zależności tych projektów?
TAK / NIE, [data]
🔴
3
Czy pliki blokady wskazują którąkolwiek z 84 złośliwych wersji?
TAK / NIE, [wersja]
🔴
4
Kiedy ostatnio wymieniono klucze do chmury, GitHub, npm i SSH używane przez CI?
[data]
🔴
5
Czy logi audytowe chmury i GitHub od 11 maja zostały przejrzane?
TAK / NIE, [data]
🟠
6
Czy serwer CI instaluje zależności tylko z pliku blokady i ma wyłączone zbędne skrypty instalacyjne?
TAK / NIE
🟠
7
Czy publikujemy własne pakiety npm i czy sprawdziliśmy, że nie pojawiły się ich nieautoryzowane wydania?
TAK / NIE
🟡
Pytania diagnostyczne dla managera
✓ Czy wiem, jakie zewnętrzne biblioteki są w naszych aplikacjach i kto za nie odpowiada?
✓ Czy nasza agencja poinformowała nas o tej sprawie w maju, a jeśli nie, dlaczego?
✓ Czy serwer budujący ma dostęp do produkcji, i czy naprawdę musi go mieć na stałe?
✓ Czy potrafimy w jeden dzień wymienić wszystkie klucze dostępowe do naszych systemów?
✓ Czy mamy procedurę zgłoszenia naruszenia danych do UODO w 72 godziny?
Podsumowanie
CVE-2026-45321 to atak na łańcuch dostaw: przez około sześć minut 11 maja 2026 roku rejestr npm wydawał złośliwe wersje bibliotek TanStack pod prawdziwą tożsamością wydawcy, a program kradł klucze z komputerów programistów i serwerów budujących. CISA potwierdza wykorzystanie, także w kampaniach ransomware, więc kluczowe jest ustalenie, czy instalacja wypadła w tym oknie, i wymiana poświadczeń, a nie sama aktualizacja.
Czytaj dalej
Powiązane artykuły
Zestaw zmienia się codziennie, więc przy kolejnej wizycie zobaczysz inny wycinek bloga.
Błąd w NetScaler ADC i Gateway, opisany przez producenta jako awaria, pozwala według badaczy przejąć bramę VPN bez hasła. Publiczny kod istnieje, ataki trwają. Zaktualizuj urządzenia i sprawdź ślady włamania.
Błąd w logowaniu platformy Kestra OSS pozwala bez hasła tworzyć i uruchamiać przepływy pracy, czyli wykonywać dowolne polecenia jako root. Microsoft opisał włamanie, CISA potwierdza ataki. Zaktualizuj dziś.
CISA dodała do katalogu KEV lukę z 2015 roku w narzędziu ABRT, która daje napastnikowi uprawnienia root na serwerach RHEL 7 i CentOS 7. Zaktualizuj pakiet abrt i zaplanuj wymianę systemów bez wsparcia.
Klikając „Akceptuję”, zgadzasz się na przechowywanie plików cookie przez UXU w celu poprawy działania strony, analizy i wsparcia działań marketingowych.