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

Krytyczne luki w PHP (CVE-2026-109618/109619): jak sprawdzić, czy hosting je załatał

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

Stan wiedzy: początek listopada 2026

Tekst opisuje sytuację na 2 listopada 2026. Sprawa się rozwija: kolejne firmy publikują dane o atakach, a PHP zapowiedziało dodatkowe wyjaśnienia przy następnym wydaniu. Będę aktualizował ten tekst. Część o tym, jak reagować na lukę w oprogramowaniu serwera, zachowa wartość także później.

$ diagnoza PHP: CVE-2026-109618, CVE-2026-109619
Kogo dotyczy
Każdej strony na PHP starszym niż 8.5.12, 8.4.27, 8.3.36 lub 8.2.35, chyba że dostawca wgrał poprawkę inaczej
Co grozi
Uruchomienie obcego kodu na serwerze bez logowania, wyciek haseł i kluczy z pamięci
Kto naprawia
Hosting (serwer współdzielony) albo Ty lub Twój administrator (VPS, serwer dedykowany)
Czy zrobisz to sam?
Sprawdzenie wersji tak. Aktualizację PHP na hostingu robi hosting

Szybka odpowiedź

21 października 2026 PHP wydało wersje 8.5.12, 8.4.27, 8.3.36 i 8.2.35, które łatają dwie krytyczne luki pozwalające uruchomić na serwerze obcy kod bez logowania. Aktualizacja WordPressa ani wtyczek tego nie naprawi, bo błąd jest w samym PHP: łata go hosting albo administrator serwera. Sprawdź wersję PHP w raporcie Stan witryny (Narzędzia → Stan witryny → Informacja → Serwer) i porównaj pełny numer: 8.3.6 to nie 8.3.36. Jeśli nie masz pewności, wyślij hostingowi pytanie z gotowego wzoru poniżej.

Większość poradników o bezpieczeństwie WordPressa kończy się na „aktualizuj wtyczki”. Tym razem to nie wystarczy. Luka siedzi piętro niżej, w PHP, czyli programie, który na serwerze wykonuje kod WordPressa, WooCommerce i większości stron w internecie. Twój panel może być w idealnym porządku, a strona i tak narażona.

Wyjaśniam, co się stało, kto odpowiada za poprawkę, jak sprawdzić wersję i nie dać się zmylić numerowi, co napisać do hostingu i co zrobić, jeśli strona działa na starym PHP.

Co się stało i dlaczego to poważne

Według komunikatu na php.net obie luki pozwalają na zdalne wykonanie kodu bez uwierzytelnienia. Mówiąc prościej: obca osoba może wysłać do Twojej strony odpowiednio spreparowane żądanie i uruchomić na serwerze własny program, bez hasła i bez konta. Obie dostały ocenę 9,2 w skali CVSS 4.0, czyli krytyczną. W mediach nazywa się je zbiorczo „PHP2Shell”.

  • CVE-2026-109618 dotyczy sytuacji, gdy PHP w trakcie obsługi żądania zabraknie pamięci. Część danych zostaje wtedy przygotowana tylko w połowie, a sprzątanie po żądaniu traktuje je jak poprawne.
  • CVE-2026-109619 dotyczy danych, które po zakończonym żądaniu powinny zniknąć, a zostają w procesie PHP i mogą zostać użyte przy obsłudze kolejnego żądania.

PHP.net wymienia jako narażone wszystkie sposoby uruchamiania PHP na serwerach WWW: PHP-FPM, moduł Apache (mod_php), php-cgi, FrankenPHP i LiteSpeed. Największe ryzyko według PHP.net dotyczy mod_php, gdzie wykazano atak działający, zanim w ogóle uruchomi się kod strony. Według Patchstack badacze z firmy Wiz pokazali skuteczny atak na aktualnego WordPressa, a odczyt pamięci może ujawniać hasła, tokeny i klucze API z innych żądań.

Oś czasu

  • 20 października: PHP zapowiada pilne wydanie poprawek na 21 października, 14:00 UTC.
  • Noc z 20 na 21 października: szczegóły luk wyciekają przed planowaną publikacją.
  • 21 października rano: według Patchstack hostingi partnerskie zgłaszają pierwsze aktywne ataki, a Cloudflare informuje o pierwszych próbach i wdraża reguły zapory.
  • 21 października, 13:52 UTC (15:52 czasu polskiego): PHP publikuje wersje z poprawkami.

Według doniesień medialnych analitycy Amazon Web Services twierdzą, że co najmniej jedna grupa wykorzystywała luki już od 17 października, czyli przed wyciekiem. Nie znalazłem tego potwierdzenia w źródle pierwotnym, ale wniosek jest taki sam: przy serwerach, które łatano z opóźnieniem, warto sprawdzić, czy nic się nie stało.

Kto naprawia: Ty, hosting czy administrator

To najważniejsza rzecz do zrozumienia. Strona internetowa składa się z warstw, a za każdą odpowiada ktoś inny.

Kto aktualizuje którą warstwę strony WordPress Cztery warstwy od góry: wtyczki i motyw oraz rdzeń WordPressa aktualizujesz Ty w panelu. Niżej PHP, w którym jest luka z października 2026: na hostingu współdzielonym aktualizuje je hosting, na VPS Ty lub administrator. Najniżej system i serwer WWW, za które odpowiada hosting lub administrator. Aktualizacje w panelu WordPressa nie sięgają warstwy PHP. warstwa kto aktualizuje Wtyczki i motyw WooCommerce, formularze, kreator stron Ty, w panelu WordPressa Rdzeń WordPressa np. 7.1.4, aktualizuje się też sam Ty albo autoaktualizacja PHP tu jest luka z października 2026 np. 8.3.6, wybór wersji w panelu hostingu hosting współdzielony: hosting VPS: Ty lub administrator System i serwer WWW Linux, Apache, Nginx, LiteSpeed hosting lub administrator Aktualizacje klikane w panelu WordPressa kończą się na drugiej warstwie. PHP zmienia się tylko na serwerze.
Na hostingu współdzielonym w panelu zwykle wybierasz tylko gałąź PHP (np. 8.3), a konkretne wydanie z poprawkami instaluje hosting.
  • Hosting współdzielony (typowy pakiet w home.pl, nazwa.pl, cyber_Folks, LH.pl i podobnych): PHP aktualizuje hosting. Twoja rola to sprawdzić, czy to zrobił, i wybrać w panelu wspieraną gałąź.
  • VPS lub serwer dedykowany, np. w OVH: jeśli hosting nie zarządza serwerem za Ciebie, PHP aktualizujesz Ty albo Twój administrator. Nikt inny tego nie zrobi.
  • Hosting zarządzany dla WordPressa: zwykle jak współdzielony, ale sprawdź w umowie lub zapytaj.

Jak sprawdzić wersję PHP i nie dać się zmylić numerowi

Najprościej w panelu WordPressa: Narzędzia → Stan witryny → Informacja, sekcja Serwer, wiersz Wersja PHP (w wersji angielskiej Tools → Site Health → Info, Server, PHP version).

Narzędzia, Stan witryny, Informacja, sekcja Serwer: wiersz Wersja PHP w czerwonej ramce, poniżej limity PHP
Zrzut ekranuNarzędzia → Stan witryny → Informacja, sekcja Serwer: wiersz „Wersja PHP” (czerwona ramka). Testowa instalacja działa na PHP 8.3.31, czyli wersji sprzed poprawek z 21 października 2026: gałąź 8.3 łata dopiero wydanie 8.3.36. Część wierszy pominięto. Testowa instalacja WordPressa 7.1.4 po polsku, dane fikcyjne.

Jeśli masz sklep, tę samą informację pokazuje WooCommerce → Status → Status systemu, sekcja Środowisko serwerowe. Uwaga: zielony kolor numeru oznacza tu tylko, że wersja spełnia wymagania WooCommerce. Nie mówi nic o lukach bezpieczeństwa.

Status systemu WooCommerce, tabela Środowisko serwerowe: wiersz Wersja PHP 8.3.31 w czerwonej ramce oraz wersja MariaDB
Zrzut ekranuWooCommerce → Status, tabela „Środowisko serwerowe”: PHP 8.3.31 na zielono (czerwona ramka), choć to wersja bez październikowych poprawek. Zielony znaczy „wystarczająco nowa dla WooCommerce”, a nie „bezpieczna”. Część wierszy pominięto. Testowy sklep na WordPressie 7.1.4 i WooCommerce 11.2.1 po polsku, dane fikcyjne.

Wersje z poprawką

Gałąź PHPPoprawka od wersjiWsparcie bezpieczeństwa do
8.58.5.1231.12.2029
8.48.4.2731.12.2028
8.38.3.3631.12.2027
8.28.2.3531.12.2026
8.1, 8.0, 7.4brak oficjalnego wydaniawsparcie zakończone

Dane z php.net, stan na początek listopada 2026.

Jak czytać numer wersji PHP Numer 8.3.6 składa się z gałęzi 8.3 i numeru wydania 6. Wersja z poprawką to 8.3.36, czyli wydanie 36. Ostatnią liczbę porównuje się jako całą liczbę: 6 jest mniejsze od 36, więc 8.3.6 jest o 30 wydań starsza i nie ma poprawki. Wyjątek: pakiety z dystrybucji Linuksa, np. Ubuntu, zachowują stary numer 8.3.6, a poprawki dokładają w numerze pakietu, np. 8.3.6-0ubuntu0.24.04 z kolejnym numerem kompilacji. Na serwerze 8.3.6 gałąź 8.3, wydanie numer 6 bez poprawki Wersja z poprawką 8.3.36 gałąź 8.3, wydanie numer 36 poprawka od tego wydania < Wyjątek: PHP z pakietów dystrybucji Linuksa (Ubuntu, Debian) Numer zostaje stary, a poprawki trafiają do numeru pakietu: 8.3.6-0ubuntu0.24.04.NN Wtedy porównaj numer pakietu z komunikatem bezpieczeństwa dystrybucji. Na hostingu współdzielonym tego nie zobaczysz w panelu, więc po prostu zapytaj hosting.
Ostatnią liczbę porównuj jako całą liczbę, nie cyfra po cyfrze: 6 to mniej niż 36. Wyjątek z dolnej ramki dotyczy głównie VPS-ów z systemowym PHP.

Na własnym serwerze: sprawdź numer pakietu

Jeśli masz VPS z Ubuntu albo Debianem i PHP z oficjalnych pakietów systemu, sam numer wersji niewiele powie. Ubuntu i Debian zwykle dokładają poprawki do wersji, którą wydały razem z systemem, bez zmiany numeru PHP. Tak wygląda to na serwerze z naszą instalacją testową (Ubuntu 24.04):

$ php -v | head -1
PHP 8.3.6 (cli) (built: Sep  2 2026 12:56:02) (NTS)
$ dpkg -l php8.3-cli | tail -1 | awk '{print $2, $3}'
php8.3-cli 8.3.6-0ubuntu0.24.04.11

Pierwsze polecenie pokazuje wersję i datę kompilacji: 2 września 2026, czyli przed poprawkami. Drugie pokazuje numer pakietu. Ubuntu opisało poprawkę w komunikacie bezpieczeństwa USN-8948-1: dla Ubuntu 24.04 to pakiet 8.3.6-0ubuntu0.24.04.13, więc serwer testowy z numerem kończącym się na .11 poprawki jeszcze nie ma. Porównaj swój numer pakietu z numerem podanym tam dla Twojej wersji systemu, a na Debianie z komunikatem DSA lub DLA. Patchstack zwraca uwagę, że w części repozytoriów dziennik zmian mówi tylko „nowa wersja”, więc porównuj numery, a nie szukaj słowa „CVE”.

Po aktualizacji pakietów zrestartuj PHP-FPM albo serwer WWW. PHP.net podkreśla, że stare procesy PHP, które działały przed aktualizacją, nadal używają starego kodu. Wersję w raporcie Stan witryny sprawdzaj dopiero po restarcie.

Kilka wersji PHP na jednym koncie

Na wielu hostingach każda domena może mieć inną wersję PHP. Sprawdź każdą stronę osobno, także kopię testową i stare instalacje w podkatalogach, o których wszyscy zapomnieli. Luka nie wymaga logowania, więc zapomniany sklep testowy na PHP 8.1 to taka sama furtka do konta hostingowego jak strona główna.

Wzór maila do hostingu

Na hostingu współdzielonym nie zobaczysz, czy PHP ma poprawki dodane przez dostawcę. Zapytaj wprost. Ten tekst możesz skopiować i uzupełnić:

Temat: Luki w PHP CVE-2026-109618 i CVE-2026-109619 – konto [login / domena]

Dzień dobry,

proszę o informację, czy PHP na serwerze obsługującym moje konto
[login] i domeny [domena1, domena2] ma poprawki luk CVE-2026-109618
i CVE-2026-109619 opublikowanych przez PHP 21.10.2026.

W raporcie Stan witryny widzę wersję PHP [np. 8.3.6]. Proszę o potwierdzenie:
1. czy poprawki są wgrane dla wszystkich wersji PHP dostępnych
   w panelu, w tym [gałąź, której używam],
2. od kiedy (data i godzina) serwer ma poprawki,
3. czy procesy PHP zostały po aktualizacji uruchomione ponownie,
4. czy w logach serwera widzieliście próby wykorzystania tych luk
   na moim koncie.

Z góry dziękuję,
[imię i nazwisko, numer klienta]

Pytanie o datę ma znaczenie. Jeśli serwer dostał poprawkę 21 października wieczorem, ryzyko jest małe. Jeśli tydzień później, warto przejrzeć stronę.

Nie instaluj „łatek” we wtyczkach

Patchstack ostrzega przed nieoficjalnymi wtyczkami i fragmentami kodu obiecującymi ochronę przed tą luką: nie są sprawdzone i mogą zepsuć stronę. Obejścia opisane przez PHP.net, np. wyłączenie session.upload_progress, są dla administratorów serwerów, działają tylko w php.ini lub konfiguracji puli PHP-FPM i nie zastępują aktualizacji. PHP.net wprost pisze, by nie polegać tu na .user.ini ani ini_set().

Masz PHP 7.4, 8.0 albo 8.1

Te wersje nie dostają już wydań od projektu PHP. Ze względu na wagę luk zespół bezpieczeństwa PHP udostępnił minimalne poprawki w kodzie źródłowym dla 7.4, 8.0 i 8.1, z przeznaczeniem dla osób, które same kompilują PHP. Niektóre dystrybucje Linuksa i firmy oferujące rozszerzone wsparcie wydały własne pakiety z poprawkami. Czy Twój hosting z nich skorzystał, wie tylko on.

Co zrobić:

  1. Zapytaj hosting

    Użyj wzoru maila wyżej i dopisz, że chodzi o PHP 7.4, 8.0 lub 8.1.

  2. Zaplanuj przejście na PHP 8.3 lub 8.4

    Najpierw na kopii strony. Plan krok po kroku opisuję w poradniku Koniec PHP 8.2: jak przejść na 8.3. To samo dotyczy PHP 8.2, który traci wsparcie 31 grudnia 2026.

  3. Jeśli coś się posypie, cofnij wersję i napraw kod

    Najczęstsze błędy po zmianie PHP i sposób ich naprawy znajdziesz w poradniku Strona nie działa po zmianie PHP.

Przy okazji: WordPress 7.0 i nowszy wymaga co najmniej PHP 7.4, a strony na starszym PHP utknęły na gałęzi 6.9. O jej poprawkach piszę w artykule o WordPressie 7.1.4.

Po poprawce: czy ktoś zdążył wejść

Ataki zgłaszano, zanim poprawki były dostępne. Dlatego po potwierdzeniu, że PHP jest załatane, zrób krótki przegląd:

  • lista administratorów w menu Użytkownicy (nowe konta, nieznane adresy e-mail),
  • lista wtyczek, także zakładka Wymuszane (Must-Use),
  • nowe pliki PHP w wp-content/uploads i w katalogu głównym, z datą od 17 października,
  • nietypowe przekierowania, spam w wynikach Google, ostrzeżenia hostingu.

Patchstack wymienia jako możliwe sygnały ataku m.in. błędy 500 i błędy braku pamięci po dużych żądaniach z plikami oraz niewyjaśnione restarty procesów PHP. Same w sobie niczego nie dowodzą, ale jeśli je widzisz, a serwer był długo bez poprawki, potraktuj go jako możliwie przejęty. Wtedy zmień hasła do bazy danych, klucze API zapisane w konfiguracji i klucze bezpieczeństwa WordPressa w wp-config.php. Pełną listę objawów włamania opisuję w poradniku Jak sprawdzić, czy strona jest zhakowana.

Typowy scenariusz

Właścicielka sklepu czyta o luce w PHP i loguje się do panelu. Raport Stan witryny pokazuje PHP 8.3.6, WooCommerce wyświetla tę wersję na zielono, więc uznaje, że wszystko jest w porządku. Po wysłaniu pytania do hostingu okazuje się, że gałąź 8.3 została zaktualizowana 22 października, ale jej konto korzysta z selektora wersji z PHP 8.1 ustawionym dla starego sklepu testowego w podkatalogu. Testowy sklep zostaje wyłączony, strona główna dostaje potwierdzenie poprawki, a przegląd plików nie wykazuje śladów włamania.

Jak reagować na każdą lukę w oprogramowaniu serwera

PHP2Shell nie jest pierwszą i nie będzie ostatnią luką w oprogramowaniu, którego nie widać w panelu WordPressa. Przy następnej (w PHP, serwerze WWW, bazie danych, OpenSSL) ten sam schemat oszczędzi Ci nerwów:

  1. Wiedz, na czym stoi strona

    Zapisz w jednym miejscu: hosting, rodzaj usługi (współdzielony czy VPS), wersję PHP, bazę danych, kto ma dostęp do serwera. Raport Stan witryny pokazuje większość tych danych w sekcjach Serwer i Baza danych.

  2. Ustal, kto aktualizuje którą warstwę

    Na hostingu współdzielonym system i PHP to obowiązek hostingu. Na VPS bez umowy o zarządzanie to Twój obowiązek, nawet jeśli serwer stawiał wykonawca, który już się nie odzywa.

  3. Pytaj o fakty, nie o zapewnienia

    Odpowiedź „wszystko jest bezpieczne” to za mało. Pytaj o wersję, datę wdrożenia i restart usług.

  4. Nie szukaj łatki we wtyczce

    Luk w serwerze nie naprawia się z poziomu WordPressa. Wtyczki mogą co najwyżej dodać zaporę dla części ataków.

  5. Po wszystkim sprawdź stronę

    Przy lukach wykorzystywanych przed publikacją poprawki krótki przegląd to rozsądne minimum.

Kiedy nie robić tego samemu

  • masz VPS, a nikt nie wie, jak na nim zainstalowano PHP ani jak je aktualizować,
  • hosting nie odpowiada albo odpowiada ogólnikami, a strona to sklep z danymi klientów,
  • strona działa na PHP 7.4–8.1 i boisz się, że zmiana wersji ją wyłączy,
  • widzisz błędy 500, nowe pliki PHP albo nieznane konta, a serwer był długo bez poprawki.

Nie wiesz, czy Twój serwer ma poprawkę?

Sprawdzam wersję i pakiety PHP, kontaktuję się z hostingiem w Twoim imieniu albo aktualizuję PHP na VPS, a potem przeglądam stronę pod kątem śladów włamania. Przy starym PHP przygotowuję przejście na 8.3 lub 8.4 na kopii. Szybka Interwencja: 299 zł netto, 7 dni gwarancji na naprawę.

Najczęstsze pytania

Czy aktualizacja WordPressa albo wtyczki bezpieczeństwa chroni przed tą luką?

Nie. Luka jest w samym PHP, czyli programie, który na serwerze uruchamia WordPressa. Naprawia ją tylko aktualizacja PHP, którą robi hosting albo administrator serwera. Patchstack ostrzega też przed nieoficjalnymi wtyczkami i fragmentami kodu, które obiecują „łatkę”.

Raport Stan witryny pokazuje PHP 8.3.6. Czy to wersja z poprawką?

Według numeru nie, bo poprawkę ma 8.3.36, a 6 to wydanie o 30 wcześniejsze. Wyjątkiem są pakiety z dystrybucji Linuksa, np. Ubuntu, które dokładają poprawki bez zmiany numeru. Na hostingu współdzielonym zapytaj hosting, na własnym serwerze sprawdź numer pakietu i jego dziennik zmian.

Mam PHP 7.4 albo 8.1. Co teraz?

Projekt PHP nie wydał dla tych wersji nowych wydań, udostępnił tylko poprawki w kodzie źródłowym. Zapytaj hosting, czy jego kompilacja je zawiera. Niezależnie od odpowiedzi zaplanuj przejście na PHP 8.3 lub 8.4, najpierw na kopii strony.

Czy mogę sam wyłączyć coś w .user.ini, żeby się zabezpieczyć?

Nie licz na to. PHP.net wprost pisze, że ustawienie session.upload_progress.enabled trzeba zmienić w php.ini lub konfiguracji puli PHP-FPM, a nie przez .user.ini czy ini_set(). Zalecane obejścia są dla administratorów serwera i tylko zmniejszają ryzyko. Pełną ochronę daje wyłącznie aktualizacja PHP.

Hosting załatał PHP. Czy muszę coś jeszcze zrobić?

Zapytaj, od kiedy serwer ma poprawkę. Ataki zgłaszano już przed jej wydaniem. Jeśli serwer był narażony dłużej, przejrzyj stronę pod kątem włamania i rozważ zmianę haseł oraz kluczy zapisanych w konfiguracji, bo luka mogła też ujawniać dane z pamięci.

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.