Archiwa: Linux - Strona 4 z 52 - Security Bez Tabu

HollowByte: nowy wektor DoS w OpenSSL umożliwia wyczerpanie pamięci serwera pakietem 11 bajtów

Cybersecurity news

Wprowadzenie do problemu / definicja

HollowByte to nowo ujawniona technika ataku typu denial of service wymierzona w serwery korzystające z OpenSSL do obsługi połączeń TLS. Istota problemu polega na tym, że podatne implementacje alokują pamięć na podstawie długości zadeklarowanej w nagłówku komunikatu handshake, zanim otrzymają pełną zawartość wiadomości. Dzięki temu napastnik może wymuszać kosztowne operacje po stronie serwera przy użyciu minimalnego ruchu sieciowego.

W skrócie

Atak HollowByte pozwala nieuwierzytelnionemu podmiotowi stopniowo zwiększać zużycie pamięci procesu poprzez wielokrotne inicjowanie połączeń TLS i wysyłanie krótkiego, 11-bajtowego pakietu z zawyżoną deklaracją długości danych. W efekcie serwer rezerwuje pamięć, oczekując na dalszy payload, który nigdy nie nadchodzi. Problem może prowadzić do degradacji wydajności, fragmentacji sterty i trwałego wzrostu RSS procesu nawet po zakończeniu ataku.

  • atak nie wymaga wysokiej przepustowości,
  • może być prowadzony równolegle na wielu sesjach TLS,
  • wpływa głównie na dostępność i stabilność usług,
  • poprawki trafiły do nowszych wersji OpenSSL w kilku wspieranych gałęziach.

Kontekst / historia

OpenSSL pozostaje jednym z kluczowych komponentów współczesnej infrastruktury internetowej. Biblioteka jest powszechnie wykorzystywana przez serwery WWW, reverse proxy, API, bazy danych, aplikacje kontenerowe i liczne usługi uruchamiane w systemach Linux oraz Unix. Z tego powodu każda podatność wpływająca na przebieg negocjacji TLS może mieć szeroki zasięg operacyjny.

HollowByte został opisany jako słabość związana nie z wykonaniem kodu czy wyciekiem danych, lecz z nieefektywną obsługą pamięci podczas przetwarzania niekompletnych komunikatów handshake. Tego rodzaju podatności często bywają niedoszacowane, ponieważ nie prowadzą bezpośrednio do przejęcia systemu, ale mogą skutecznie obniżać dostępność usług publicznych i wewnętrznych.

Analiza techniczna

Źródło problemu znajduje się w sposobie obsługi komunikatów TLS Handshake. Każda wiadomość handshake zawiera 4-bajtowy nagłówek, w którym 3 bajty określają długość dalszej części komunikatu. W podatnych wersjach OpenSSL serwer ufa tej wartości zbyt wcześnie i dokonuje alokacji bufora zgodnie z deklarowanym rozmiarem jeszcze przed odebraniem całej wiadomości.

Napastnik może więc zestawić połączenie TLS, wysłać krótki komunikat z dużą zadeklarowaną długością danych i przerwać transmisję dalszego payloadu. Serwer utrzymuje przydzieloną pamięć i oczekuje na brakujące dane, co przy wielu równoległych połączeniach prowadzi do sztucznego wzrostu zużycia zasobów. Taki model ataku jest asymetryczny: koszt po stronie atakującego pozostaje bardzo niski, natomiast koszt po stronie serwera rośnie nieproporcjonalnie.

Znaczenie ma również zachowanie alokatora pamięci. Nawet jeśli część buforów zostanie zwolniona po zamknięciu sesji, pamięć nie zawsze wraca od razu do systemu operacyjnego. W praktyce może to powodować utrzymywanie przydzielonych obszarów w procesie, pogłębianie fragmentacji sterty i trwały wzrost RSS. Przy atakach prowadzonych falami, z różnymi deklarowanymi rozmiarami, odzyskiwanie pamięci staje się jeszcze trudniejsze, a pełna normalizacja bywa możliwa dopiero po restarcie usługi.

Konsekwencje / ryzyko

Najpoważniejszym skutkiem HollowByte jest zagrożenie dla dostępności usług. W środowiskach o ograniczonych zasobach pamięci atak może stosunkowo szybko doprowadzić do wzrostu opóźnień, niestabilności działania, aktywacji mechanizmów OOM i czasowej niedostępności aplikacji. W większych środowiskach skutki mogą narastać wolniej, ale nadal przekładać się na spadek wydajności i stabilności.

Ryzyko dotyczy szczególnie infrastruktury, w której OpenSSL odpowiada za terminację TLS przed warstwą biznesową. Obejmuje to między innymi serwery NGINX i Apache, bramy API, reverse proxy, aplikacje uruchamiane w kontenerach oraz komponenty chmurowe bazujące na standardowych pakietach systemowych. Dodatkowym wyzwaniem jest możliwość prowadzenia ataku poniżej typowych progów alarmowych związanych z wolumenem ruchu, co może utrudniać szybką detekcję przez SOC i zespoły operacyjne.

Rekomendacje

Priorytetem powinno być zidentyfikowanie systemów korzystających z podatnych wersji OpenSSL, zarówno bezpośrednio, jak i pośrednio przez pakiety dystrybucyjne, obrazy kontenerowe oraz zależności aplikacyjne. Następnie należy zaplanować aktualizację do wersji zawierających poprawkę, odpowiednio dla używanej gałęzi.

  • przeprowadzić inwentaryzację bibliotek OpenSSL w środowisku,
  • zaktualizować pakiety do wersji zawierających poprawkę,
  • ograniczyć liczbę równoległych połączeń TLS z pojedynczych źródeł,
  • skrócić timeouty dla niekompletnych handshake’y,
  • monitorować RSS oraz anomalie pamięci w procesach obsługujących TLS,
  • korelować zdarzenia związane z dużą liczbą niedokończonych sesji,
  • wykorzystać reverse proxy, WAF lub usługi anty-DDoS zdolne do wykrywania nietypowych wzorców handshake.

Warto również zweryfikować, czy po wdrożeniu aktualizacji konieczny jest restart usług w celu odzyskania pamięci i przywrócenia stabilnego profilu pracy. Organizacje korzystające z pakietów systemowych powinny potwierdzić, że poprawka została dostarczona przez ich dostawcę w używanym kanale aktualizacji. Dobrą praktyką jest także wykonywanie testów odpornościowych obejmujących niekompletne komunikaty handshake i niskowolumenowe scenariusze DoS.

Podsumowanie

HollowByte pokazuje, że nawet pozornie niewielka słabość w obsłudze handshaku TLS może przełożyć się na realne ryzyko operacyjne dla szerokiej infrastruktury. Mechanizm ataku wykorzystuje zaufanie do długości zadeklarowanej w nagłówku, aby wymuszać kosztowne alokacje pamięci przy użyciu minimalnego pakietu wejściowego. W efekcie organizacje mogą mierzyć się z trwałym wzrostem zużycia pamięci, fragmentacją sterty i pogorszeniem dostępności usług.

Najskuteczniejszą odpowiedzią pozostaje szybka aktualizacja OpenSSL, weryfikacja zależności w łańcuchu dostaw oprogramowania oraz wzmocnienie monitoringu pod kątem anomalii w warstwie TLS i pamięci procesów. Choć podatność nie prowadzi bezpośrednio do kradzieży danych ani zdalnego wykonania kodu, jej znaczenie biznesowe i operacyjne jest wysokie.

Źródła

  1. BleepingComputer — https://www.bleepingcomputer.com/news/security/hollowbyte-ddos-flaw-bloats-openssl-server-memory-with-11-byte-payload/
  2. OpenSSL Library — Release and Advisory Timeline — https://mirror.openssl-library.org/news/timeline/
  3. OpenSSL Library — Downloads — https://www.openssl-library.org/source/

Claude Code i DeepSeek wykorzystane w kampanii cyberwywiadowczej powiązanej z Chinami

Cybersecurity news

Wprowadzenie do problemu / definicja

Wykorzystanie dużych modeli językowych w działaniach ofensywnych przestaje być wyłącznie teoretycznym scenariuszem. Najnowsze ustalenia badaczy wskazują, że narzędzia oparte na AI mogą pełnić rolę aktywnego elementu łańcucha ataku, wspierając nie tylko analizę, ale również rozwój exploitów, adaptację technik obejścia zabezpieczeń oraz przygotowanie infrastruktury phishingowej.

To istotna zmiana w krajobrazie zagrożeń, ponieważ automatyzacja obejmuje dziś coraz więcej etapów operacji cyberwywiadowczych. W praktyce oznacza to skrócenie czasu potrzebnego na przygotowanie kampanii, zwiększenie jej elastyczności oraz łatwiejsze dostosowanie działań do konkretnej ofiary.

W skrócie

  • Badacze ujawnili kampanię cyberespionage wspieraną przez Claude Code oraz DeepSeek.
  • Atakujący korzystali z infrastruktury obejmującej serwery w Hongkongu, otwarte katalogi z artefaktami operacyjnymi, skrypty exploitów i klony stron logowania.
  • Celami były instytucje rządowe oraz organizacje z sektorów finansowego, telekomunikacyjnego, chemicznego, obronnego i łańcucha dostaw.
  • W części incydentów wykorzystano SQL injection, przejęto dane uwierzytelniające oraz uzyskano dostęp do zasobów chmurowych dzięki ujawnionym kluczom i tokenom.

Kontekst / historia

Kampania została powiązana z infrastrukturą znaną z wcześniejszych działań związanych z TencShell. Analiza rozpoczęła się od charakterystycznego fingerprintu nagłówka HTTP na porcie 1111, który doprowadził badaczy do klastra 13 serwerów. Na jednym z nich odkryto publicznie dostępny katalog zawierający tysiące plików i liczne podkatalogi powiązane z prowadzonymi operacjami.

Zgromadzone artefakty sugerują długotrwałą i wielowątkową aktywność wymierzoną w różne regiony oraz typy ofiar. Wśród odnalezionych materiałów znalazły się źródła aplikacji ofiar, notatki operacyjne zapisane uproszczonym chińskim, skrypty rozpoznawcze, narzędzia do klonowania stron logowania oraz komponenty malware dla różnych architektur systemowych.

Analiza techniczna

Najciekawszym elementem kampanii był podział ról między dwa modele AI. Claude Code miał odpowiadać za warstwę wykonawczą, w tym uruchamianie poleceń Bash, zarządzanie długotrwałymi sesjami, wykonywanie zadań równoległych oraz przygotowywanie infrastruktury phishingowej. DeepSeek pełnił natomiast funkcję warstwy planistycznej i decyzyjnej, generując skrypty, dobierając techniki ataku i proponując alternatywne metody obejścia zabezpieczeń.

Odzyskane pliki robocze wskazują, że operatorzy wykorzystywali AI do iteracyjnego rozwijania fałszywych stron logowania, ich testowania i ulepszania. W praktyce oznacza to skrócenie cyklu testowania i modyfikacji infrastruktury atakującej, co wcześniej wymagało większego zaangażowania analityków lub programistów.

W działaniach przeciwko celom rządowym wykorzystano podatności typu SQL injection do uzyskania dostępu administracyjnego do aplikacji webowych. Następnie wdrożono web shella ukrytego jako plik GIF, aby utrzymać trwały dostęp do środowiska. W innym przypadku skompromitowano aplikację opartą na Laravel 5.8.38, pozyskując kod źródłowy, poświadczenia do bazy danych, klucze szyfrujące oraz elementy obsługi poczty, a następnie przygotowano dedykowany exploit w Pythonie wymierzony w mechanizmy deserializacji frameworka.

W kampanii skierowanej przeciw organizacjom z Tajwanu operatorzy prowadzili rekonesans przy użyciu brute-force DNS, zapytań do rejestrów przejrzystości certyfikatów oraz fingerprintingu usług HTTP. Szczególnym zainteresowaniem cieszyły się bramy VPN, instancje GitLab i środowiska Jira. W jednym z przypadków kompromitacja była możliwa dzięki kluczom Supabase i tokenom Azure Logic Apps osadzonym na stałe w publicznie dostępnych plikach JavaScript.

Badacze opisali także wcześniej nieudokumentowaną infrastrukturę C2 określaną jako Gshell C2, częściowo pokrywającą się z wcześniejszym klastrem. Dodatkowo zabezpieczono próbki malware dla Linux/ARM 32-bit oraz Linux/x86. Wariant ARM komunikował się z serwerem przez WebSocket i potrafił wykradać dane uwierzytelniające z komunikatorów, tokeny platform firmowych oraz klucze dostępowe do usług chmurowych. Wersja x86 była zaciemniona przy użyciu narzędzia garble, lecz wspólny materiał kryptograficzny sugerował współdzieloną bazę kodu.

Konsekwencje / ryzyko

Najważniejszym wnioskiem z tej kampanii jest to, że modele AI mogą dziś działać jako realny akcelerator operacji cyberwywiadowczych. Nie chodzi już wyłącznie o generowanie kodu, ale o zwiększenie szybkości adaptacji ataku do konkretnego środowiska ofiary i bieżących warunków operacyjnych.

Dla sektora publicznego oznacza to ryzyko utraty danych obywateli, informacji administracyjnych, danych kadrowych oraz wglądu w procedury i systemy zgłoszeniowe. Dla przedsiębiorstw zagrożenie obejmuje przejęcie kont uprzywilejowanych, kompromitację środowisk chmurowych, kradzież kodu źródłowego oraz naruszenie łańcucha dostaw. Szczególnie groźne okazuje się połączenie klasycznych podatności aplikacyjnych z błędami operacyjnymi, takimi jak ujawnione sekrety, słaba segregacja uprawnień i brak monitorowania nietypowych działań administracyjnych.

Rekomendacje

Organizacje powinny potraktować tę kampanię jako wyraźny sygnał do rewizji modelu obrony przed atakami wspieranymi przez AI. Priorytetem powinno być rygorystyczne zarządzanie sekretami oraz usunięcie z publicznych repozytoriów i plików frontendowych wszystkich kluczy API, tokenów i danych dostępowych.

Niezbędne jest także regularne skanowanie aplikacji internetowych pod kątem SQL injection, błędów deserializacji oraz nadmiernej ekspozycji paneli administracyjnych. W obszarze monitoringu warto rozszerzyć detekcję o wzorce wskazujące na szybkie, iteracyjne zmiany w infrastrukturze phishingowej, użycie web shelli maskowanych jako pliki statyczne oraz komunikację WebSocket do nieznanych hostów.

  • wdrożyć rotację i pełną inwentaryzację kluczy oraz tokenów dostępowych,
  • przeprowadzić przegląd aplikacji pod kątem SQL injection i deserializacji,
  • ograniczyć ekspozycję paneli administracyjnych do sieci zaufanych lub przez ZTNA/VPN,
  • monitorować publiczne zasoby frontendowe pod kątem osadzonych sekretów,
  • rozwijać playbooki SOC uwzględniające ataki adaptacyjne wspierane przez AI,
  • analizować artefakty phishingowe i klony stron logowania pod kątem automatycznego generowania.

Podsumowanie

Opisana kampania pokazuje, że AI staje się pełnoprawnym komponentem nowoczesnych operacji cyberwywiadowczych. Integracja modeli językowych z narzędziami wykonawczymi skraca czas przygotowania ataku, zwiększa elastyczność operatorów i obniża koszt tworzenia spersonalizowanych technik kompromitacji.

Dla obrońców oznacza to konieczność równoczesnego wzmacniania bezpieczeństwa aplikacji, kontroli dostępu, ochrony sekretów oraz zdolności do wykrywania działań prowadzonych szybciej i bardziej adaptacyjnie niż w tradycyjnych kampaniach APT.

Źródła

  1. Security Affairs — https://securityaffairs.com/195474/ai/claude-code-and-deepseek-powered-chinese-cyber-espionage-campaign.html
  2. Hunt.io Report — https://hunt.io
  3. Anthropic — Trust & Safety disclosures — https://www.anthropic.com

Złośliwe pakiety AsyncAPI w npm wykorzystały legalny pipeline do dostarczenia malware botnetowego

Cybersecurity news

Wprowadzenie do problemu / definicja

Ataki na łańcuch dostaw oprogramowania pozostają jednym z najpoważniejszych zagrożeń dla ekosystemu open source. Najnowszy incydent związany z pakietami AsyncAPI w rejestrze npm pokazuje, że nawet prawidłowo działający proces publikacji i poprawne atestacje pochodzenia nie gwarantują bezpieczeństwa artefaktów. W tym przypadku złośliwy kod został osadzony w legalnie wyglądających paczkach JavaScript i uruchamiał się dopiero podczas załadowania modułu przez środowisko Node.js.

To istotna zmiana względem bardziej typowych kampanii, które opierają się na skryptach wykonywanych w trakcie instalacji zależności. Dzięki temu atakujący mogli ograniczyć ryzyko szybkiego wykrycia i zwiększyć szansę na uruchomienie ładunku dopiero w realnym środowisku deweloperskim lub CI/CD.

W skrócie

Zidentyfikowano skompromitowane wersje kilku pakietów AsyncAPI publikowanych w npm, które dostarczały wieloetapowy loader prowadzący do uruchomienia malware określanego jako Miasma. Wśród wskazywanych wersji znalazły się między innymi @asyncapi/generator-helpers@1.1.1, @asyncapi/generator-components@0.7.1, @asyncapi/generator@3.3.1 oraz @asyncapi/specs w wersjach 6.11.2 i 6.11.2-alpha.1.

Według ustaleń badaczy napastnicy mieli uzyskać dostęp typu push do repozytoriów projektu i wykorzystać legalny pipeline GitHub Actions do opublikowania pakietów z poprawnymi atestacjami OIDC. Oznacza to, że problem nie wynikał wyłącznie z przejęcia tokenu publikacyjnego npm, lecz z kompromitacji procesu wytwórczego i uprawnień do repozytorium.

  • Złośliwy kod nie aktywował się podczas instalacji, lecz po załadowaniu modułu.
  • Ładunek był dostarczany etapowo, co utrudniało analizę.
  • Publikacja odbyła się z użyciem autoryzowanego workflow projektu.
  • Ryzykiem objęte były zarówno stacje deweloperskie, jak i środowiska CI/CD.

Kontekst / historia

Ataki na rejestry pakietów, takie jak npm, PyPI czy Cargo, od lat należą do najskuteczniejszych metod infekowania środowisk programistycznych i pipeline’ów budowania oprogramowania. W przeszłości dominowały prostsze kampanie wykorzystujące skrypty preinstall i postinstall, które wykonywały szkodliwe działania już podczas pobierania zależności.

W opisywanym przypadku zastosowano bardziej dyskretną technikę. Złośliwa logika została ukryta bezpośrednio w module i aktywowała się dopiero wtedy, gdy biblioteka była faktycznie używana. Taki model działania pozwala ominąć część podstawowych kontroli bezpieczeństwa i zmniejsza prawdopodobieństwo wykrycia podczas prostego audytu instalowanych paczek.

Incydent wpisuje się w szerszy trend, w którym atakujący coraz częściej koncentrują się nie tylko na samym rejestrze pakietów, ale na całym łańcuchu zaufania obejmującym repozytorium źródłowe, workflow CI/CD, mechanizmy podpisywania oraz automaty publikacyjne.

Analiza techniczna

Z dostępnych analiz wynika, że złośliwe pakiety zawierały implant JavaScript inicjujący pierwszy etap infekcji po załadowaniu modułu przez Node.js. Następnie uruchamiany był odseparowany proces działający w tle, którego zadaniem było pobranie kolejnego etapu z infrastruktury opartej o IPFS.

Drugi etap miał postać zaszyfrowanego loadera JavaScript o nazwie sync.js, zapisywanego lokalnie w ścieżkach zależnych od systemu operacyjnego i następnie wykonywanego na hoście. Loader zawierał zarówno zaszyfrowany właściwy payload, jak i dodatkowy duży blob danych używany do inicjowania kolejnych komponentów malware.

Końcowy framework, określany jako Miasma, miał składać się z setek modułów i wspierać wiele kanałów komunikacji C2. W analizach wskazywano między innymi na HTTP, Nostr, IPFS, BitTorrent DHT, libp2p GossipSub oraz mechanizm związany ze smart kontraktami w sieci Ethereum. Taka architektura zwiększa odporność operacji na blokowanie pojedynczych serwerów, domen czy adresów IP.

Możliwości szkodliwego oprogramowania wykraczały poza prosty downloader. Opisywane funkcje obejmowały kradzież poświadczeń, ruch boczny w sieci lokalnej, utrzymywanie trwałości oraz potencjalną propagację przypominającą robaka w ekosystemach npm, PyPI i Cargo. Mechanizmy persistence miały wykorzystywać różne techniki zależnie od platformy, w tym systemd, crontab, launchd oraz klucze autostartu w systemie Windows.

Istotnym elementem był również zestaw mechanizmów utrudniających analizę. Badacze wskazywali na unikanie środowisk sandbox i maszyn wirtualnych, omijanie wybranych narzędzi ochronnych oraz obecność logiki przypominającej „dead man’s switch”, która w określonych warunkach mogła inicjować czyszczenie artefaktów lub katalogów roboczych.

Najważniejszy technicznie wniosek dotyczy jednak wektora publikacji. Prawidłowe atestacje pochodzenia potwierdzały jedynie, że artefakt został zbudowany przez autoryzowany pipeline, a nie że sam commit inicjujący publikację był legalny i niezmodyfikowany przez napastnika. To pokazuje ograniczenia samego zaufania do mechanizmów provenance bez równoległej ochrony repozytorium źródłowego.

Konsekwencje / ryzyko

Skutki tego incydentu należy analizować szerzej niż tylko jako problem pojedynczej złośliwej paczki npm. Jeżeli podatna wersja została nie tylko pobrana, ale również zaimportowana i wykonana, zagrożone mogły być stacje deweloperskie, runnery CI, systemy buildowe oraz inne elementy infrastruktury mające dostęp do sekretów i poświadczeń.

  • możliwość wykonania złośliwego kodu na stacji roboczej lub serwerze CI,
  • kradzież tokenów, kluczy API i innych sekretów dostępnych w środowisku,
  • uzyskanie trwałości na hostach końcowych,
  • ruch boczny w sieci lokalnej i dalsza eskalacja dostępu,
  • wykorzystanie zainfekowanego środowiska do dalszego zatruwania zależności.

Szczególnie wysokie ryzyko dotyczy organizacji, w których zainfekowane pakiety działały w pipeline’ach z dostępem do poświadczeń chmurowych, tokenów repozytoriów, kluczy publikacyjnych lub systemów produkcyjnych. W takich przypadkach incydent może bardzo szybko przekształcić się w pełnoskalowe naruszenie bezpieczeństwa środowiska wytwórczego.

Rekomendacje

Organizacje korzystające z AsyncAPI lub powiązanych pakietów powinny niezwłocznie ustalić, czy wskazane wersje były pobierane, importowane lub wykonywane w środowiskach deweloperskich oraz CI/CD. Sama obecność paczki w lokalnym cache nie musi oznaczać kompromitacji, jednak jej rzeczywiste uruchomienie znacząco podnosi poziom ryzyka.

  • przeprowadzić pełny przegląd logów buildów, runnerów CI i stacji deweloperskich,
  • zidentyfikować użycie konkretnych skompromitowanych wersji pakietów,
  • rotować wszystkie sekrety dostępne z potencjalnie zainfekowanych hostów,
  • przeanalizować połączenia wychodzące do nietypowych usług i kanałów P2P,
  • zweryfikować obecność mechanizmów persistence na Windows, Linux i macOS,
  • izolować oraz poddać analizie forensic systemy, które mogły wykonać złośliwy moduł.

Z perspektywy strategicznej warto rozszerzyć ochronę łańcucha dostaw o analizę zachowania zależności w runtime, a nie tylko skanowanie skryptów instalacyjnych. Kluczowe znaczenie ma także wzmocnienie bezpieczeństwa repozytoriów źródłowych poprzez silne MFA, ochronę branchy, wymagane przeglądy zmian oraz monitorowanie nietypowych pushy i publikacji.

  • ograniczyć uprawnienia runnerów CI/CD do niezbędnego minimum,
  • stosować krótko żyjące sekrety i tymczasowe poświadczenia,
  • blokować nieautoryzowane połączenia wychodzące z runnerów,
  • segmentować stacje deweloperskie od zasobów produkcyjnych,
  • wdrożyć allowlisty dla rejestrów i artefaktów,
  • regularnie utrzymywać SBOM oraz audytować zależności pośrednie,
  • wykrywać nietypowe procesy potomne uruchamiane przez Node.js.

Podsumowanie

Incydent z pakietami AsyncAPI pokazuje, że współczesne ataki supply chain stają się coraz bardziej subtelne, wieloetapowe i trudniejsze do wykrycia. Złośliwy kod nie wykorzystywał klasycznych hooków instalacyjnych, lecz aktywował się dopiero podczas realnego użycia modułu, a publikacja została przeprowadzona przez legalny pipeline projektu.

Najważniejszy wniosek dla zespołów bezpieczeństwa jest jednoznaczny: skuteczna ochrona łańcucha dostaw musi obejmować nie tylko rejestr pakietów i podpisy artefaktów, ale również bezpieczeństwo repozytoriów, workflow CI/CD, analizę zachowania kodu w runtime oraz ścisłą kontrolę sekretów. Każde środowisko, które zaimportowało i wykonało wskazane wersje pakietów, powinno być traktowane jako potencjalnie skompromitowane do czasu zakończenia pełnej analizy.

Źródła

Złośliwe pakiety AsyncAPI w npm wykorzystały legalny pipeline do dostarczenia malware botnetowego

Cybersecurity news

Wprowadzenie do problemu / definicja

Ataki na łańcuch dostaw oprogramowania pozostają jednym z najpoważniejszych zagrożeń dla ekosystemu open source. Najnowszy incydent związany z pakietami AsyncAPI w rejestrze npm pokazuje, że nawet prawidłowo działający proces publikacji i poprawne atestacje pochodzenia nie gwarantują bezpieczeństwa artefaktów. W tym przypadku złośliwy kod został osadzony w legalnie wyglądających paczkach JavaScript i uruchamiał się dopiero podczas załadowania modułu przez środowisko Node.js.

To istotna zmiana względem bardziej typowych kampanii, które opierają się na skryptach wykonywanych w trakcie instalacji zależności. Dzięki temu atakujący mogli ograniczyć ryzyko szybkiego wykrycia i zwiększyć szansę na uruchomienie ładunku dopiero w realnym środowisku deweloperskim lub CI/CD.

W skrócie

Zidentyfikowano skompromitowane wersje kilku pakietów AsyncAPI publikowanych w npm, które dostarczały wieloetapowy loader prowadzący do uruchomienia malware określanego jako Miasma. Wśród wskazywanych wersji znalazły się między innymi @asyncapi/generator-helpers@1.1.1, @asyncapi/generator-components@0.7.1, @asyncapi/generator@3.3.1 oraz @asyncapi/specs w wersjach 6.11.2 i 6.11.2-alpha.1.

Według ustaleń badaczy napastnicy mieli uzyskać dostęp typu push do repozytoriów projektu i wykorzystać legalny pipeline GitHub Actions do opublikowania pakietów z poprawnymi atestacjami OIDC. Oznacza to, że problem nie wynikał wyłącznie z przejęcia tokenu publikacyjnego npm, lecz z kompromitacji procesu wytwórczego i uprawnień do repozytorium.

  • Złośliwy kod nie aktywował się podczas instalacji, lecz po załadowaniu modułu.
  • Ładunek był dostarczany etapowo, co utrudniało analizę.
  • Publikacja odbyła się z użyciem autoryzowanego workflow projektu.
  • Ryzykiem objęte były zarówno stacje deweloperskie, jak i środowiska CI/CD.

Kontekst / historia

Ataki na rejestry pakietów, takie jak npm, PyPI czy Cargo, od lat należą do najskuteczniejszych metod infekowania środowisk programistycznych i pipeline’ów budowania oprogramowania. W przeszłości dominowały prostsze kampanie wykorzystujące skrypty preinstall i postinstall, które wykonywały szkodliwe działania już podczas pobierania zależności.

W opisywanym przypadku zastosowano bardziej dyskretną technikę. Złośliwa logika została ukryta bezpośrednio w module i aktywowała się dopiero wtedy, gdy biblioteka była faktycznie używana. Taki model działania pozwala ominąć część podstawowych kontroli bezpieczeństwa i zmniejsza prawdopodobieństwo wykrycia podczas prostego audytu instalowanych paczek.

Incydent wpisuje się w szerszy trend, w którym atakujący coraz częściej koncentrują się nie tylko na samym rejestrze pakietów, ale na całym łańcuchu zaufania obejmującym repozytorium źródłowe, workflow CI/CD, mechanizmy podpisywania oraz automaty publikacyjne.

Analiza techniczna

Z dostępnych analiz wynika, że złośliwe pakiety zawierały implant JavaScript inicjujący pierwszy etap infekcji po załadowaniu modułu przez Node.js. Następnie uruchamiany był odseparowany proces działający w tle, którego zadaniem było pobranie kolejnego etapu z infrastruktury opartej o IPFS.

Drugi etap miał postać zaszyfrowanego loadera JavaScript o nazwie sync.js, zapisywanego lokalnie w ścieżkach zależnych od systemu operacyjnego i następnie wykonywanego na hoście. Loader zawierał zarówno zaszyfrowany właściwy payload, jak i dodatkowy duży blob danych używany do inicjowania kolejnych komponentów malware.

Końcowy framework, określany jako Miasma, miał składać się z setek modułów i wspierać wiele kanałów komunikacji C2. W analizach wskazywano między innymi na HTTP, Nostr, IPFS, BitTorrent DHT, libp2p GossipSub oraz mechanizm związany ze smart kontraktami w sieci Ethereum. Taka architektura zwiększa odporność operacji na blokowanie pojedynczych serwerów, domen czy adresów IP.

Możliwości szkodliwego oprogramowania wykraczały poza prosty downloader. Opisywane funkcje obejmowały kradzież poświadczeń, ruch boczny w sieci lokalnej, utrzymywanie trwałości oraz potencjalną propagację przypominającą robaka w ekosystemach npm, PyPI i Cargo. Mechanizmy persistence miały wykorzystywać różne techniki zależnie od platformy, w tym systemd, crontab, launchd oraz klucze autostartu w systemie Windows.

Istotnym elementem był również zestaw mechanizmów utrudniających analizę. Badacze wskazywali na unikanie środowisk sandbox i maszyn wirtualnych, omijanie wybranych narzędzi ochronnych oraz obecność logiki przypominającej „dead man’s switch”, która w określonych warunkach mogła inicjować czyszczenie artefaktów lub katalogów roboczych.

Najważniejszy technicznie wniosek dotyczy jednak wektora publikacji. Prawidłowe atestacje pochodzenia potwierdzały jedynie, że artefakt został zbudowany przez autoryzowany pipeline, a nie że sam commit inicjujący publikację był legalny i niezmodyfikowany przez napastnika. To pokazuje ograniczenia samego zaufania do mechanizmów provenance bez równoległej ochrony repozytorium źródłowego.

Konsekwencje / ryzyko

Skutki tego incydentu należy analizować szerzej niż tylko jako problem pojedynczej złośliwej paczki npm. Jeżeli podatna wersja została nie tylko pobrana, ale również zaimportowana i wykonana, zagrożone mogły być stacje deweloperskie, runnery CI, systemy buildowe oraz inne elementy infrastruktury mające dostęp do sekretów i poświadczeń.

  • możliwość wykonania złośliwego kodu na stacji roboczej lub serwerze CI,
  • kradzież tokenów, kluczy API i innych sekretów dostępnych w środowisku,
  • uzyskanie trwałości na hostach końcowych,
  • ruch boczny w sieci lokalnej i dalsza eskalacja dostępu,
  • wykorzystanie zainfekowanego środowiska do dalszego zatruwania zależności.

Szczególnie wysokie ryzyko dotyczy organizacji, w których zainfekowane pakiety działały w pipeline’ach z dostępem do poświadczeń chmurowych, tokenów repozytoriów, kluczy publikacyjnych lub systemów produkcyjnych. W takich przypadkach incydent może bardzo szybko przekształcić się w pełnoskalowe naruszenie bezpieczeństwa środowiska wytwórczego.

Rekomendacje

Organizacje korzystające z AsyncAPI lub powiązanych pakietów powinny niezwłocznie ustalić, czy wskazane wersje były pobierane, importowane lub wykonywane w środowiskach deweloperskich oraz CI/CD. Sama obecność paczki w lokalnym cache nie musi oznaczać kompromitacji, jednak jej rzeczywiste uruchomienie znacząco podnosi poziom ryzyka.

  • przeprowadzić pełny przegląd logów buildów, runnerów CI i stacji deweloperskich,
  • zidentyfikować użycie konkretnych skompromitowanych wersji pakietów,
  • rotować wszystkie sekrety dostępne z potencjalnie zainfekowanych hostów,
  • przeanalizować połączenia wychodzące do nietypowych usług i kanałów P2P,
  • zweryfikować obecność mechanizmów persistence na Windows, Linux i macOS,
  • izolować oraz poddać analizie forensic systemy, które mogły wykonać złośliwy moduł.

Z perspektywy strategicznej warto rozszerzyć ochronę łańcucha dostaw o analizę zachowania zależności w runtime, a nie tylko skanowanie skryptów instalacyjnych. Kluczowe znaczenie ma także wzmocnienie bezpieczeństwa repozytoriów źródłowych poprzez silne MFA, ochronę branchy, wymagane przeglądy zmian oraz monitorowanie nietypowych pushy i publikacji.

  • ograniczyć uprawnienia runnerów CI/CD do niezbędnego minimum,
  • stosować krótko żyjące sekrety i tymczasowe poświadczenia,
  • blokować nieautoryzowane połączenia wychodzące z runnerów,
  • segmentować stacje deweloperskie od zasobów produkcyjnych,
  • wdrożyć allowlisty dla rejestrów i artefaktów,
  • regularnie utrzymywać SBOM oraz audytować zależności pośrednie,
  • wykrywać nietypowe procesy potomne uruchamiane przez Node.js.

Podsumowanie

Incydent z pakietami AsyncAPI pokazuje, że współczesne ataki supply chain stają się coraz bardziej subtelne, wieloetapowe i trudniejsze do wykrycia. Złośliwy kod nie wykorzystywał klasycznych hooków instalacyjnych, lecz aktywował się dopiero podczas realnego użycia modułu, a publikacja została przeprowadzona przez legalny pipeline projektu.

Najważniejszy wniosek dla zespołów bezpieczeństwa jest jednoznaczny: skuteczna ochrona łańcucha dostaw musi obejmować nie tylko rejestr pakietów i podpisy artefaktów, ale również bezpieczeństwo repozytoriów, workflow CI/CD, analizę zachowania kodu w runtime oraz ścisłą kontrolę sekretów. Każde środowisko, które zaimportowało i wykonało wskazane wersje pakietów, powinno być traktowane jako potencjalnie skompromitowane do czasu zakończenia pełnej analizy.

Źródła

Atak na łańcuch dostaw Jscrambler: złośliwe pakiety NPM instalowały stealera na Linux, macOS i Windows

Cybersecurity news

Wprowadzenie do problemu / definicja

Ataki na łańcuch dostaw oprogramowania należą dziś do najpoważniejszych zagrożeń dla zespołów deweloperskich i organizacji korzystających z nowoczesnych pipeline’ów budowania aplikacji. W opisanym incydencie celem stał się ekosystem pakietów NPM powiązanych z Jscrambler. Napastnik opublikował złośliwe wersje bibliotek, które podczas instalacji uruchamiały dodatkowy kod i dostarczały wieloplatformowe oprogramowanie kradnące dane.

To szczególnie niebezpieczny scenariusz, ponieważ kompromitacja następuje na etapie pobierania zaufanej zależności. Oznacza to, że ofiarą może paść zarówno pojedynczy programista, jak i zautomatyzowane środowisko CI/CD wykorzystujące podatne paczki w procesie budowania.

W skrócie

  • Złośliwe wersje pakietów Jscrambler zostały opublikowane po przejęciu poświadczeń używanych do publikacji w NPM.
  • Atak rozpoczął się 11 lipca 2026 roku i objął kilka wydań głównej paczki oraz komponenty zależne.
  • Złośliwy kod wykorzystywał mechanizm preinstall, aby automatycznie uruchomić łańcuch infekcji.
  • Payload dostarczał binaria dla Linux, macOS i Windows.
  • Celem malware były poświadczenia, tokeny, klucze API i inne sekrety przechowywane na stacjach roboczych oraz w środowiskach operatorskich.
  • Za pierwszą czystą wersję po incydencie uznano wydanie 8.22.

Kontekst / historia

Incydent wpisuje się w rosnący trend ataków wymierzonych w rejestry pakietów, zależności open source oraz procesy CI/CD. Cyberprzestępcy coraz częściej koncentrują się na zaufanych komponentach wykorzystywanych przez programistów, ponieważ umożliwia to osiągnięcie szerokiej skali infekcji przy relatywnie niewielkim wysiłku.

W tym przypadku zagrożenie miało szczególną wagę, ponieważ pakiety Jscrambler są związane z ochroną kodu JavaScript i mogą występować jako element większych projektów. Według ujawnionych informacji atakujący wykorzystał przejęte poświadczenia publikacyjne do opublikowania zmodyfikowanych wersji bibliotek. W trakcie reakcji na incydent pojawiały się kolejne złośliwe iteracje, co sugeruje, że napastnik przez pewien czas utrzymywał możliwość dalszego publikowania pakietów.

Telemetria wskazywała, że zanim szkodliwe wersje zostały usunięte i zastąpione czystymi wydaniami, zostały pobrane łącznie 1479 razy. To pokazuje, że nawet krótkie okno ekspozycji może przełożyć się na realną liczbę potencjalnie skompromitowanych środowisk.

Analiza techniczna

Techniczny mechanizm ataku opierał się na nadużyciu skryptu instalacyjnego. Złośliwe wydania zawierały hook preinstall, który uruchamiał się automatycznie w chwili instalacji pakietu przez NPM. Taka technika jest skuteczna, ponieważ wykonanie następuje jeszcze zanim biblioteka zostanie faktycznie użyta przez aplikację lub pipeline budowania.

Analiza wskazała obecność dodatkowych plików w katalogu dist/, odpowiedzialnych za inicjalizację właściwego ładunku. Łańcuch infekcji uruchamiał skrypt startowy, a następnie ładował binarium dopasowane do systemu operacyjnego ofiary. Dzięki temu ten sam zestaw złośliwych pakietów mógł skutecznie infekować środowiska Linux, macOS i Windows.

Sam malware został napisany w Rust, co sprzyja budowie przenośnych binariów i może utrudniać analizę statyczną. Funkcjonalność wskazywała na zaawansowanego stealera informacji. Złośliwe oprogramowanie zbierało poświadczenia i sekrety z maszyn deweloperskich oraz systemów operatorskich, w tym tokeny, klucze API, dane dostępowe do usług chmurowych, informacje z portfeli kryptowalutowych, frazy seed, ustawienia narzędzi AI dla programistów, konfiguracje serwerów MCP, dane z komunikatorów i aplikacji współpracy, informacje z przeglądarek, sesje Steam oraz wpisy z systemowych keyringów.

Zaobserwowano również funkcje rekonesansu hosta, próby uzyskania podwyższonych uprawnień oraz wdrażania mechanizmów trwałości. Malware eksfiltrował dane z użyciem połączeń TLS i przygotowywał żądania do interfejsów API chmurowych oraz orkiestracyjnych z wykorzystaniem przechwyconych poświadczeń. Oznacza to, że incydent mógł prowadzić nie tylko do kradzieży lokalnych sekretów, ale także do dalszej kompromitacji kont, usług cloud i zasobów produkcyjnych.

Konsekwencje / ryzyko

Skutki takiego ataku mogą wykraczać daleko poza jednorazową infekcję pojedynczej stacji roboczej. Środowiska deweloperskie bardzo często przechowują dostęp do repozytoriów kodu, rejestrów kontenerów, platform CI/CD, usług chmurowych, sekretów aplikacyjnych i systemów komunikacji wewnętrznej. Przejęcie tych danych otwiera napastnikowi drogę do kolejnych etapów operacji.

W praktyce zagrożenie może obejmować modyfikację kodu źródłowego, publikację złośliwych buildów, nieautoryzowany dostęp do infrastruktury chmurowej, eskalację uprawnień w usługach operatorskich oraz naruszenie danych klientów. Ryzyko jest szczególnie wysokie wtedy, gdy podatne wersje zostały zainstalowane nie tylko na laptopach programistów, lecz także w systemach automatycznego budowania.

Jeżeli złośliwe paczki trafiły do pipeline’ów CI/CD, kompromitacji mogły ulec zmienne środowiskowe, tokeny publikacyjne, klucze do repozytoriów, sekrety używane przez procesy deploymentu oraz poświadczenia chmurowe. Taki scenariusz może przekształcić lokalny incydent w pełnoskalowe naruszenie bezpieczeństwa organizacji.

Rekomendacje

Organizacje korzystające z Jscrambler lub zależnych pakietów NPM powinny w pierwszej kolejności ustalić, czy złośliwe wersje pojawiły się w ich środowisku. Należy przeanalizować lokalne lockfile, historię buildów CI/CD, cache menedżerów pakietów, artefakty pipeline’ów oraz obrazy kontenerowe budowane w okresie ekspozycji.

Kolejnym krokiem powinno być natychmiastowe usunięcie złośliwych wersji i przejście na czyste wydania. Trzeba jednak podkreślić, że samo odinstalowanie pakietu nie rozwiązuje problemu. Każdy system, na którym mogło dojść do instalacji podatnej wersji, należy traktować jako potencjalnie skompromitowany i objąć pełną analizą pod kątem malware, trwałości oraz nieautoryzowanych zmian.

Niezbędna jest również rotacja wszystkich poświadczeń, które mogły znajdować się na zagrożonych hostach. Dotyczy to haseł, tokenów dostępowych, kluczy API, sekretów CI/CD, poświadczeń do chmury, kluczy SSH oraz danych używanych w narzędziach współpracy i komunikacji. W przypadku kont uprzywilejowanych warto przeprowadzić dodatkowy przegląd logów uwierzytelnienia i aktywności API w usługach chmurowych.

  • Wymusić pinowanie wersji i przegląd zmian w zależnościach przed wdrożeniem.
  • Blokować lub monitorować skrypty install, preinstall i postinstall.
  • Stosować narzędzia do oceny ryzyka pakietów open source.
  • Oddzielać środowiska deweloperskie od poświadczeń produkcyjnych.
  • Wdrażać krótkowieczne tokeny oraz zasadę najmniejszych uprawnień.
  • Monitorować ruch wychodzący i wykrywać nietypowe połączenia z hostów deweloperskich.
  • Regularnie inwentaryzować sekrety przechowywane na stacjach roboczych.

Podsumowanie

Atak na pakiety Jscrambler pokazuje, jak groźne może być przejęcie poświadczeń publikacyjnych w ekosystemie open source. W tym przypadku wykorzystanie hooka preinstall pozwoliło uruchomić wieloplatformowego stealera napisanego w Rust i skierowanego przeciwko środowiskom deweloperskim oraz operatorskim.

Największe ryzyko dotyczy organizacji, w których podatne wersje zostały zainstalowane na maszynach użytkowników lub w pipeline’ach CI/CD. Priorytetem powinny być identyfikacja ekspozycji, analiza hostów, usunięcie zagrożenia oraz pełna rotacja wszystkich sekretów, które mogły zostać przejęte.

Źródła

  1. SecurityWeek — Multiple Jscrambler Packages Impacted by Supply Chain Attack — https://www.securityweek.com/multiple-jscrambler-packages-impacted-by-supply-chain-attack/
  2. Jscrambler — Security advisory / incident response communication — https://jscrambler.com/
  3. Socket — Threat analysis of the malicious Jscrambler packages — https://socket.dev/

11 starych shimów UEFI podpisanych przez Microsoft może osłabić ochronę Secure Boot

Cybersecurity news

Wprowadzenie do problemu / definicja

Badacze bezpieczeństwa ujawnili problem dotyczący 11 historycznych wersji linuxowych bootloaderów typu shim, które mimo upływu lat nadal pozostawały podpisane i akceptowane w łańcuchu zaufania UEFI Secure Boot. Oznacza to, że legalnie podpisany, ale podatny komponent rozruchowy może zostać użyty do uruchomienia nieautoryzowanego kodu jeszcze przed startem systemu operacyjnego.

W praktyce nie chodzi o nowy błąd w samym mechanizmie UEFI, lecz o słabość procesu wycofywania zaufania do starych binariów. To pokazuje, że integralność rozruchu zależy nie tylko od podpisów cyfrowych, ale również od skutecznej revokacji podatnych komponentów.

W skrócie

  • Problem dotyczy 11 starych wersji bootloadera shim, głównie 0.9 i starszych.
  • Podpisane binaria były nadal akceptowane przez wiele platform korzystających z Microsoft Corporation UEFI CA 2011.
  • Atakujący może użyć takiego komponentu do uruchomienia złośliwego kodu we wczesnej fazie bootowania.
  • Skutkiem może być obejście Secure Boot, instalacja trwałego bootkita UEFI i ukrycie aktywności przed systemem operacyjnym.
  • Microsoft objął wskazane binaria revokacją w aktualizacji DBX z czerwca 2026 roku, ale poziom ochrony zależy od faktycznego wdrożenia tej aktualizacji.

Kontekst / historia

Shim to niewielki pośredni bootloader UEFI, powszechnie wykorzystywany przez dystrybucje Linuksa do pracy z włączonym Secure Boot. Firmware UEFI weryfikuje jego podpis względem zaufanego certyfikatu, a następnie shim sprawdza kolejny etap łańcucha rozruchowego, najczęściej GRUB2, przy użyciu osadzonego certyfikatu dostawcy.

Model ten od lat umożliwia dostawcom korzystanie z ekosystemu Secure Boot bez potrzeby posiadania własnych kluczy OEM. Problem pojawia się wtedy, gdy historyczne i podatne wersje takiego komponentu nadal pozostają zaufane, mimo że nie spełniają już współczesnych wymagań bezpieczeństwa.

Opisany przypadek został przedstawiony jako problem łańcucha dostaw i procesu revokacji. Podatne bootloadery mogły być wykonywane nawet na aktualnych systemach, ponieważ nie zostały odpowiednio wcześnie dopisane do bazy zablokowanych podpisów DBX.

Analiza techniczna

Technicznie atak polega na wykorzystaniu starego, ale nadal zaufanego shima jako legalnego punktu wejścia do uruchomienia dalszych podatnych lub złośliwych elementów rozruchowych. Jeśli platforma ufa podpisowi Microsoft dla zewnętrznych komponentów UEFI, firmware zaakceptuje taki plik podczas startu systemu.

Następnie napastnik może wykorzystać słabości dawnych implementacji mechanizmów revokacji i walidacji, aby załadować nieautoryzowany kod jeszcze przed inicjalizacją jądra. Opisane scenariusze obejmują obchodzenie mechanizmów takich jak MOK denylist oraz SBAT, które normalnie mają ograniczać użycie starych i podatnych komponentów rozruchowych.

Jeśli system nadal akceptuje dawny certyfikat lub konkretne binarium nie zostało skutecznie zablokowane na poziomie DBX, możliwa staje się podmiana aktualnego shima na starszy wariant. Taki model przypomina koncepcję BYOVD, ale przeniesioną do etapu pre-OS: zamiast podatnego sterownika do działającego systemu, atakujący wnosi podpisany, lecz podatny komponent rozruchowy do samego łańcucha bootowania.

Efektem może być uzyskanie egzekucji kodu przed uruchomieniem systemu operacyjnego, co znacząco zwiększa możliwości ukrycia aktywności, utrwalenia obecności oraz obchodzenia mechanizmów obronnych działających dopiero po starcie systemu.

Konsekwencje / ryzyko

Najpoważniejszą konsekwencją jest możliwość obejścia Secure Boot mimo formalnie poprawnej konfiguracji platformy. Organizacja może więc błędnie zakładać, że stacje robocze i serwery są chronione zgodnie z polityką bezpieczeństwa rozruchu, podczas gdy w rzeczywistości pozostają podatne na uruchomienie nieautoryzowanego kodu.

  • instalacja trwałych bootkitów UEFI,
  • ładowanie niepodpisanych lub złośliwych komponentów jądra,
  • obchodzenie narzędzi EDR i mechanizmów telemetrycznych,
  • utrzymanie persystencji po restarcie, a niekiedy także po reinstalacji systemu,
  • zwiększenie skuteczności ataków na stacje administratorskie, środowiska recovery i nośniki serwisowe.

Warunkiem wykorzystania problemu jest zwykle posiadanie uprawnień administracyjnych albo możliwość modyfikacji procesu rozruchu i zawartości EFI System Partition. Nie jest to zatem prosty wektor masowego ataku, ale w scenariuszach post-exploitation ma bardzo wysoką wartość operacyjną.

Rekomendacje

Organizacje powinny potraktować ten problem jako element hardeningu firmware, zarządzania aktualizacjami rozruchu oraz kontroli zaufanych komponentów UEFI. Samo posiadanie włączonego Secure Boot nie gwarantuje pełnej ochrony, jeśli proces revokacji nie został właściwie wdrożony.

  • wdrożyć aktualizacje Microsoft DBX oraz poprawki producentów systemów i sprzętu związane z Secure Boot,
  • sprawdzić, czy nośniki recovery, obrazy PXE, narzędzia serwisowe i rozwiązania backupowe nie zawierają historycznych wersji shim,
  • przeprowadzić inwentaryzację plików EFI na partycji ESP oraz w obrazach instalacyjnych i serwisowych,
  • zweryfikować, czy platformy stosują aktualne polityki revokacji SBAT i DBX,
  • ograniczyć możliwość modyfikowania ustawień firmware i partycji ESP do ściśle kontrolowanych ról administracyjnych,
  • monitorować podmiany plików EFI, zmiany w NVRAM oraz nietypowe wpisy boot managera,
  • testować procedury odzyskiwania po incydencie z uwzględnieniem kompromitacji pre-OS.

W środowiskach o podwyższonych wymaganiach bezpieczeństwa warto dodatkowo rozważyć ograniczenie zaufania do certyfikatów third-party UEFI tam, gdzie jest to operacyjnie możliwe. Szczególną uwagę należy zwrócić na urządzenia korzystające z wielu narzędzi rozruchowych dostawców zewnętrznych.

Podsumowanie

Sprawa 11 starych shimów UEFI pokazuje, że bezpieczeństwo Secure Boot nie kończy się na samym podpisie cyfrowym. Równie ważne jest terminowe wycofywanie zaufania do historycznych binariów oraz kontrola komponentów obecnych na urządzeniu, w firmware i w używanych obrazach serwisowych.

To istotny sygnał dla zespołów bezpieczeństwa, że obrona łańcucha rozruchu musi obejmować nie tylko system operacyjny, ale również DBX, SBAT, partycję ESP oraz cały ekosystem bootowalnych narzędzi. W przeciwnym razie nawet poprawnie skonfigurowane środowisko może pozostawać podatne na ataki w fazie pre-OS.

Źródła

  1. The Hacker News — https://thehackernews.com/2026/07/11-old-microsoft-signed-linux-uefi.html
  2. CERT/CC Vulnerability Note VU#616257 — https://www.kb.cert.org/vuls/id/616257
  3. ESET Research: Under the cloak of UEFI Secure Boot: Introducing CVE-2024-7344 — https://www.welivesecurity.com/en/eset-research/under-cloak-uefi-secure-boot-introducing-cve-2024-7344/
  4. ESET Research: BlackLotus UEFI bootkit: Myth confirmed — https://www.welivesecurity.com/2023/03/01/blacklotus-uefi-bootkit-myth-confirmed/

Złośliwe wydanie pakietu jscrambler w npm uruchamia infostealera już podczas instalacji

Cybersecurity news

Wprowadzenie do problemu / definicja

Ataki na łańcuch dostaw oprogramowania coraz częściej wykorzystują zaufane pakiety publikowane w publicznych rejestrach. W opisywanym incydencie problem dotyczy pakietu jscrambler w ekosystemie npm, gdzie złośliwe wydanie zostało opublikowane z użyciem skompromitowanych poświadczeń publikacyjnych.

Najpoważniejszym elementem tego zdarzenia jest fakt, że malware uruchamia się automatycznie już na etapie instalacji lub wykonania pakietu. Oznacza to, że samo pobranie zależności przez stację deweloperską albo pipeline CI/CD mogło doprowadzić do przejęcia sekretów i danych uwierzytelniających.

W skrócie

W lipcu 2026 roku ujawniono złośliwe wydania pakietu jscrambler dostępnego w npm. Jedna z najczęściej opisywanych wersji, 8.14.0, zawierała mechanizm preinstall, który rozpakowywał i uruchamiał natywny ładunek dla systemów Linux, Windows i macOS.

Analizy wskazują, że był to wieloplatformowy infostealer napisany w Rust, ukierunkowany na kradzież poświadczeń, tokenów, sesji przeglądarkowych, sekretów chmurowych oraz danych przechowywanych przez narzędzia deweloperskie i asystentów AI. Dalsze ustalenia sugerowały również, że zagrożenie nie ograniczało się wyłącznie do skryptów instalacyjnych, ponieważ w kolejnych wariantach dropper był przenoszony do głównej logiki pakietu lub interfejsu CLI.

Kontekst / historia

jscrambler jest pakietem używanym w procesach build i ochrony kodu JavaScript, dlatego naturalnie występuje w środowiskach deweloperskich oraz potokach CI/CD. Takie systemy mają zwykle dostęp do kluczy API, tokenów publikacyjnych, sekretów chmurowych, repozytoriów kodu i artefaktów wdrożeniowych, co czyni je szczególnie atrakcyjnym celem dla operatorów malware.

Incydent został zauważony szybko po publikacji złośliwego wydania, jednak przy malware uruchamianym już podczas instalacji nawet bardzo krótki czas ekspozycji może wystarczyć do przejęcia wrażliwych danych. Producent potwierdził, że źródłem problemu były skompromitowane poświadczenia do publikacji w npm, a bezpieczną ścieżką remediacji miała być aktualizacja do czystego wydania wskazanego przez dostawcę.

Analiza techniczna

Złośliwa wersja 8.14.0 istotnie różniła się od wcześniejszego wydania 8.13.0. Do paczki dodano między innymi pliki dist/setup.js oraz dist/intro.js. Mimo rozszerzenia .js, jeden z tych plików pełnił rolę kontenera zawierającego skompresowane natywne binaria dla trzech głównych platform.

Mechanizm działania był prosty, ale skuteczny. Skrypt instalacyjny identyfikował system operacyjny ofiary, wybierał odpowiedni payload, zapisywał go w katalogu tymczasowym pod losową nazwą, nadawał mu prawa wykonywania i uruchamiał proces w tle, odłączając go od procesu npm install.

Taka technika utrudnia analizę, ponieważ kluczowa część logiki ataku znajduje się w skompilowanym pliku binarnym, a nie w czytelnym kodzie JavaScript. To ogranicza skuteczność prostych kontroli opartych wyłącznie na przeglądzie skryptów źródłowych.

  • kradzież poświadczeń do usług chmurowych,
  • pozyskiwanie tokenów używanych przez pipeline’y CI/CD,
  • wyciąganie haseł i cookies zapisanych w przeglądarkach,
  • przejmowanie sesji narzędzi współpracy i komunikatorów,
  • dostęp do danych portfeli kryptowalutowych,
  • kradzież sekretów oraz konfiguracji używanych przez narzędzia AI i środowiska programistyczne.

W części analiz zwrócono również uwagę na bardziej zaawansowane cechy malware, takie jak mechanizmy utrudniające debugowanie, persistence po restarcie systemu oraz komunikacja z infrastrukturą operatora. To sugeruje, że nie był to prosty downloader, lecz dojrzały infostealer zaprojektowany z myślą o środowiskach deweloperskich.

Szczególnie groźny okazał się późniejszy wariant ataku, w którym złośliwy kod został przeniesiony z etapu preinstall do głównej logiki pakietu lub CLI. W takim scenariuszu samo użycie mechanizmów typu --ignore-scripts nie daje pełnej ochrony.

Konsekwencje / ryzyko

Ryzyko związane z tym incydentem wykracza daleko poza pojedynczą stację roboczą. Jeśli złośliwy pakiet został zainstalowany na build runnerze, agencie CI/CD lub w środowisku release engineering, skutki mogły objąć nie tylko wyciek sekretów, ale też naruszenie integralności całego łańcucha dostaw.

  • przejęcie kluczy chmurowych i tokenów dostępowych,
  • kompromitację repozytoriów i procesu publikacji artefaktów,
  • kradzież kodu źródłowego i danych projektowych,
  • przejęcie sesji użytkowników oraz kont uprzywilejowanych,
  • dalsze rozprzestrzenianie się ataku przez zaufane procesy developerskie.

Z operacyjnego punktu widzenia najważniejsze jest założenie, że każdy sekret dostępny dla hosta, na którym uruchomiono złośliwe wydanie, należy traktować jako skompromitowany. Dotyczy to nie tylko tokenów npm czy GitHub, ale również danych zapisanych w przeglądarkach, agentach chmurowych, menedżerach haseł oraz konfiguracjach narzędzi wspierających programowanie.

Rekomendacje

Organizacje, które mogły zetknąć się z zagrożonymi wersjami, powinny potraktować sprawę jak pełnoprawny incydent bezpieczeństwa, a nie jedynie problem administracyjny związany z aktualizacją zależności.

  • Zidentyfikować ekspozycję — przeanalizować lockfile, cache menedżera pakietów, logi buildów oraz historię instalacji pod kątem obecności zagrożonych wersji jscrambler.
  • Usunąć zagrożone wydania — zablokować złośliwe wersje w politykach zależności i wymusić aktualizację do bezpiecznego wydania.
  • Traktować host jako skompromitowany — jeśli pakiet został uruchomiony, należy przeprowadzić izolację systemu, analizę artefaktów, przegląd procesów potomnych, katalogów tymczasowych, mechanizmów persistence oraz ruchu sieciowego.
  • Rotować wszystkie sekrety — wymienić klucze API, tokeny publikacyjne, poświadczenia chmurowe, sekrety CI/CD, sesje przeglądarkowe i dane dostępowe do narzędzi deweloperskich.
  • Sprawdzić logi sieciowe i telemetrykę endpointów — zwłaszcza dla hostów deweloperskich i runnerów CI w czasie odpowiadającym instalacji pakietu.
  • Wdrożyć kontrolę nowych wydań zależności — stosować opóźnienie akceptacji świeżo opublikowanych wersji, skanowanie pakietów pod kątem nietypowych skryptów instalacyjnych oraz polityki allowlist.
  • Wzmocnić ochronę łańcucha dostaw — wykorzystać MFA dla kont publikacyjnych, separację poświadczeń release, podpisywanie artefaktów, monitoring różnic w paczkach i sandboxing instalacji zależności.
  • Nie polegać wyłącznie na wyłączeniu install scripts — ten incydent pokazał, że złośliwa logika może zostać przeniesiona do kodu wykonywanego po imporcie lub uruchomieniu pakietu.

Podsumowanie

Kompromitacja pakietu jscrambler w npm to kolejny przykład dojrzałego ataku na software supply chain, ukierunkowanego na środowiska o wysokiej wartości operacyjnej, takie jak stacje deweloperskie i pipeline’y CI/CD. Technicznie incydent wyróżniał się użyciem wieloplatformowego natywnego payloadu ukrytego w paczce JavaScript oraz mechanizmem automatycznego uruchamiania podczas instalacji lub wykonania pakietu.

Najważniejszy wniosek jest praktyczny: w przypadku złośliwych zależności publikowanych w zaufanych rejestrach czas reakcji liczony jest w minutach, ale skutki kompromitacji mogą utrzymywać się znacznie dłużej. Dlatego organizacje powinny łączyć szybkie wykrywanie, kontrolę publikacji i instalacji zależności, ścisłe zarządzanie sekretami oraz gotowość do obsługi incydentów w obszarze DevSecOps.

Źródła

  1. The Hacker News — https://thehackernews.com/2026/07/compromised-jscrambler-8140-npm-release.html
  2. StepSecurity — jscrambler npm package publishes malicious preinstall binary — https://www.stepsecurity.io/blog/jscrambler-npm-package-publishes-malicious-preinstall-binary
  3. npm — jscrambler package page — https://www.npmjs.com/package/jscrambler