
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
Badacze bezpieczeństwa opisali kampanię malware wymierzoną w strony działające na WordPressie, w której infrastruktura sterująca nie opiera się na klasycznych serwerach C2, lecz na danych ukrywanych w komentarzach profili społeczności Steam. To przykład nadużycia zaufanej platformy internetowej do dostarczania poleceń i adresów kolejnych komponentów złośliwego kodu.
Mechanizm ten łączy steganografię tekstową, ukrywanie danych w niewidocznych znakach Unicode oraz trwały backdoor po stronie serwera. W efekcie atakujący mogą zarówno wstrzykiwać złośliwy JavaScript do witryny, jak i utrzymywać długoterminowy dostęp do jej plików.
W skrócie
Kampania objęła blisko 2 tysiące stron WordPress i została powiązana z mechanizmem pobierania ukrytych danych z wybranych profili Steam. Złośliwy kod odczytywał komentarze, wyodrębniał z nich niewidoczne znaki Unicode, a następnie dekodował adres prowadzący do zewnętrznego skryptu JavaScript.
Równolegle infekcja instalowała backdoora po stronie serwera, który reagował na odpowiednio przygotowane żądania POST. Dzięki temu operatorzy mogli zdalnie modyfikować kod w katalogach motywów i wtyczek oraz utrzymywać kontrolę nad skompromitowaną witryną.
- Skala kampanii: około 1 980 stron WordPress
- Nietypowy kanał C2: komentarze profili Steam
- Ukrywanie danych: niewidoczne znaki Unicode
- Efekt końcowy: wstrzykiwanie JavaScript i trwały backdoor PHP
Kontekst / historia
Pierwsze wykrycie kampanii miało nastąpić w lipcu 2025 roku, a jej szersze omówienie pojawiło się w analizach badaczy oraz mediach branżowych w maju i czerwcu 2026 roku. Nie wskazano jednego potwierdzonego wektora początkowej infekcji, ale najbardziej prawdopodobne scenariusze obejmują przejęte dane administracyjne, skompromitowane poświadczenia FTP lub SFTP, podatne motywy i wtyczki oraz możliwy problem w łańcuchu dostaw.
Istotą tej kampanii jest odejście od tradycyjnego modelu komunikacji z serwerem dowodzenia. Zamiast odwoływać się bezpośrednio do infrastruktury przestępców, malware korzysta z publicznie dostępnej, legalnej platformy, co utrudnia wykrywanie anomalii i opóźnia reakcję obrońców.
Analiza techniczna
Łańcuch ataku składa się z dwóch głównych elementów: komponentu klienckiego odpowiedzialnego za pobranie i dekodowanie danych z profili Steam oraz komponentu serwerowego działającego jako backdoor. Oba moduły współpracują ze sobą, zapewniając zarówno dostarczenie zewnętrznego ładunku, jak i utrzymanie dostępu do systemu.
W pierwszym etapie malware uruchamiane podczas ładowania strony pobiera zawartość wybranego profilu Steam i analizuje sekcję komentarzy. Operacja może być wspierana przez mechanizm cache oparty o transienty WordPress, co ogranicza liczbę żądań i zmniejsza ryzyko wzbudzenia podejrzeń.
Najbardziej charakterystycznym elementem kampanii jest sposób kodowania danych. Napastnicy osadzali ładunek w pozornie nieszkodliwych komentarzach, czasem przypominających zwykły tekst lub dekoracyjne układy znaków. W rzeczywistości właściwe informacje były zapisane przy użyciu zestawu niewidocznych znaków Unicode, takich jak zero-width joiner czy zero-width non-joiner. Dekoder ignorował znaki widoczne, mapował ukryte znaki na wartości liczbowe, odtwarzał strumień bitów i rekonstruował docelowy adres.
W części próbek występowała dodatkowa warstwa ochrony danych oparta na PBKDF2, AES-256-CTR oraz HMAC-SHA256. Po poprawnym odkodowaniu malware budowało URL prowadzący do zewnętrznego pliku JavaScript, który następnie był dołączany do frontendu witryny przy użyciu standardowego mechanizmu WordPress. Nadawanie nazw przypominających popularne biblioteki miało utrudnić wykrycie i analizę.
Drugi tor działania obejmował backdoora po stronie serwera. Złośliwy kod analizował przychodzące żądania POST i reagował na określone ciasteczka, które mogły służyć do sprawdzenia aktywności implantu lub przekazania zakodowanego w base64 kodu PHP. Następnie malware przeszukiwało katalogi motywów i wtyczek, odnajdywało odpowiednie znaczniki w plikach i podmieniałо fragmenty kodu, co umożliwiało zdalne aktualizowanie infekcji bez ponownego włamania.
Badacze zwrócili też uwagę na techniki unikania detekcji, takie jak zaciemnione łańcuchy znaków, losowo generowane nazwy funkcji, korzystanie ze standardowych API WordPress oraz wyłączenie weryfikacji SSL w żądaniach cURL. W praktyce oznacza to, że malware częściowo wtapia się w normalne działanie aplikacji.
Konsekwencje / ryzyko
Ryzyko związane z tą kampanią jest znaczące zarówno dla operatorów witryn, jak i ich użytkowników. Zainfekowana strona może serwować złośliwy JavaScript wszystkim odwiedzającym, otwierając drogę do przekierowań, oszustw reklamowych, podszywania się pod formularze logowania lub dalszej infekcji po stronie klienta.
Jeszcze poważniejsze skutki wynikają z obecności backdoora po stronie serwera. Taki implant oznacza utratę integralności aplikacji i możliwość zdalnej modyfikacji plików motywów oraz wtyczek. Samo usunięcie pojedynczego skryptu nie gwarantuje odzyskania kontroli nad środowiskiem, jeśli pozostały inne elementy mechanizmu trwałości.
Dodatkowym wyzwaniem jest wykorzystanie zaufanej platformy jako kanału sterującego. Ruch do popularnego serwisu może nie wyglądać podejrzanie w systemach monitoringu sieciowego, zwłaszcza jeśli organizacja nie analizuje nietypowych połączeń wychodzących z serwerów WWW.
- Ryzyko infekcji użytkowników odwiedzających stronę
- Możliwość trwałej modyfikacji plików WordPress
- Utrudnione wykrywanie komunikacji z infrastrukturą atakującego
- Wysokie prawdopodobieństwo ponownej aktywacji malware po niepełnym czyszczeniu
Rekomendacje
W przypadku podejrzenia kompromitacji najbezpieczniejszym rozwiązaniem jest odtworzenie witryny z kopii zapasowej wykonanej przed momentem infekcji. Jeśli nie jest to możliwe, konieczna jest pełna analiza plików aplikacji, motywów, wtyczek, harmonogramów zadań oraz bazy danych.
Zespół odpowiedzialny za bezpieczeństwo powinien przeprowadzić szczegółowe działania dochodzeniowe i naprawcze. W szczególności warto sprawdzić, czy kod strony odwołuje się do profili Steam lub nietypowych zewnętrznych skryptów JavaScript, a także porównać pliki motywów i wtyczek z oryginalnymi wersjami od dostawców.
- Przeanalizować ruch wychodzący z serwera pod kątem połączeń do serwisów społecznościowych i nieznanych domen
- Wyszukać w plikach ukryte znaki Unicode, zaciemnione funkcje i nietypowe wywołania ładowania skryptów
- Skontrolować transienty WordPress oraz inne mechanizmy cache
- Przejrzeć logi HTTP pod kątem podejrzanych żądań POST i niestandardowych ciasteczek
- Wymienić hasła administratorów, dane hostingu oraz poświadczenia FTP i SFTP
- Zaktualizować rdzeń WordPress, motywy i wtyczki oraz usunąć nieużywane komponenty
- Wdrożyć monitoring integralności plików i ograniczyć możliwość bezpośredniej edycji kodu
- Wymusić MFA dla paneli administracyjnych i rozważyć użycie narzędzi EDR lub skanerów malware
Podsumowanie
Opisana kampania pokazuje, że współczesne zagrożenia dla WordPressa coraz częściej łączą nietypowe kanały komunikacji, steganografię oraz mechanizmy trwałości po stronie serwera. Ukrywanie ładunków w komentarzach profili Steam pozwala atakującym korzystać z reputacji legalnej platformy i utrudnia prostą analizę sieciową.
Dla administratorów to wyraźny sygnał, że ochrona WordPressa nie może ograniczać się do aktualizacji samego rdzenia. Równie istotne są kontrola integralności plików, monitoring ruchu wychodzącego, analiza nietypowych zmian w motywach i wtyczkach oraz szybkie reagowanie na wszelkie oznaki zewnętrznego wstrzykiwania skryptów.
Źródła
- BleepingComputer – WordPress malware campaign hides payloads in Steam profiles
https://www.bleepingcomputer.com/news/security/wordpress-malware-campaign-hides-payloads-in-steam-profiles/ - GoDaddy Blog – Malware Targeting WordPress Abuses Steam Community Profiles for Command & Control Operations
https://www.godaddy.com/resources/news/malware-targeting-wordpress-abuses-steam-community-profiles