Przejdź do treści
code/system.

php2shell — krytyczne luki w PHP. Sprawdź wersję na swoim serwerze

4 min czytania
  • PHP
  • WordPress
  • Bezpieczeństwo

21 października 2026 roku CERT Polska opublikował komunikat o dwóch krytycznych podatnościach w PHP, nazwanych przez badaczy php2shell. Dzień później ostrzeżenie wydało też Ministerstwo Cyfryzacji, a Centralny Ośrodek Informatyki na czas wdrażania zabezpieczeń wyłączył część stron BIP.

Tym razem problem nie leży w WordPressie, wtyczce czy motywie, tylko w samym PHP, czyli w języku, na którym to wszystko działa. Dlatego dotyczy praktycznie każdej strony WordPress i każdego sklepu na WooCommerce.

Co to za luki

Chodzi o dwie podatności: CVE-2026-109618 i CVE-2026-109619. Obie wynikają z błędów w zarządzaniu pamięcią i obie pozwalają atakującemu zdalnie uruchomić dowolny kod na serwerze. Według zespołu PHP ocena to CVSS 9.2, czyli górna półka skali.

W skrócie:

  • CVE-2026-109618: gdy PHP-owi zabraknie pamięci, przetwarzanie żądania może się przerwać w połowie.
  • CVE-2026-109619: po obsłużeniu żądania w pamięci może zostać „resztka” stanu, który powinien już zniknąć. Następne żądanie obsługiwane przez ten sam proces może ją wykorzystać.

Najważniejsze dla właściciela strony: według zespołu PHP atakujący nie musi być zalogowany, a w przypadku mod_php (PHP jako moduł Apache) wykazano exploit, który działa, zanim uruchomi się jakikolwiek kod Twojej strony. Żadna wtyczka bezpieczeństwa w WordPressie nie zdąży więc zareagować.

Kogo to dotyczy

Podatne są wszystkie wersje PHP od 5.4 w górę, które obsługują ruch z sieci. Bez znaczenia jest sposób uruchomienia: PHP-FPM, mod_php, php-cgi, LiteSpeed i FrankenPHP są na liście. Największe ryzyko dotyczy mod_php.

Poprawione wersje to:

  • PHP 8.5.12
  • PHP 8.4.27
  • PHP 8.3.36
  • PHP 8.2.35

PHP 8.1 i starsze nie dostają już oficjalnych aktualizacji. Część dystrybucji Linuksa i dostawców wsparcia LTS przygotuje dla nich własne łatki, ale nie ma tu pewnego terminu. Jeśli Twoja strona nadal działa na PHP 7.4 czy 8.0, to naprawdę dobry moment, żeby się z nich przenieść.

Co zrobić już dziś

CERT i Ministerstwo mówią jasno: jedyną skuteczną ochroną jest instalacja poprawionej wersji PHP. W praktyce:

  1. Sprawdź, jakiej wersji PHP używa Twoja strona. W WordPressie znajdziesz ją w Narzędzia → Zdrowie witryny → Informacje → Serwer. Możesz też zajrzeć do panelu hostingu.
  2. Jeśli masz hosting współdzielony, sprawdź komunikaty swojego dostawcy. Większość dużych hostingów aktualizuje PHP sama, ale warto się upewnić, czy zrobiła to już na Twoim koncie. Gdy w panelu możesz wybrać wersję PHP, ustaw najnowszą z poprawką, z którą Twoja strona działa.
  3. Jeśli masz VPS lub własny serwer, aktualizacja jest po Twojej stronie. Zainstaluj poprawione pakiety z repozytorium dystrybucji i zrestartuj wszystkie procesy PHP (PHP-FPM, Apache). Bez restartu stara wersja dalej działa w pamięci.
  4. Przed zmianą wersji zrób kopię zapasową plików i bazy. Przy przejściu np. z 8.1 na 8.3 starsza wtyczka lub motyw może przestać działać, więc po aktualizacji przeklikaj stronę, a w sklepie przejdź całą ścieżkę zamówienia.

Jeśli nie da się zaktualizować od razu

Na czas oczekiwania na łatkę zespół PHP i CERT podają ustawienia, które zmniejszają ryzyko, ale go nie usuwają:

memory_limit = -1                    ; jeśli serwer na to pozwala, w innym razie co najmniej 128M
post_max_size = 8M                   ; 32M, jeśli strona przyjmuje wysyłanie plików
max_input_vars = 1000
session.upload_progress.enabled = Off

Kilka ważnych uwag:

  • Ustaw je w php.ini, w konfiguracji puli PHP-FPM (php_admin_value) albo w konfiguracji serwera. ini_set() w kodzie ani .user.ini tu nie wystarczą.
  • upload_max_filesize musi być mniejsze niż post_max_size.
  • Na PHP 8.5 dodatkowo ustaw fatal_error_backtraces = 0.
  • Po zmianach zrestartuj wszystkie procesy PHP.
  • Ukrywanie błędów (display_errors, error_reporting) nic nie daje.

Przy memory_limit = -1 uważaj na serwerach z małą ilością pamięci. Limit warto wtedy ustawić na poziomie kontenera albo systemu, a nie PHP. Jeśli nie wiesz, gdzie to wszystko ustawić, nie zgaduj — zapytaj hosting albo napisz do mnie.

Co jeśli strona już mogła oberwać

Komunikaty mówią o ryzyku masowych prób ataku, więc warto zajrzeć, czy na serwerze nie dzieje się nic dziwnego: nowe konta administratorów w WordPressie, nieznane pliki PHP w wp-content/uploads, zmienione pliki rdzenia, nagły wzrost obciążenia serwera. Jeśli coś znajdziesz, zgłoś to do CERT Polska przez formularz na incydent.cert.pl.

Źródła:

Nie chcesz pilnować tego sam?

Jeśli nie wiesz, na jakiej wersji PHP działa Twoja strona, albo boisz się, że po zmianie coś przestanie działać, odezwij się. W ramach opieki nad stroną WordPress sprawdzę wersję PHP, przeprowadzę aktualizację razem z kopią zapasową i sprawdzę, czy strona i sklep działają jak należy.

Masz projekt na WordPressie? Porozmawiajmy.