Te zmiany nie były błahe. Wewnątrz repozytorium RedHatInsights/javascript-clients przestępcy wstrzyknęli złośliwy przepływ pracy (workflow) GitHub Actions. Ten przepływ żądał tokenów tożsamości OIDC i uruchamiał zaciemniony ładunek . Efektem było opublikowanie 32 trojanizowanych wersji pakietów pod oficjalną przestrzenią nazw npm
@redhat-cloud-services, z których każda nosiła sygnaturę kampanii: „Miasma: The Spreading Blight” (pol. „Miazmat: Rozprzestrzeniająca się Zaraza”) . Co kluczowe, ponieważ pakiety przeszły przez legalny potok CI/CD Red Hata i wykorzystywały poprawne przepływy publikowania OIDC, posiadały one autentyczne podpisy pochodzenia SLSA. Oznacza to, że standardowe kontrole bezpieczeństwa uznałyby je za zweryfikowane i bezpieczne
.
Złośliwe pakiety notowały średnio około 80 000 pobrań tygodniowo . W momencie, gdy jakikolwiek deweloper uruchamiał polecenie
npm installpreinstall . Ładunek ten wykradał dane uwierzytelniające z AWS, Azure, GCP, GitHub, HashiCorp Vault, plików konfiguracyjnych Kubernetes, kluczy SSH i lokalnych środowisk deweloperskich
. Następnie wykorzystywał skradzione sekrety, aby wstrzykiwać złośliwy kod do innych projektów, do których ofiara miała dostęp. W ten sposób każda skompromitowana stacja robocza programisty i każdy potok CI/CD stawały się nowym węzłem dystrybucji robaka
.
Najbardziej nowatorskim zachowaniem robaka nie była jednak sama kradzież danych uwierzytelniających, ale wykorzystanie narzędzi AI do kodowania. Warianty Miasmy podkładały złośliwe pliki reguł skierowane przeciwko Claude Code, Cursor, Gemini CLI i GitHub Copilot. Pliki te są zaprojektowane tak, aby uruchamiać się automatycznie, gdy deweloper po prostu sklonuje i otworzy skompromitowane repozytorium w swoim środowisku IDE . W efekcie sama czynność czytania kodu – bez instalowania czegokolwiek – mogła wyzwolić infekcję.
5 czerwca 2026 roku robak dotarł do Microsoftu. Złośliwy commit o tytule „Switched DataConverter to OrchestrationContext [skip ci]” wylądował w repozytorium Azure/durabletask, a jego metadane zostały zmanipulowane tak, aby wskazywały datę 9 marca 2020 roku, prawdopodobnie w celu uniknięcia podejrzeń . Ten commit był przyczółkiem. Stamtąd robak rozprzestrzenił się na 73 repozytoria w czterech organizacjach GitHub Microsoftu: Azure, Azure-Samples, Microsoft i MicrosoftDocs
. Wśród dotkniętych projektów znalazły się kluczowe elementy infrastruktury, takie jak
azure-functions-host i cała rodzina projektów Durable Task dla .NET, Go, Java, JavaScript, MSSQL i Pythona .
Aby zrozumieć Miasmę, trzeba zrozumieć decyzję TeamPCP o uwolnieniu ich broni jako open-source.
TeamPCP (śledzeni również jako Replicating Marauder, TGR-CRI-1135 i UNC6780) to grupa, która przez cały 2025 i początek 2026 roku doskonaliła rodzinę samopropagujących się robaków atakujących łańcuchy dostaw. Ich działania osiągnęły szczyt 11 maja 2026 roku, kiedy opublikowali 373 złośliwe wersje pakietów w 172 pakietach npm i PyPI, o łącznej liczbie pobrań przekraczającej 518 milionów . Już ta kampania pokazała zdolność robaka do wydobywania tokenów OIDC z pamięci GitHub Actions, uzyskiwania ważnych certyfikatów podpisywania i tworzenia złośliwych pakietów z pozytywnie przechodzącymi atestacjami pochodzenia
.
Następnie, 12 maja 2026 roku, TeamPCP opublikował pełny kod źródłowy Mini Shai-Hulud na GitHubie na licencji MIT . Wraz z nim grupa ogłosiła na forum BreachForums konkurs, oferując 1000 dolarów w Monero za największy atak na łańcuch dostaw przeprowadzony przy użyciu ich frameworka
. Przekaz był jasny: zestaw narzędzi staje się własnością publiczną.
W ciągu pięciu dni pojedyncze konto użytkownika npm wypuściło cztery złośliwe pakiety, w tym niemal dosłowny klon robaka Shai-Hulud. Firma OX Security przeanalizowała klon i stwierdziła, że został skopiowany „niemal bez żadnych zmian”, różniąc się jedynie własnym punktem dowodzenia i kontroli (C2) oraz kluczem prywatnym atakującego . Industrializacja ataków na łańcuch dostaw właśnie się rozpoczęła – a obrońcy jeszcze o tym nie wiedzieli.
Siedemnaście dni po publikacji kodu źródłowego, Miasma uderzyła w Red Hata. Kod złośliwego oprogramowania jest strukturalnym wariantem Mini Shai-Hulud, z oryginalnymi odniesieniami do uniwersum Diuny zastąpionymi motywami z mitologii greckiej . Jednak techniki – wykonanie skryptu
preinstall, zaciemnione ładunki JavaScript, kradzież danych uwierzytelniających i samopropagacja przez CI/CD – są zasadniczo identyczne .
Co kluczowe, badacze nie mogą jednoznacznie przypisać ataku Miasma grupie TeamPCP. Sojusz Cloud Security Alliance (CSA) wyraźnie zauważa, że „nie można wykluczyć naśladowców korzystających z tego samego publicznie dostępnego kodu” . Zespół Unit 42 z Palo Alto Networks potwierdza to, stwierdzając, że „atrybucja pozostaje niepewna”, ponieważ publiczne udostępnienie kodu źródłowego oznacza, że każdy kompetentny aktor może powtórzyć ten sam atak
. Ta niejednoznaczność nie jest przypisem – to celowa cecha strategii open-source, zaprojektowanej, by zalać ekosystem szumem i obezwładnić wysiłki związane z atrybucją
.
Otwartoźródłowy framework nie tylko umożliwił atak Miasma – wywołał falę natychmiastowej aktywności naśladowców.
3 czerwca 2026 roku pojawił się nowy wariant o nazwie Phantom Gyp, który dotarł do 57 dodatkowych pakietów npm, w tym @vapi-ai/server-sdk i ai-sdk-ollama . Wariant ten wykorzystywał uzbrojony plik
binding.gyp do wykonywania złośliwego kodu podczas instalacji pakietu, omijając w ten sposób już bacznie obserwowaną ścieżkę wykonania postinstall . Badacze z OpenSourceMalware potwierdzili, że była to pierwsza potwierdzona kampania w naturze wykorzystująca framework TeamPCP, chociaż sama grupa nigdy nie przyznała się do autorstwa
.
Do 8 czerwca Centrum Sztormów Internetowych SANS poinformowało, że szersza populacja atakujących aktywnie posługiwała się upublicznionym frameworkiem Mini Shai-Hulud, a wiele niezależnych grup uruchomiło własne kampanie . Złośliwe oprogramowanie rozprzestrzeniło się poza npm: badacze zidentyfikowali wariant w języku Ruby, który wydawał się być przetłumaczony przez duży model językowy (LLM) – prymitywny, ale funkcjonalny port, który nie był częścią oryginalnego kodu open-source
. Szybkość adaptacji, z npm na wiele ekosystemów, podkreśliła, jak gruntownie zmieniła się powierzchnia ataku.
Odpowiedź na atak Miasma była wyjątkowo szybka i jawna, co odzwierciedlało zarówno skalę kompromitacji, jak i zaangażowanie głównych właścicieli platform.
Reakcja GitHub była natychmiastowa. Platforma wyłączyła ponad 70 repozytoriów należących do Microsoftu w ciągu około 105 minut od wykrycia zagrożenia 5 czerwca 2026 roku . Wyłączone repozytoria obejmowały organizacje Azure, Azure-Samples, Microsoft i MicrosoftDocs
. W ciągu kilku dni wszystkie repozytoria zostały przywrócone i uznane za czyste, chociaż niektóre zależne od nich potoki CI/CD Microsoftu zostały zakłócone podczas akcji usuwania
.
Microsoft opublikował szczegółową analizę techniczną za pośrednictwem swojego zespołu Threat Intelligence 2 czerwca 2026 roku, obejmującą pełny łańcuch ataku od początkowego włamania do Red Hata po wykorzystanie CI/CD . Firma podjęła również bardzo nietypowy krok, usuwając 73 własne repozytoria, mówiąc serwisowi BleepingComputer, że decyzja została podjęta z obawy, iż repozytoria rozpowszechniają „potencjalnie złośliwą zawartość”
. Zakłócenia w wewnętrznych przepływach pracy CI/CD Microsoftu pokazały, że nawet właściciel platformy nie jest odporny na konsekwencje robaka w łańcuchu dostaw.
Red Hat opublikował ostrzeżenie bezpieczeństwa RHSB-2026-006 1 czerwca 2026 roku, potwierdzając kompromitację i stwierdzając, że naruszenie ograniczało się do wewnętrznych narzędzi deweloperskich i nie miało wpływu na produkty Red Hat Enterprise Linux ani OpenShift . Firma unieważniła wszystkie zainfekowane wersje pakietów npm i ostrzegła użytkowników.
Brytyjskie Narodowe Centrum Cyberbezpieczeństwa (NCSC) przekształciło ten incydent w szersze działania polityczne. 4 czerwca 2026 roku NCSC opublikowało wpis na blogu, w którym wyraźnie wezwało organizacje do przeglądu swoich zależności open-source i ograniczenia ekspozycji na ataki na łańcuch dostaw . Timing nie był przypadkowy – wpis bezpośrednio odnosił się do kampanii Miasma jako katalizatora
. 9 czerwca 2026 roku NCSC wydało zaktualizowany Podręcznik Łańcucha Dostaw Cyber Essentials, wzywając brytyjskie firmy do uczynienia certyfikacji Cyber Essentials standardowym wymogiem dla dostawców
.
Wytyczne NCSC koncentrowały się na trzech kategoriach: widoczność (audyt aktualizacji pakietów, identyfikacja nieoczekiwanych zależności i prowadzenie listy materiałów oprogramowania), ocena (szacowanie praktyk bezpieczeństwa dostawców) i działanie (zabezpieczenie łańcucha dostaw jako priorytet na poziomie zarządu) . Brytyjski rząd formalnie zaangażował się również w sprawę kampanii TeamPCP, co odzwierciedla przesunięcie, w którym bezpieczeństwo zależności open-source jest obecnie traktowane jako kwestia narodowej polityki cyberbezpieczeństwa, a nie indywidualnej higieny dewelopera.
Atak Miasma nie jest największym naruszeniem łańcucha dostaw w historii ani najbardziej wyrafinowanym. Może być jednak najbardziej pouczający dla zrozumienia tego, co nadejdzie.
Po pierwsze, otwartoźródłowe frameworki ataku uzbroiły ekosystem. Decyzja TeamPCP o opublikowaniu Mini Shai-Hulud na licencji MIT jest celową strategią: uzbroić armię naśladowców, stworzyć chaos atrybucyjny i zmusić obrońców do walki z nieznaną liczbą niezależnych aktorów korzystających z tego samego schematu działania . To nie jest teoria – aktywność naśladowców została udokumentowana w ciągu pięciu dni od publikacji, a atrybucja Miasmy pozostaje niepewna tygodniami później
.
Po drugie, hak preinstall w npm jest systemową podatnością. Atak wielokrotnie wykorzystuje funkcję zaprojektowaną do legalnych skryptów budowania, której brakuje wystarczających kontroli nad wykonywaniem skryptów cyklu życia . Pojawienie się pliku
binding.gyp jako dodatkowego wektora wykonania w wariancie Phantom Gyp pokazuje, że atakujący aktywnie szukają nowych cykli życia do przejęcia . Ograniczenia na poziomie rejestru dotyczące
preinstall i innych skryptów cyklu życia są teraz pilnym priorytetem.
Po trzecie, asystenci kodowania AI stali się powierzchnią wykonawczą. Miasma jest jednym z pierwszych udokumentowanych ataków na łańcuch dostaw, którego celem są Claude Code, Cursor, Copilot i Gemini CLI jako mechanizmy dostarczania ładunku poprzez złośliwe pliki reguł . Kiedy deweloper klonuje repo i otwiera je, narzędzia AI zaprojektowane, aby pomóc mu pisać lepszy kod, mogą zamiast tego wykonać złośliwy kod. Ten wektor prawdopodobnie się rozwinie, w miarę jak rozwój wspomagany przez AI stanie się domyślnym przepływem pracy.
Po czwarte, potoki CI/CD są teraz celami o najwyższej wartości. Zdolność robaka do wydobywania tokenów OIDC z pamięci maszyn wirtualnych GitHub Actions i tworzenia pakietów z ważnymi atestacjami pochodzenia SLSA oznacza, że standardowa weryfikacja kryptograficzna – złoty standard integralności łańcucha dostaw – może zostać pokonana . Jeśli kontrole pochodzenia przechodzą pomyślnie, obrońcy nie mają sygnału, by oznaczyć kompromitację. Zabezpieczenie potoków CI/CD przed ekspozycją poświadczeń nie jest już opcjonalne.
Wreszcie, interwencja rządowa dotarła do zarządzania zależnościami open-source. Zaktualizowany podręcznik NCSC nie ma charakteru doradczego – to konkretne żądanie, aby brytyjskie firmy wbudowały bezpieczeństwo łańcucha dostaw w procesy zakupowe . Organizacje, które traktują przegląd zależności jako jednorazowy audyt, a nie ciągły proces, funkcjonują w rzeczywistości bezpieczeństwa sprzed ery Miasmy.
Comments
0 comments