naprawa-stron.pl Online 24/7 Zgłoś awarię

Luka w All-in-One WP Migration (CVE-2026-19949): co zrobić, jeśli masz tę wtyczkę

Autor: Grzegorz Wojterzak. Aktualizacja: 18 listopada 2026. Czas czytania: około 11 minut.

Stan wiedzy: początek listopada 2026

Opisuję to, co producent i firmy zajmujące się bezpieczeństwem podały do początku listopada 2026. Tekst będę aktualizował, gdy pojawią się nowe informacje, np. potwierdzone ataki.

$ diagnoza All-in-One WP Migration, CVE-2026-19949
Kogo dotyczy
Stron z All-in-One WP Migration and Backup w wersji 7.109 lub starszej, także wyłączonej
Co grozi
Przejęcie strony: wyciek klucza importu i wgranie złośliwego archiwum z kodem
Czas reakcji
Aktualizacja od razu. Przegląd śladów: godzina
Czy zrobisz to sam?
Tak, aktualizację i podstawowy przegląd. Przy śladach włamania lepiej zlecić

Szybka odpowiedź

Jeśli masz wtyczkę All-in-One WP Migration and Backup w wersji 7.109 lub starszej, zaktualizuj ją do 7.110 lub nowszej, a jeśli jej nie używasz, usuń ją. Luka CVE-2026-19949 (ocena 8,8) pozwala bez logowania podrzucić przez trackback dane, które przy najbliższym eksporcie lub imporcie zamieniają się w atak na bazę i kończą wgraniem złośliwej wtyczki. Dodatkowo wyłącz trackbacki i pingbacki, przejrzyj katalog mu-plugins i listę administratorów.

All-in-One WP Migration and Backup firmy ServMask to jedna z najpopularniejszych wtyczek do przenoszenia stron i robienia kopii. Ma ponad 5 mln aktywnych instalacji. Bardzo często instaluje ją wykonawca na czas przeprowadzki strony na nowy hosting i już nie usuwa. Jeśli nie wiesz, czy ją masz, sprawdź to teraz.

Co się stało

W sierpniu 2026 badacz Jack Taylor zgłosił przez program nagród Wordfence błąd w tej wtyczce. ServMask wydał poprawkę w wersji 7.110 20 sierpnia 2026, a Wordfence opublikował szczegóły 2 września. Według BleepingComputer na początku września zaktualizowało się około 35% stron, co oznacza ponad 3 mln stron na podatnej wersji.

To tak zwane SQL injection drugiego rzędu. SQL injection to wstrzyknięcie do bazy danych polecenia zamiast zwykłego tekstu. „Drugiego rzędu” znaczy, że złośliwy tekst najpierw spokojnie leży w bazie, a groźny staje się dopiero później, gdy coś go przetworzy. Tu wygląda to tak:

Przebieg ataku na All-in-One WP Migration Pięć kroków. Krok 1: atakujący bez logowania wysyła trackbacki z przygotowanym tekstem; trafiają do bazy. Okres czekania: dni lub tygodnie, nic się nie dzieje. Krok 2: administrator robi eksport lub import na podatnej wersji. Krok 3: wtyczka przepisuje dane i podrzucony tekst staje się poleceniem dla bazy. Krok 4: tajny klucz importu wycieka w publicznie widocznym komentarzu. Krok 5: atakujący z kluczem wgrywa archiwum .wpress z wtyczką must-use i uruchamia własny kod. Miejsca, w których możesz przerwać atak: wyłączone trackbacki przy kroku 1, aktualizacja do 7.110 przy krokach 2 i 3. 1 Trackback bez logowania, przygotowany tekst trafia do bazy 2 Eksport administrator robi kopię lub import na wersji 7.109 lub starszej 3 Wstrzyknięcie wtyczka przepisuje dane, tekst staje się poleceniem SQL 4 Wyciek klucza tajny klucz importu ląduje w publicznym komentarzu 5 Przejęcie import .wpress z wtyczką must-use, obcy kod działa między 1 a 2 mogą minąć tygodnie: nic nie widać przerywa: trackbacki wyłączone przerywa: wersja 7.110 lub nowsza albo usunięta wtyczka ślady po fakcie: nowe pliki w mu-plugins, nowi administratorzy, dziwne trackbacki
Atak wymaga Twojego udziału: bez eksportu lub importu na podatnej wersji podrzucone dane tylko leżą w bazie. To uspokaja, ale nie usypia: przeprowadzka strony albo zwykła kopia uruchamia cały łańcuch.

Trackback i pingback to stare mechanizmy powiadamiania: inny blog informuje Twoją stronę, że do niej linkuje, i powiadomienie zapisuje się jako komentarz. Dziś prawie nikt z nich nie korzysta, a od lat służą głównie do spamu. Archiwum .wpress to format kopii tej wtyczki. Wtyczka must-use to plik w wp-content/mu-plugins, który WordPress uruchamia zawsze i którego nie da się wyłączyć w panelu.

Czy ktoś już atakuje? Według TechTimes, powołującego się na SOCRadar, istnieje publiczny kod demonstrujący atak (PoC), a doniesienia o atakach nie mają niezależnego potwierdzenia. BleepingComputer i Wordfence nie opisywały potwierdzonych ataków. Zakładam więc, że ataki są możliwe w każdej chwili, ale nie piszę, że trwają masowo.

Czy to dotyczy Twojej strony

Wejdź w Wtyczki (w wersji angielskiej Plugins) i znajdź „All-in-One WP Migration and Backup”. Numer wersji jest pod opisem wtyczki.

Lista wtyczek WordPressa po polsku: czerwona ramka wokół numeru wersji pod opisem wtyczki WooCommerce (Wersja 11.2.1)
Zrzut ekranuNumer wersji każdej wtyczki jest pod jej opisem (czerwona ramka, tu WooCommerce 11.2.1). Przy All-in-One WP Migration szukasz wersji 7.110 lub wyższej. Na testowej instalacji tej wtyczki nie ma. Testowa instalacja WordPressa 7.1.4 po polsku, dane fikcyjne.
  • 7.110 lub nowsza: luka jest załatana. Mimo to przejrzyj ślady (niżej), jeśli przed aktualizacją robiłeś eksport lub import.
  • 7.109 lub starsza, aktywna: zaktualizuj od razu.
  • Starsza i wyłączona: też musisz działać. Wyłączona wtyczka nie zrobi eksportu, ale wystarczy, że ktoś włączy ją na chwilę, żeby zrobić kopię. Jeśli jej nie potrzebujesz, usuń ją.
  • Płatne rozszerzenia (np. do zapisu kopii w chmurze) działają z wtyczką główną; aktualizuj je razem z nią.

Z terminala sprawdzisz wersję poleceniem WP-CLI wp plugin get all-in-one-wp-migration --field=version. Jeśli zarządzasz wieloma stronami, pomoże też panel hostingu, o ile pokazuje wersje wtyczek.

Co zrobić teraz, krok po kroku

  1. Zaktualizuj albo usuń wtyczkę

    W menu Wtyczki kliknij Aktualizuj teraz przy wtyczce albo zaktualizuj ją przez Kokpit → Aktualizacje (Dashboard → Updates). Jeśli strona jest już przeniesiona i wtyczki nie używasz: wyłącz ją i usuń. Usunięcie zabiera też kod, który mógłby zostać kiedyś włączony z podatną wersją.

  2. Wyłącz trackbacki i pingbacki

    W Ustawienia → Dyskusja odznacz Zezwól innym blogom na powiadamianie o zamieszczeniu odnośnika (pingbacki i trackbacki) do nowo dodanych wpisów (w wersji angielskiej Settings → Discussion, Allow link notifications from other blogs (pingbacks and trackbacks) on new posts) i zapisz.

Ustawienia dyskusji WordPressa: zaznaczone pole dotyczące pingbacków i trackbacków w czerwonej ramce
Zrzut ekranuUstawienia → Dyskusja: pole „Zezwól innym blogom na powiadamianie o zamieszczeniu odnośnika (pingbacki i trackbacki) do nowo dodanych wpisów” (czerwona ramka), tu jeszcze zaznaczone. Odznacz je i zapisz. Ustawienie działa tylko dla nowych wpisów; starsze trzeba zmienić osobno. Testowa instalacja WordPressa 7.1.4 po polsku, dane fikcyjne.

Uwaga, którą łatwo przeoczyć: jak mówi sam opis na tym ekranie, ustawienie dotyczy nowych wpisów. Starsze wpisy zachowują swoje ustawienie. Zmienisz je w Wpisy → Wszystkie wpisy: zaznacz wszystkie, z Działań masowych wybierz Edytuj, w polu Pingi ustaw Nie zezwalaj i kliknij Aktualizuj. Strony mają pingi domyślnie wyłączone. WordPress sprawdza to ustawienie przy każdym trackbacku i odrzuca go komunikatem „Sorry, trackbacks are closed for this item.”

  1. Przejrzyj trackbacki zapisane w bazie

    W panelu wejdź w Komentarze i przejrzyj powiadomienia od innych stron. Na typowej instalacji filtr typów komentarzy ma pozycję Pingi; na testowej instalacji z WooCommerce widziałem tylko Comments, więc wtedy pomoże WP-CLI. Podejrzane są wpisy z nietypowymi ukośnikami odwrotnymi (\), cudzysłowami i fragmentami kodu, a także zatwierdzone komentarze z długim ciągiem znaków, którego nie dodał nikt z Twoich ludzi.

# lista trackbacków i pingbacków (tylko odczyt)
wp comment list --type=trackback --fields=comment_ID,comment_date,comment_author_url,comment_approved
wp comment list --type=pingback --fields=comment_ID,comment_date,comment_author_url,comment_approved

Na stronie bez trackbacków polecenie wypisze tylko nagłówek kolumn, tak jak na testowej instalacji. Podejrzanych wpisów nie usuwaj przed zrobieniem kopii bazy: to dowód, a przy ataku także wskazówka, kiedy się zaczął.

  1. Sprawdź wtyczki must-use

    Celem ataku jest wgranie pliku do wp-content/mu-plugins. W menu Wtyczki kliknij zakładkę Wymuszane (w wersji angielskiej Must-Use; jest widoczna tylko wtedy, gdy coś tam jest) i sprawdź, czy rozpoznajesz każdy plik. Dla pewności obejrzyj katalog w menedżerze plików hostingu, z datami modyfikacji.

Zakładka Wymuszane (Must-Use) na liście wtyczek WordPressa: wtyczka WP Cache Helper w czerwonej ramce
Zrzut ekranuZakładka „Wymuszane” (w wersji angielskiej Must-Use) pokazuje pliki z katalogu wp-content/mu-plugins. „WP Cache Helper” (czerwona ramka) to pusty plik podłożony do przykładu. Takie wtyczki działają zawsze i nie da się ich wyłączyć w panelu, dlatego to ulubione miejsce włamywaczy. Testowa instalacja WordPressa 7.1.4 po polsku, dane fikcyjne.
  1. Przejrzyj administratorów

    Użytkownicy, filtr Administrator. Każde konto musisz przypisać do osoby. Z terminala: wp user list --role=administrator --fields=ID,user_login,user_email,user_registered; kolumna user_registered pokazuje datę założenia.

  2. Zajrzyj do logów serwera

    W logu dostępu (pobierzesz go z panelu hostingu) szukaj żądań POST związanych z importem wtyczki, np. z frazą ai1wm_import, które nie pochodzą od Ciebie (inny adres IP, pora, gdy nikt nie pracował). Dokładne adresy zależą od wersji wtyczki, więc traktuj to jako trop, nie pełną listę.

Jeśli znalazłeś obcy plik, konto albo import

Nie kończ na usunięciu jednego pliku. Atakujący, który wykonał kod na serwerze, mógł zostawić kilka furtek. Odetnij dostęp, zrób kopię dowodową, wyczyść stronę według poradnika wirus na stronie WordPress, zmień wszystkie hasła, sole w wp-config.php i hasło do bazy. Jeśli infekcja wraca, zobacz samoodbudowujący się backdoor.

Jeśli używasz Wordfence: według doniesień reguła zapory dla tej luki trafiła do płatnych wersji 16 sierpnia, a do darmowej 15 września 2026. To pomaga, ale strona bez aktualizacji wtyczki nadal ma błąd, a zapora nie usuwa tego, co ktoś podrzucił wcześniej.

Dlaczego wtyczki do kopii i migracji są szczególnym ryzykiem

Ta luka nie jest wyjątkiem, tylko przykładem reguły. Wtyczka do kopii i przenoszenia stron z natury musi umieć wszystko: czytać i zapisywać każdy plik, eksportować i nadpisywać całą bazę, wgrywać archiwa z kodem. Jeśli ktoś przejmie choć część tych możliwości, przejmuje stronę. Dlatego takie wtyczki traktuję jak narzędzia serwisowe, a nie stałe wyposażenie.

  • Do jednorazowej migracji: zainstaluj, użyj, usuń. Po przeprowadzce sprawdź stronę i usuń wtyczkę migracyjną. Jeśli wykonawca robił przeprowadzkę, poproś go o to wprost.
  • Do stałych kopii: jedna wtyczka, zawsze aktualna, albo kopie robione przez hosting, poza WordPressem. Dwie wtyczki kopii to dwa razy więcej kodu z pełnym dostępem.
  • Nie zostawiaj archiwów na serwerze. All-in-One WP Migration domyślnie zapisuje kopie w wp-content/ai1wm-backups. Plik kopii zawiera całą bazę: dane klientów, zamówienia, hasze haseł. Pobierz go, a na serwerze usuń.
  • Pamiętaj o kluczach. Wtyczki kopii łączą się z Google Drive, Dropboxem, S3 albo panelami do zarządzania wieloma stronami. Takie klucze też mogą wyciec, co pokazał przypadek UpdraftCentral. Usuwaj połączenia, których nie używasz.

Gdzie trzymać kopie

Gdzie trzymać kopie zapasowe strony Trzy miejsca od najgorszego do najlepszego. W katalogu strony na tym samym serwerze: kopia może być pobrana z internetu i zginie razem z serwerem. Na tym samym koncie hostingu poza katalogiem strony: nie da się jej pobrać przez przeglądarkę, ale włamywacz z dostępem do konta ją usunie lub zmieni. Poza serwerem, w osobnym magazynie z osobnym hasłem i kilkoma wersjami wstecz: przetrwa włamanie i awarię. Do tego regularny test przywracania. źle W katalogu strony wp-content/...-backups przy błędnej konfiguracji do pobrania z internetu, ginie razem z serwerem, włamywacz ją widzi lepiej Ten sam hosting, poza katalogiem strony nie da się jej pobrać przez przeglądarkę, ale przy awarii lub włamaniu na konto znika razem z nim dobrze Poza serwerem osobny magazyn, osobne hasło kilka wersji wstecz, strona nie może ich usuwać, przetrwa włamanie i awarię serwera W każdym wariancie: raz na kwartał przywróć kopię na serwer testowy. Kopia, której nie sprawdzono, to tylko nadzieja.
Najlepsza kopia leży tam, gdzie włamywacz z dostępem do strony nie sięga. Jeśli wtyczka kopii ma prawo usuwać stare kopie w chmurze, ma je też atakujący, który przejmie stronę.

Jeśli czytasz to przy innej luce we wtyczce

Ten sam schemat sprawdza się przy każdej pilnej luce: ustal, czy masz wtyczkę i w jakiej wersji (także wyłączoną), zaktualizuj lub usuń, zamknij funkcję, przez którą idzie atak, jeśli jej nie potrzebujesz (tu trackbacki), a potem przejrzyj trzy miejsca, które sprawdzają się prawie zawsze: administratorów, mu-plugins i nowe pliki PHP. Rozbudowaną procedurę na pierwszą dobę opisałem przy luce w Bricksforge.

Typowy scenariusz

Firma usługowa przeniosła stronę na nowy hosting dwa lata temu. Wykonawca użył All-in-One WP Migration i zostawił ją wyłączoną. Przy przeglądzie wychodzi wersja sprzed poprawki, kilkanaście starych trackbacków ze spamem i trzy pliki kopii .wpress w wp-content/ai1wm-backups, każdy z pełną bazą. Wtyczka zostaje usunięta, kopie pobrane i skasowane z serwera, trackbacki wyłączone dla wszystkich wpisów. Katalog mu-plugins i lista administratorów są czyste, więc na tym się kończy. Kopie od tej pory robi hosting.

Kiedy nie robić tego samemu

Aktualizację, wyłączenie trackbacków i przegląd kont zrobisz sam. Pomoc przyda się, gdy:

  • w mu-plugins jest plik, którego nie rozpoznajesz, albo pojawił się nieznany administrator,
  • w logach widać import, którego nikt z Was nie robił,
  • trackbacków są setki i trudno ocenić, które są groźne,
  • planujesz przeprowadzkę strony i chcesz zrobić ją bez zostawiania wtyczek i archiwów.

Chcesz, żebym sprawdził stronę za Ciebie?

Zaktualizuję lub usunę wtyczkę, przejrzę trackbacki, mu-plugins, konta i logi, a przy śladach włamania wyczyszczę stronę i zmienię hasła i klucze. Odwirusowanie: 499 zł netto, reakcja 24/7, 30 dni gwarancji czystości.

Najczęstsze pytania

Mam All-in-One WP Migration, ale jest wyłączona. Czy muszę coś robić?

Tak. Wyłączona wtyczka nie wykona importu ani eksportu, ale jej pliki leżą na serwerze, a złośliwe dane mogą czekać w bazie. Wystarczy, że ktoś włączy ją na chwilę, żeby zrobić kopię. Jeśli jej nie używasz, usuń ją. Jeśli używasz, zaktualizuj do 7.110 lub nowszej.

Czy luka pozwala włamać się bez żadnego działania z mojej strony?

Nie. Atakujący może bez logowania podrzucić dane przez trackback, ale do przejęcia strony potrzebny jest jeszcze eksport lub import wykonany przez administratora na podatnej wersji. To dlatego luka ma ocenę 8,8, a nie maksymalną.

Czy wyłączenie trackbacków wystarczy zamiast aktualizacji?

Nie. Wyłączenie trackbacków zamyka drogę dla nowych prób, ale nie usuwa danych podrzuconych wcześniej i nie naprawia błędu we wtyczce. Aktualizacja do 7.110 jest konieczna, a trackbacki wyłącz dodatkowo.

Czy kopie zrobione tą wtyczką przed aktualizacją są bezpieczne?

Same pliki kopii nie są zainfekowane przez tę lukę, ale mogą zawierać podrzucone trackbacki z bazy. Przed przywróceniem takiej kopii zaktualizuj wtyczkę i po przywróceniu przejrzyj komentarze typu trackback oraz katalog mu-plugins.

Używam Wordfence. Czy jestem chroniony?

Według doniesień reguła zapory Wordfence trafiła do płatnych użytkowników 16 sierpnia, a do darmowych 15 września 2026. Zapora zmniejsza ryzyko, ale nie zastępuje aktualizacji wtyczki i nie usuwa śladów sprzed jej wdrożenia.

Grzegorz Wojterzak naprawia strony internetowe po awariach i włamaniach: WordPress, WooCommerce, PHP i Node.js. Od ponad dekady pracuje przy stronach i sklepach internetowych polskich firm.