
Wprowadzenie do problemu / definicja
Ataki na łańcuch dostaw systemu należą do najpoważniejszych zagrożeń w cyberbezpieczeństwie, ponieważ wykorzystują zaufanie do popularnych komponentów, usług i dostawców. Incydent związany z Polyfill.io pokazuje, jak przejęcie kontroli nad powszechnie używaną usługą JavaScript może przełożyć się na masowe dostarczanie złośliwego kodu użytkownikom odwiedzającym legalne strony internetowe.
W tym przypadku problem nie polegał na bezpośrednim włamaniu do każdej ofiary z osobna. Napastnicy przejęli kontrolę nad elementem wykorzystywanym przez ogromną liczbę witryn, dzięki czemu mogli wpływać na treść skryptów ładowanych w przeglądarkach odwiedzających.
W skrócie
Polyfill.io był używany do zapewniania zgodności funkcji JavaScript w starszych i mniej typowych przeglądarkach. Po zmianach właścicielskich i przejęciu kontroli nad usługą do serwowanych skryptów dodano złośliwy kod, który selektywnie przekierowywał część użytkowników, głównie mobilnych, do niepożądanych stron.
Skala incydentu była bardzo duża, ponieważ problem mógł objąć ponad 100 tys. witryn. Najnowsze analizy wskazują, iż operacja nie była związana wyłącznie z chińską infrastrukturą techniczną, ale również z aktorami powiązanymi z Koreą Północną.
Kontekst / historia
Przez lata Polyfill.io było wygodnym rozwiązaniem dla deweloperów, którzy chcieli automatycznie dostarczać brakujące funkcje JavaScript w zależności od możliwości przeglądarki użytkownika. Taki model upraszczał wdrożenia, ale jednocześnie tworzył pojedynczy punkt zaufania, od którego zależało bezpieczeństwo wielu serwisów.
W 2024 roku usługa znalazła się pod kontrolą nowego podmiotu powiązanego z infrastrukturą CDN. niedługo potem badacze bezpieczeństwa wykryli, iż skrypty serwowane z domeny Polyfill zawierają nieautoryzowane modyfikacje. Początkowo uwaga skupiała się na technicznym tle operacji i infrastrukturze wykorzystywanej do dostarczania kodu, jednak dalsze ustalenia połączyły incydent z szerszym zapleczem operacyjnym.
Nowe informacje, oparte między innymi na danych pozyskanych z infekcji infostealerem, wskazują na dostęp do paneli zarządzania domenami i usługami ochronnymi, a także na ślady aktywności sugerujące udział aktorów powiązanych z Koreą Północną. To znacząco podnosi wagę incydentu, ponieważ przesuwa go z poziomu klasycznego nadużycia reklamowego do obszaru operacji o potencjalnym tle państwowym lub finansującym działalność sponsorowaną przez państwo.
Analiza techniczna
Mechanizm ataku był prosty, ale wyjątkowo skuteczny. Strony internetowe odwołujące się do zewnętrznego skryptu Polyfill zakładały, iż otrzymują zaufany kod odpowiedzialny jedynie za zgodność przeglądarkową. Po przejęciu usługi napastnicy mogli zmieniać zawartość odpowiedzi bez ingerencji w same witryny klientów.
Złośliwy JavaScript był dostarczany selektywnie, co oznacza, iż nie każdy użytkownik widział identyczne zachowanie. Według analiz szczególnie często celem byli użytkownicy urządzeń mobilnych. Kod zawierał również mechanizmy utrudniające detekcję, dzięki czemu administratorzy stron mogli przez dłuższy czas nie zauważyć problemu.
Z technicznego punktu widzenia incydent obnażył ryzyko dynamicznego ładowania zależności z zewnętrznych źródeł bez pełnej kontroli integralności. Gdy aplikacja pobiera skrypt z domeny strony trzeciej, powierzchnia ataku obejmuje nie tylko sam kod biblioteki, ale także DNS, CDN, panele administracyjne, proces publikacji oraz bezpieczeństwo właściciela usługi.
- modyfikacja odpowiedzi JavaScript po stronie dostawcy,
- selektywne dostarczanie złośliwego kodu w zależności od typu użytkownika lub urządzenia,
- przekierowania do stron hazardowych i dla dorosłych,
- wykorzystanie infrastruktury zewnętrznej jako zasłony organizacyjnej,
- możliwość użycia podobnego modelu do phishingu, kradzieży sesji lub dalszego ładowania malware.
Konsekwencje / ryzyko
Najpoważniejszym skutkiem incydentu była utrata integralności treści dostarczanej użytkownikom przez legalne i często zaufane serwisy. Z perspektywy odwiedzającego wszystko mogło wyglądać normalnie aż do momentu przekierowania lub uruchomienia nieoczekiwanego kodu w przeglądarce.
Dla organizacji oznacza to nie tylko ryzyko techniczne, ale również reputacyjne. choćby jeżeli sama infrastruktura strony nie została bezpośrednio zhakowana, użytkownik końcowy obciąża odpowiedzialnością właściciela witryny. Dodatkowo podobny wektor może zostać wykorzystany do znacznie groźniejszych działań niż same przekierowania, takich jak przechwytywanie danych sesyjnych, fingerprinting, oszustwa w przeglądarce czy ładowanie kolejnych komponentów ataku.
Szczególnie niebezpieczna jest skala oddziaływania. Jedna kompromitacja po stronie dostawcy może jednocześnie wpłynąć na dziesiątki lub setki tysięcy witryn, co czyni tego typu ataki wyjątkowo efektywnymi z punktu widzenia napastników.
Rekomendacje
Organizacje powinny rozpocząć od pełnego przeglądu wszystkich zewnętrznych zależności JavaScript wykorzystywanych w aplikacjach webowych. Każdy skrypt ładowany z domeny strony trzeciej należy traktować jako element wysokiego ryzyka i ocenić, czy jego użycie jest przez cały czas uzasadnione.
- usunąć lub zastąpić zależności od Polyfill.io i podobnych zewnętrznych usług,
- hostować krytyczne biblioteki lokalnie w kontrolowanym repozytorium,
- stosować mechanizmy Subresource Integrity tam, gdzie jest to możliwe,
- ograniczać ładowanie zewnętrznych skryptów przy użyciu poprawnie skonfigurowanej Content Security Policy,
- monitorować zmiany właścicielskie, domenowe i infrastrukturalne w łańcuchu dostaw front-endu,
- utrzymywać Software Bill of Materials obejmujący również komponenty klienckie,
- wdrożyć detekcję anomalii w odpowiedziach JavaScript, przekierowaniach i ruchu mobilnym,
- analizować logi CDN, WAF oraz telemetrię przeglądarkową pod kątem nieoczekiwanych zmian.
Zespoły bezpieczeństwa powinny także traktować front-end jako pełnoprawny obszar ochrony łańcucha dostaw. W praktyce wiele organizacji skupia się na backendzie, kontenerach i pipeline’ach CI/CD, podczas gdy zależności uruchamiane bezpośrednio w przeglądarce pozostają słabiej kontrolowane.
Podsumowanie
Incydent Polyfill jest jednym z najbardziej wyrazistych przykładów ryzyka wynikającego z bezkrytycznego zaufania do zewnętrznych komponentów JavaScript. Napastnicy nie musieli atakować każdej strony osobno — wystarczyło przejęcie jednego szeroko używanego elementu infrastruktury, aby wpłynąć na ogromną liczbę serwisów i użytkowników.
Nowe ustalenia łączące operację z aktorami powiązanymi z Koreą Północną dodatkowo podnoszą znaczenie sprawy. Dla branży jest to czytelny sygnał, iż bezpieczeństwo łańcucha dostaw musi obejmować nie tylko komponenty serwerowe, ale również wszystkie zasoby ładowane po stronie klienta.
Źródła
- SecurityWeek – Polyfill Supply Chain Attack Impacting 100k Sites Linked to North Korea
- Hudson Rock – analiza dotycząca powiązań operacji i danych z infostealera
- Sansec – Polyfill supply chain attack hits 100K+ sites
- Cloudflare – ostrzeżenia i działania ochronne związane z Polyfill
- Google – guidance dotyczący ryzyka związanego z Polyfill.io






