Przejdź do treści

Krytyczna luka w PHP (PHP2Shell): co powinien zrobić właściciel strony

Luka PHP2Shell (CVE-2026-109618 i CVE-2026-109619) dotyczy niemal każdej strony na PHP, także WordPressa i PrestaShop. Jak sprawdzić wersję PHP i co zrobić.

Bartosz Ogrodowicz 6 min czytania

› spis treści
  1. Czym ta luka różni się od typowych włamań
  2. Czy ataki już trwają
  3. Które wersje PHP są bezpieczne
  4. Jak sprawdzić wersję PHP na swojej stronie
  5. Co zrobić, jeśli masz stronę na hostingu współdzielonym
  6. Strona nagle działa inaczej? To mogą być nowe limity hostingu
  7. Co zrobić, jeśli masz własny serwer lub VPS
  8. Skąd wiedzieć, czy ktoś już się włamał
  9. Osobna sprawa: klucze UpdraftCentral
  10. Najczęstsze pytania
  11. Podsumowanie

21 października 2026 roku twórcy PHP wydali poprawki dwóch krytycznych błędów, nazwanych przez badaczy PHP2Shell (CVE-2026-109618 i CVE-2026-109619). Pozwalają one atakującemu uruchomić własny kod na serwerze bez logowania i bez żadnej wtyczki po drodze. Ocena: 9,2 na 10 w skali CVSS.

Jeśli masz stronę na WordPressie, sklep na WooCommerce albo PrestaShop, prawie na pewno działa ona na PHP. Poniżej piszę, czego ta luka dotyczy, jak sprawdzić, czy Twoja strona jest narażona, i co zrobić - bez wchodzenia w szczegóły techniczne, których właściciel firmy nie potrzebuje.

Czym ta luka różni się od typowych włamań

Zwykle strony padają przez nieaktualną wtyczkę albo słabe hasło. Tu jest inaczej: błąd siedzi w samym PHP, czyli w języku, w którym działa WordPress, PrestaShop, Joomla i większość stron firmowych. Badacze pokazali przejęcie serwera nawet na najprostszej stronie typu „Hello World”, a także na aktualnych instalacjach WordPressa, Drupala i Joomli.

To oznacza, że aktualny WordPress i zaktualizowane wtyczki tym razem nie wystarczą. Liczy się wersja PHP na serwerze.

Czy ataki już trwają

Tak. Amazon odnotował pierwszą próbę wykorzystania luki 17 października, cztery dni przed publikacją poprawek. Od 21 października firmy zajmujące się bezpieczeństwem (m.in. Cloudflare, Patchstack, watchTowr) raportują kolejne próby ataków. Na razie w dużej mierze to sondowanie serwerów, ale specjaliści spodziewają się, że działający exploit szybko stanie się publiczny - a wtedy ataki staną się masowe i zautomatyzowane.

Które wersje PHP są bezpieczne

Podatne są wszystkie wersje PHP od 5.4 wzwyż, aż do wydań z poprawkami. Bezpieczne są:

Gałąź PHPWersja z poprawką
8.58.5.12 lub nowsza
8.48.4.27 lub nowsza
8.38.3.36 lub nowsza
8.28.2.35 lub nowsza

Ważne jest pełne oznaczenie wersji, nie tylko „8.3”. PHP 8.3.30 jest podatne, PHP 8.3.36 już nie.

PHP 8.1, 8.0 i 7.4 nie dostaną oficjalnych wydań. Zespół PHP udostępnił do nich jedynie poprawki w kodzie źródłowym - czy hosting je wdrożył, musisz zapytać u niego. Wersje 7.3 i starsze nie mają żadnej poprawki.

Jak sprawdzić wersję PHP na swojej stronie

WordPress: w panelu wejdź w Narzędzia - Zdrowie witryny - zakładka Informacje - sekcja Serwer. Pozycja „Wersja PHP” pokazuje pełny numer.

PrestaShop: Zaawansowane - Informacje. Wersja PHP jest w sekcji z informacjami o serwerze.

Panel hostingu: większość polskich hostingów ma w panelu ustawienie wersji PHP dla każdej domeny. Zwykle widać tam jednak tylko „8.3” czy „8.2”, bez ostatniej cyfry - wtedy pełny numer sprawdzisz w panelu strony albo u supportu.

Co zrobić, jeśli masz stronę na hostingu współdzielonym

Większość stron firmowych stoi na zwykłym hostingu, gdzie PHP aktualizuje dostawca, a nie Ty. W takiej sytuacji:

  1. Sprawdź pełną wersję PHP jednym ze sposobów opisanych wyżej.
  2. Jeśli jest niższa niż w tabeli, napisz do hostingu i zapytaj wprost, kiedy wdrożą poprawki PHP2Shell (CVE-2026-109618 i CVE-2026-109619) dla Twojej wersji. Duzi dostawcy zwykle robią to sami w ciągu kilku dni, ale warto mieć to na piśmie.
  3. Jeśli korzystasz z PHP 8.1 lub starszego, przełącz stronę na 8.2 albo nowsze. Przed zmianą zrób kopię zapasową i po zmianie sprawdź stronę - starsze wtyczki i motywy potrafią się wtedy wysypać. Na PHP 7.x zmiana wersji to często większa praca, bo wymaga aktualizacji całej strony.
  4. Nie instaluj „wtyczek naprawiających” lukę ani nie wklejaj kodu z forów. Błąd jest w PHP, wtyczka WordPressa nie może go załatać.

Strona nagle działa inaczej? To mogą być nowe limity hostingu

Część hostingów, także w Polsce, do czasu wdrożenia poprawek zapobiegawczo zaostrzyła ustawienia PHP wszystkim klientom. Najczęściej chodzi o niższy limit pamięci (np. 128 MB), mniejszy maksymalny rozmiar wysyłanego pliku (np. 8 MB), mniejszą liczbę pól w formularzu i wyłączenie śledzenia postępu wysyłki plików.

W praktyce może to wyglądać tak: nie da się wgrać większego zdjęcia lub PDF-a do biblioteki mediów, zapis rozbudowanej strony albo menu urywa się w połowie, import produktów do sklepu kończy się błędem, a cięższe wtyczki zgłaszają brak pamięci. To nie jest awaria Twojej strony, tylko skutek zabezpieczeń po stronie serwera.

Nie próbuj obchodzić tych limitów przez .htaccess, .user.ini czy php.ini - ustawienia hostingu i tak mają pierwszeństwo, a ich celem jest właśnie ochrona przed atakiem. Jeśli coś przestało działać, a to pilne, zapytaj hosting, kiedy planuje przywrócić normalne wartości. Zwykle następuje to po aktualizacji PHP na serwerach.

Co zrobić, jeśli masz własny serwer lub VPS

Zaktualizuj pakiety PHP z repozytorium swojej dystrybucji albo do wersji z tabeli i zrestartuj PHP-FPM lub Apache - bez restartu działające procesy dalej używają starego kodu. Pamiętaj o wszystkich miejscach, gdzie PHP działa: kontenerach, środowiskach testowych, starych instalacjach, o których wszyscy zapomnieli.

Jeśli od razu nie da się zaktualizować, komunikat zespołu PHP opisuje ustawienia, które ograniczają część ścieżek ataku (m.in. wyłączenie session.upload_progress.enabled i zmiany limitów pamięci). Nie zastępują one aktualizacji. Przy stronie o wysokim ryzyku lepszym wyjściem jest czasowe wyłączenie jej niż czekanie.

Skąd wiedzieć, czy ktoś już się włamał

Sama aktualizacja nie usuwa skutków ewentualnego włamania sprzed niej. Ponieważ pierwsze próby ataku odnotowano 17 października, warto przyjrzeć się stronie od tej daty. Sygnały ostrzegawcze w logach to seria błędów 500 i przekroczeń limitu pamięci, nietypowe żądania z wysyłką plików i nieoczekiwane restarty procesów PHP. Na samej stronie - nowe pliki PHP, nieznani administratorzy, przekierowania na obce witryny.

Jeśli coś z tego widzisz, postępuj jak przy każdym włamaniu - opisuję to krok po kroku w artykule Zhakowana strona WordPress: co zrobić w pierwszej godzinie.

Osobna sprawa: klucze UpdraftCentral

W tych samych dniach Patchstack opisał inny incydent: ktoś, kto wszedł w posiadanie kluczy UpdraftCentral (panel do zarządzania wieloma stronami WordPress z wtyczką UpdraftPlus), instaluje przez nie tylne furtki na podłączonych stronach. To nie jest błąd w UpdraftPlus ani część PHP2Shell, ale jeśli używasz UpdraftCentral, usuń i wygeneruj na nowo klucze połączeń.

Najczęstsze pytania

Mam aktualnego WordPressa i wszystkie wtyczki. Czy to wystarczy?

Nie tym razem. Luka jest w PHP, a nie w WordPressie, więc zabezpiecza Cię dopiero zaktualizowane PHP na serwerze. Aktualny WordPress nadal jest ważny, ale z innych powodów.

Czy luka dotyczy też sklepów na PrestaShop i WooCommerce?

Tak. Dotyczy każdej strony działającej na podatnej wersji PHP, niezależnie od systemu. Sklepy są przy tym szczególnie atrakcyjnym celem, bo przetwarzają dane klientów i płatności.

Hosting twierdzi, że wszystko jest zaktualizowane. Jak to sprawdzić?

Zobacz pełny numer wersji w panelu WordPressa (Narzędzia - Zdrowie witryny - Informacje - Serwer) i porównaj z tabelą. Jeśli hosting stosuje własne poprawki do starszej wersji, numer może się nie zgadzać - wtedy poproś o potwierdzenie na piśmie, że poprawki dla obu CVE są wdrożone.

Od wczoraj nie mogę wgrać zdjęć do WordPressa. Czy to przez lukę w PHP?

Bardzo możliwe. Część hostingów tymczasowo obniżyła limity wysyłanych plików i pamięci. Sprawdź w Narzędzia - Zdrowie witryny - Informacje - Serwer, jaki jest teraz „Maksymalny rozmiar przesyłanego pliku”, i zapytaj hosting, do kiedy zostanie ograniczenie. Na ten czas możesz zmniejszyć zdjęcia przed wgraniem.

Moja strona działa na PHP 7.4. Co teraz?

To najtrudniejsza sytuacja. Oficjalnego wydania nie będzie, a poprawki źródłowe zależą od hostingu. Najbezpieczniej przenieść stronę na PHP 8.2 lub nowsze, co zwykle oznacza aktualizację WordPressa, motywu i wtyczek, a czasem przepisanie części strony. Jeśli strona jest stara i od lat nieaktualizowana, czasem rozsądniej zrobić nową stronę internetową niż łatać starą.

Podsumowanie

PHP2Shell to jedna z poważniejszych luk ostatnich lat, bo dotyczy samego PHP, a nie pojedynczej wtyczki. Sprawdź pełną wersję PHP na swojej stronie, porównaj z tabelą i - jeśli trzeba - poproś hosting o aktualizację albo przełącz stronę na nowszą wersję. Jeśli strona działa na PHP 8.1 lub starszym, nie odkładaj tego.

Jeśli nie wiesz, na jakiej wersji PHP stoi Twoja strona, albo boisz się, że zmiana wersji ją popsuje, napisz do mnie - sprawdzę to i przeprowadzę aktualizację. W ramach opieki nad stroną (250 zł brutto miesięcznie) pilnuję wersji PHP, aktualizacji i kopii zapasowych na bieżąco, więc przy takich lukach klienci nie muszą nic robić sami.

› kontakt

Zaczynamy od rozmowy

15 minut, bez zobowiązań. Powiesz, co chcesz zrobić - powiem, czy to dla mnie i ile mniej-więcej kosztuje.

albo napisz: bartosz@it-art.pl