Skip to content
LIVE: Agenci AI
czwartek 27 sierpnia, 20:00 - bezpłatnie, prezent dla obecnych
Zapisz się
LIVE: Agenci AI, 27.08
Zapisz się
logo Devstock
  • O nas
  • Moduły Akademii
    • Moduł 1
    • Moduł 2
    • Moduł 3
    • Pozostałe moduły
  • Kursy AI i IT
    • Pierwsza Misja AI (Podstawy)
    • Automatyzacje z n8n 2.0
    • Frontend Master 2026
  • Blog
  • Kontakt
  • O nas
  • Moduły Akademii
    • Moduł 1
    • Moduł 2
    • Moduł 3
    • Pozostałe moduły
  • Kursy AI i IT
    • Pierwsza Misja AI (Podstawy)
    • Automatyzacje z n8n 2.0
    • Frontend Master 2026
  • Blog
  • Kontakt
Live Agenci AI, czwartek 27 sierpnia o 20:00, udział bezpłatny - zapisz się
Bezpieczeństwo i Jakość

Robak w npm. Zainfekowane paczki z miliardami pobrań

  • 04 sie, 2026
  • Komentarze 0
Zainfekowane paczki npm jako metafora: przezroczysty sześcian oplątany czarnymi mackami, z pulsującym czerwonym rdzeniem w środku, na ciemnej odbijającej światło powierzchni

“Shai-Hulud: Here We Go Again” – taki opis nosi publiczne repozytorium na GitHubie. Od rana 4 sierpnia spływają do niego wykradzione sekrety programistów. Ktoś przejął konto GitHub opiekuna repozytorium keyv i opublikował zainfekowane paczki npm. Pobiera się je setki milionów razy miesięcznie: keyv, flat-cache i file-entry-cache mają po pół miliarda pobrań każda. Złośliwy kod rusza przy zwykłym npm install. Wynosi tokeny i klucze z komputera oraz z systemów CI, a potem rozsiewa się na paczki kolejnych opiekunów. Jeśli dziś instalowałeś zależności w projekcie JavaScript, sprawdź swój lockfile, zanim zamkniesz ten artykuł.

Które paczki npm zostały zainfekowane 4 sierpnia?

Pierwsza fala uderzyła w ekosystem jednego opiekuna. Według analizy Aikido Security zainfekowane wersje to między innymi keyv 6.0.0, flat-cache 6.1.24 i file-entry-cache 11.1.6. Pobiera się je odpowiednio około 604, 580 i 571 mln razy miesięcznie. Na liście są też cacheable-request 13.0.20 (około 137 mln), cacheable 2.5.1 i cache-manager 7.2.10. Badacze z Wiz policzyli w tej pierwszej fali 34 paczki.

Na tym się jednak nie skończyło, bo payload sam się kopiuje dalej. Aikido opisuje to jako propagację w stylu robaka: kod infekuje paczki innych opiekunów, którzy zainstalowali zainfekowaną wersję. W aktualizacji z wczesnego popołudnia Aikido pisało już o 868 zainfekowanych paczkach w 1381 wersjach. Odpowiadają one łącznie za około 2 mld pobrań miesięcznie. Te dwie liczby trzeba czytać rozdzielnie. Liczba 34 to paczki przejętego opiekuna, a 868 to stan po starcie propagacji robaka.

Podkreślmy od razu jedno, zanim liczba pobrań zacznie straszyć ponad miarę. Pobrania to nie infekcje, a projekty ze spójnym lockfile mają znacznie mniejsze ryzyko automatycznego pobrania świeżej, zainfekowanej wersji. Problem w tym, że tych bibliotek zwykle nie instalujesz świadomie. Siedzą głęboko w drzewie zależności popularnych narzędzi, więc możesz je mieć, choć nigdy nie wpisałeś ich nazwy.

Jak robak trafia z npm install do twoich sekretów

Mechanizm jest prostszy, niż sugeruje skala. Zainfekowana paczka ma w package.json sekcję preinstall. Dołączony skrypt uruchamia się automatycznie w trakcie instalacji, zanim zaimportujesz jakikolwiek kod. Ten skrypt pobiera środowisko uruchomieniowe Bun i odpala nim zaciemniony plik Math_Symbol.js o wadze 728 KB. Nie trzeba niczego klikać ani niczego uruchamiać – wystarczy instalacja zależności.

Dalej zaczyna się metodyczne czesanie maszyny. Według Aikido payload wyciąga tokeny npm z plików .npmrc. Zbiera też tokeny GitHuba w kilku formatach, od klasycznych PAT po OIDC z GitHub Actions. Do tego dochodzą klucze AWS ze zmiennych środowiskowych, plików konfiguracyjnych i metadanych EC2 oraz ECS. Payload sięga również po dane logowania Kubernetes, tokeny HashiCorp Vault, a nawet klucze Stripe i Slacka. Osobny moduł przeszukuje dysk po około 200 wzorcach plików: od .env, przez klucze prywatne, po bazy menedżera haseł KeePass.

Wszystko, co znajdzie, ląduje w publicznym repozytorium na GitHubie z tym samym drwiącym opisem, od którego zaczęliśmy. Wykradzione sekrety leżą więc w miejscu, z którego może je pobrać każdy, nie tylko autor ataku.

Podpisana paczka też bywa zainfekowana

Najbardziej niewygodna część tej historii dotyczy zaufania do podpisów. Atakujący wypchnął złośliwe pliki prosto do gałęzi main przejętego repozytorium i od razu opublikował nową wersję przez GitHub Actions. W efekcie zainfekowane wydania trafiły do npm z poprawnym, podpisanym poświadczeniem pochodzenia, które zwykle traktujemy jak dowód uczciwości paczki. Takie poświadczenie potwierdza jednak tylko tyle, że paczkę zbudowano z konkretnego repozytorium. O tym, kto w tym repozytorium siedział, nie mówi nic.

Sam payload nie wziął się znikąd. Wiz opisuje go jako kolejne wcielenie rodziny Mini Shai-Hulud, znanej z majowego ataku na 314 paczek npm w 22 minuty. Badacze wskazują też podobieństwa do kampanii grupy TeamPCP, która wykradła 3800 wewnętrznych repozytoriów GitHuba. Kto stoi za dzisiejszą odsłoną, nie zostało ustalone i uczciwie jest to zostawić otwarte. Wzorzec za to się nie zmienia: przejęte konto, automatyczna publikacja i sekrety wyniesione, zanim ktokolwiek zdąży spojrzeć na changelog.

Pierwsza Misja AI · Kodożercy

AI bez technikaliów – kurs i certyfikat

Pierwsza Misja AI to kurs Kodożerców dla absolutnych początkujących. Sci-fi fabuła, gamifikacja, prawdziwy GPT-4 w ćwiczeniach, certyfikat na koniec.

Zacznij Pierwszą Misję →
Pierwsza Misja AI - Kodożercy

Co sprawdzić w projekcie jeszcze dziś?

Zacznij od ustalenia, czy zainfekowana wersja w ogóle cię dotyczy. Wstępną kontrolę zrobi komenda npm ls keyv flat-cache file-entry-cache cacheable cacheable-request cache-manager – pokaże, które z tych bibliotek siedzą w twoim drzewie zależności i w jakich wersjach. Pamiętaj tylko, że to sprawdza wyłącznie paczki wymienione w tym tekście. Lista rośnie przez propagację robaka, więc wynik porównaj z aktualnym wykazem u Aikido. Jeżeli lockfile trzyma starsze wydania, a dziś nie robiłeś świeżej instalacji, prawdopodobnie jesteś poza zasięgiem tej fali.

Gorzej, jeśli ustalisz, że na maszynie wylądowała któraś z zainfekowanych wersji, a skrypty instalacyjne nie były wyłączone. Wtedy potraktuj sekrety z tej maszyny jako potencjalnie ujawnione. Kod uruchomił się już przy instalacji, a samo usunięcie paczki niczego nie cofa. Do rotacji w pierwszej kolejności idą tokeny npm i GitHuba. Potem klucze AWS i tokeny Vault, na końcu zawartość plików .env. W zespole warto przy okazji sprawdzić rzecz, o której łatwo zapomnieć. Czy kilka osób nie współdzieli jednego tokenu publikacji? Wtedy rotacja u jednej osoby nie zamyka tematu.

Na przyszłość ryzyko tej klasy ataków ogranicza wyłączenie automatycznych skryptów instalacyjnych. Wystarczy npm config set ignore-scripts true lokalnie i w CI. Część paczek wymaga skryptów do działania, więc bywa to niewygodne. Odcina jednak dokładnie ten mechanizm, którym Shai-Hulud wchodzi na maszynę.

Podsumowanie

4 sierpnia atakujący przejął konto GitHub opiekuna repozytorium keyv. Opublikował zainfekowane paczki npm z ekosystemu cacheable. Same keyv, flat-cache i file-entry-cache mają łącznie około 1,76 mld pobrań miesięcznie. Payload uruchamia się przy instalacji i kradnie tokeny npm, GitHuba oraz klucze AWS. Łup wysyła do publicznego repozytorium o opisie “Shai-Hulud: Here We Go Again”. Do tego infekuje paczki kolejnych opiekunów. Wiz policzył 34 paczki w pierwszej fali, a Aikido po kilku godzinach propagacji już 868. Zainfekowane wydania miały poprawne poświadczenie pochodzenia z GitHub Actions, więc podpis nie zastąpi kontroli wersji w lockfile. Sprawdź swoje zależności, a jeśli zainfekowana wersja zainstalowała się u ciebie z włączonymi skryptami instalacyjnymi, rotuj tokeny od razu.

Newsletter · DevstockAcademy & Kodożercy

Bądź na bieżąco ze światem IT, AI i automatyzacji

Co wtorek: newsy z branży, praktyczne tipy i narzędzia które warto znać. Zero spamu.


Udostępnij na:
Mateusz Wojdalski

Specjalista SEO i content marketingu w Devstock. Zajmuję się strategią treści, automatyzacją procesów marketingowych i wdrożeniami AI w codziennej pracy. Badam nowe narzędzia, adaptuję je do realnych zadań i piszę o tym, co faktycznie działa.

Notatnik AI, którego nie widać. Jest pozew zbiorowy
Anthropic ma płacić 10 mld dolarów za moc z Norwegii
Live Agenci AI, czwartek 27 sierpnia o 20:00, udział bezpłatny - zapisz się
Banner reklamowy Frontend Master 2026

Najnowsze wpisy

Thumb
Obserwowalność w IT – jak zwiększyć kontrolę
14 sie, 2026
Thumb
Cursor AI sprzedany za akcje. Cenę ustalono
18 sie, 2026
Thumb
FT: OpenAI rozwiązało zespół od najgorszych ryzyk
18 sie, 2026
Thumb
Reklamy w ChatGPT trafią też do płatnego
18 sie, 2026
Thumb
Fałszywy instytut zbudowany pod pozycjonowanie w AI
18 sie, 2026
Thumb
Prowizja App Store pod presją. Widać to
18 sie, 2026
Live Agenci AI, czwartek 27 sierpnia o 20:00, udział bezpłatny - zapisz się

Kategorie

  • Aktualności i Wydarzenia (83)
  • Bezpieczeństwo i Jakość (138)
  • Branża IT i Nowe Technologie (228)
  • Design i User Experience (4)
  • Narzędzia i Automatyzacja (131)
  • Programowanie i Technologie Webowe (80)
  • Rozwój kariery i Edukacja (33)

Tagi

5G AI Architektura Cyberbezpieczeństwo Feedback Frontend Git IoT JavaScript Motywacja Nauka efektywna Optymalizacja i wydajność Programowanie React.JS Rozwój osobisty WebDevelopment
Logo FitBody Center Warszawa

Odkryj zabiegi Endermologii LPG Infinity w FitBody Center Warszawa

Maszyna zabiegowa - endermologia lpg infinity
banner-reklamowy-frontend-master
Live Agenci AI, czwartek 27 sierpnia o 20:00, udział bezpłatny - zapisz się
Group-5638-1

Devstock – Akademia programowania z gwarancją pracy

🏠 ul. Bronowska 5a,
03-995 Warszawa
📞 +48 517 313 589
✉️ contact@devstockacademy.pl

Linki

  • Poznaj firmę Devstock
  • Wejdź do społeczności Devstock
  • Polityka prywatności
  • Regulamin

FitBody Center

Strona

  • Strona główna
  • Kontakt

Newsletter

Bądź na bieżąco, otrzymuj darmową wiedzę i poznaj nas lepiej!


Icon-facebook Icon-linkedin2 Icon-instagram Icon-youtube Tiktok
Copyright 2026 Devstock. Wszelkie prawa zastrzeżone
Devstock AcademyDevstock Academy
Sign inSign up

Sign in

Don’t have an account? Sign up
Lost your password?

Sign up

Already have an account? Sign in