W nocy z 15 na 16 października część stron, które same zaktualizowały Rank Math PRO, pobrała wersję 3.0.123 ze złośliwym kodem w środku. Taka strona wygląda i działa normalnie, a ktoś obcy może mieć w niej własne konto administratora i hasło do bazy danych. Opisuję, jak sprawdzić, czy to Twój przypadek, i co zrobić, bo przejście na 3.0.124 samo tego nie naprawia.
- Okno ataku trwało 11 godzin. Zainfekowane paczki rozchodziły się od 22:02 15 października do 9:12 16 października czasu polskiego.
- Numer wersji nie przesądza sprawy. Liczy się, kiedy strona pobrała 3.0.123, a strona z wersją 3.0.124 też może być zainfekowana, jeśli po drodze przeszła przez paczkę z tej nocy.
- Darmowy Rank Math z katalogu WordPress.org nie jest objęty incydentem. Problem dotyczy wyłącznie płatnego dodatku PRO.
- Bezpieczna droga to kopia sprzed 15 października. Bez niej trzeba ręcznie usunąć pliki i wpisy w bazie, które złośliwy kod zostawia poza katalogiem wtyczki, i zmienić wszystkie hasła oraz klucze.
- Na 25 instalacjach PRO na naszych serwerach nie znaleźliśmy ani jednej wersji 3.0.123. Uratowało je to, że PRO nie aktualizował się tam od dawna, co samo w sobie jest osobnym ryzykiem.
Co się stało w nocy z 15 na 16 października
Ktoś wstrzyknął złośliwy kod do części paczek Rank Math SEO PRO 3.0.123, które producent rozsyłał jako zwykłą aktualizację. To atak na łańcuch dostaw, czyli włamanie nie na Twoją stronę, a do miejsca, z którego Twoja strona pobiera oprogramowanie. Strona z włączonymi automatycznymi aktualizacjami zrobiła dokładnie to, co powinna, i właśnie dlatego się zaraziła.
Luka dostała numer CVE-2026-111862 i ocenę 9,8 w skali do 10 od Wordfence. Kod po aktywacji zostawia na serwerze ukryte tylne furtki, czyli pliki, przez które atakujący wraca na stronę bez logowania. Kod odtwarza furtkę przy kolejnych odwiedzinach strony, zakłada nieznane konta administratorów, łączy się z domeną rank1cdn[.]com i może wynieść hasła do bazy danych oraz klucze API zapisane w WordPressie. Jeśli Twoja strona pobrała paczkę z tej nocy, sprawa przestaje być aktualizacją wtyczki i staje się usunięciem złośliwego kodu z WordPressa.
Rank Math usunął zainfekowane pliki ze swoich serwerów i wydał czystą wersję 3.0.124. Producent nie podał, ile stron dostało złą paczkę, a w opisie incydentu w SecurityWeek pada zalecenie, żeby stronę, która aktywowała 3.0.123 w tym oknie, traktować jako w pełni przejętą. Tak też do tego podchodzimy.
Jak sprawdzić, czy Twoja strona pobrała zainfekowaną wersję
Najpierw sprawdź, czy w ogóle masz PRO, a potem kiedy dokładnie się aktualizował. W panelu WordPressa wejdź w Wtyczki i poszukaj pozycji Rank Math SEO PRO. Jeśli widzisz tylko Rank Math SEO bez dopisku PRO, incydent Cię nie dotyczy.
Jeśli PRO jest na liście, sam numer wersji niewiele mówi. Zła paczka krążyła tylko przez 11 godzin, więc 3.0.123 pobrane wcześniej albo później może być czyste. Z drugiej strony strona, która w nocy pobrała 3.0.123, a dzień później sama przeszła na 3.0.124, pokazuje dziś bezpieczny numer, choć furtki zostały na serwerze. Dlatego bez daty aktualizacji ani rusz.
Datę znajdziesz na 3 sposoby. Wtyczka z dziennikiem zdarzeń (na przykład WP Activity Log) zapisuje każdą aktualizację z godziną. Bez niej zajrzyj przez FTP albo menedżer plików hostingu do katalogu wp-content/plugins/seo-by-rank-math-pro i sprawdź datę modyfikacji plików. Trzecie źródło to powiadomienia o automatycznych aktualizacjach, które WordPress wysyła na adres administratora.
| Stan wtyczki | Co to znaczy | Co zrobić |
|---|---|---|
| Tylko darmowy Rank Math | Incydent Cię nie dotyczy | Nic |
| PRO starszy niż 3.0.123 | Zła paczka nie dotarła | Wersja 3.0.124 |
| PRO 3.0.123 pobrany poza oknem | Strona najpewniej czysta | Wersja 3.0.124 i przegląd kont |
| PRO 3.0.123 pobrany w nocy 15/16 października | Strona przejęta | Kopia sprzed 15.10 albo czyszczenie |
| PRO 3.0.124, ale w nocy był 3.0.123 | Strona przejęta mimo nowej wersji | Jak wyżej |
| Nie wiesz, kiedy była aktualizacja | Nie da się wykluczyć infekcji | Jak przejętą, aż ustalisz datę |
Ślady, które potwierdzają infekcję, to konta administratorów, których nikt z firmy nie zakładał, odwołania do domeny rank1cdn[.]com w plikach albo w bazie, nieoczekiwane pliki PHP z końcówką .cache, plik udający element rdzenia WordPressa i nowe zadania cron, czyli czynności, które serwer wykonuje sam według harmonogramu. Brak tych śladów nie oznacza jeszcze czystej strony, bo dobrze ukryta furtka nie musi rzucać się w oczy.
Dlaczego samo kliknięcie “Aktualizuj” niczego nie naprawia?
Aktualizacja do 3.0.124 podmienia pliki w katalogu wtyczki, a złośliwy kod z tej nocy nie siedzi tylko tam. Zostawia wpisy w bazie danych, pliki w innych katalogach i zadanie cron, które odtwarza furtkę przy kolejnych odwiedzinach. Nowa wersja wtyczki niczego z tego nie usuwa.

Najprościej porównać to do wymiany zamka w drzwiach po włamaniu, kiedy złodziej zdążył dorobić klucz do bramy garażowej i zostawić uchylone okno w piwnicy. Nowy zamek jest dobry, ale dom dalej stoi otworem. Dlatego przy każdej infekcji powtarzamy klientom to samo: wtyczka bezpieczeństwa nie zrobi za Ciebie sprzątania po włamaniu, a skaner, który dziś nic nie znajduje, mógł po prostu nie znać tej furtki.
Jest też drugi powód, dla którego nie zostawiałbym sprawy na samej aktualizacji. Kod mógł już wynieść hasło do bazy danych zapisane w pliku wp-config.php i klucze API do płatności, poczty czy map. Te dane działają dalej, niezależnie od tego, jaką wersję wtyczki masz dziś na stronie.
Co zrobić krok po kroku, gdy strona pobrała paczkę z tej nocy?
Najkrótsza droga to przywrócenie całej strony, plików i bazy, z kopii zrobionej przed 15 października. Kopia musi pochodzić spoza serwera strony albo z niezależnego systemu kopii hostingu, bo kopia trzymana w tym samym katalogu mogła zostać podmieniona. Po przywróceniu i tak trzeba zmienić hasła, bo dane mogły wyciec, zanim strona wróciła do stanu z kopii.
Gdy takiej kopii nie ma, kolejność jest następująca:
- Zrób kopię obecnego stanu strony. Posłuży do analizy, nie do przywracania.
- Usuń cały katalog Rank Math PRO z serwera. Samo wyłączenie wtyczki w panelu nie wystarcza.
- Usuń z bazy wpisy zostawione przez złośliwy kod i zablokuj domenę rank1cdn[.]com.
- Porównaj pliki rdzenia WordPressa z oryginałem (polecenie
wp core verify-checksumsw WP-CLI) i przejrzyj katalogi pod kątem plików PHP, które nie powinny tam leżeć, w tym plików.cache. - Sprawdź plik
.htaccess, zadania cron i, jeśli masz dostęp SSH, plik z kluczamiauthorized_keys. - Usuń konta administratorów, których nikt w firmie nie zakładał.
- Zmień wszystkie hasła i klucze: konta administratorów, bazę danych, FTP, panel hostingu, klucze API zapisane na stronie oraz klucze bezpieczeństwa w
wp-config.php. - Dopiero teraz zainstaluj czystą wersję 3.0.124 pobraną z konta Rank Math i przez tydzień obserwuj, czy nie pojawiają się nowe konta i pliki.
Jeśli strona to sklep albo trzyma dane klientów, na przykład zgłoszenia z formularzy, potraktuj incydent także jako sprawę prawną. RODO daje 72 godziny od stwierdzenia naruszenia na zgłoszenie go do UODO, gdy wyciek może zagrażać osobom, których dane dotyczą. Podejmij tę decyzję świadomie i ją zapisz, nawet jeśli wyjdzie, że zgłoszenie nie jest potrzebne. Szerszy opis objawów i czyszczenia znajdziesz w poradniku o tym, jak rozpoznać i usunąć wirusa ze strony WordPress.
Co znaleźliśmy na stronach na naszych serwerach?
19 października przejrzeliśmy wszystkie instalacje WordPressa na serwerach, którymi zarządzamy, łącznie z archiwalnymi kopiami i stronami bez aktywnej opieki. Było ich 93, Rank Math PRO miało 25. Żadna nie miała wersji 3.0.123, a najnowsze PRO, jakie znalazłem, to 3.0.88 z maja 2025 roku.
Nie traktuję tego wyniku jako sukcesu. Wtyczka, która od roku nie dostaje poprawek, nie pobierze złej paczki, ale nie pobierze też łatek na luki, które w tym czasie wyszły. Niedawno opisywałem odwrotną sytuację, kiedy przy krytycznej luce w WordPressie automatyczna aktualizacja nie zdążyła przed pierwszymi atakami. Ten sam mechanizm raz chroni, a raz zaraża, więc wyłączenie aktualizacji niczego nie rozwiązuje.
Na wszystkich 25 instalacjach wyłączyliśmy PRO, a darmowy Rank Math został na miejscu. Na 15 działających stronach sprawdziliśmy potem, czy strona się otwiera, czy dane strukturalne i znaczniki dla mediów społecznościowych są dalej w kodzie i czy mapa witryny odpowiada. Wszystko działało, a jedyna strona z niedziałającą mapą witryny miała ten problem już wcześniej, z włączonym PRO. Dla typowej strony firmowej darmowa wersja robi to, czego strona naprawdę używa.
Z tego incydentu wyciągam 2 wnioski dla każdej strony, nie tylko tej z Rank Math. Pierwszy to wiedza, co jest zainstalowane i kiedy się aktualizowało, bo bez daty nie odpowiesz nawet na pytanie, czy problem Cię dotyczy. Drugi to kopia zapasowa trzymana poza serwerem strony, z historią sięgającą co najmniej kilku tygodni wstecz, bo tylko ona daje szybki powrót do stanu sprzed infekcji. Jeśli chcesz, żeby te 2 rzeczy pilnował ktoś za Ciebie, sprawdź cennik opieki WordPress.
Osobna uwaga o kopiach PRO kupowanych poza sklepem producenta. W polskich wynikach na frazę rank math pro wysoko stoją oferty licencji po 13-20 zł. Przy takiej kopii nie masz pewności, skąd pochodzi paczka i kto ją wcześniej rozpakował, a ten incydent pokazał, że nawet oficjalna aktualizacja potrafi być zatruta.
Pytania i odpowiedzi
Czy darmowy Rank Math też był zainfekowany?
Nie. Incydent dotyczy płatnego dodatku Rank Math SEO PRO w wersji 3.0.123. Darmowy Rank Math z katalogu WordPress.org nie jest wymieniany jako zainfekowany.
Czy wystarczy zaktualizować Rank Math PRO do wersji 3.0.124?
Jeśli strona pobrała 3.0.123 w nocy z 15 na 16 października, nie wystarczy. Złośliwy kod zostawia pliki, wpisy w bazie i zadania cron poza katalogiem wtyczki, a aktualizacja ich nie usuwa. Potrzebna jest kopia sprzed 15 października albo pełne czyszczenie i zmiana haseł.
Skąd mam wiedzieć, kiedy wtyczka się zaktualizowała?
Najpewniej z dziennika zdarzeń, jeśli masz wtyczkę, która go prowadzi. Bez niej sprawdź datę modyfikacji plików w katalogu wtyczki przez FTP albo menedżer plików hostingu i poszukaj w poczcie powiadomień WordPressa o automatycznych aktualizacjach.
Czy po infekcji trzeba zgłosić naruszenie do UODO?
Zależy od danych na stronie. Jeśli złośliwy kod mógł dotrzeć do danych klientów, na przykład zamówień albo zgłoszeń z formularzy, a wyciek może im zagrażać, RODO daje 72 godziny od stwierdzenia naruszenia na zgłoszenie. Decyzję, także odmowną, warto zapisać.
Czy wyłączyć Rank Math PRO na stałe?
To zależy od tego, czy używasz funkcji, których nie ma w wersji darmowej. My wyłączyliśmy PRO na 25 instalacjach i na działających stronach dane strukturalne, znaczniki i mapa witryny pracowały dalej na darmowym Rank Math. Jeśli zostajesz przy PRO, instaluj go wyłącznie z konta u producenta.
