Przejdź do treści
Zapolu

21 października 2026, Luboš Zápotočný

PHP2Shell: które wersje PHP są bezpieczne i co teraz zrobić

Dwie krytyczne podatności PHP, CVE-2026-109618 i CVE-2026-109619, zostały naprawione w PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Kogo dotyczą, które wersje są bezpieczne, co sprawdzić na serwerach i co zrobić, jeśli nadal używasz PHP 8.1 lub starszego.

21 października 2026 roku projekt PHP wydał PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35 w celu usunięcia dwóch krytycznych podatności, CVE-2026-109618 i CVE-2026-109619. Obie pozwalają atakującemu wykonać dowolny kod na serwerze WWW bez uwierzytelnienia. Obie luki określa się wspólną nazwą PHP2Shell, od exploita, który badacze opracowali, łącząc oba błędy (podsumowanie Sansec). W komunikacie bezpieczeństwa PHP czytamy, że „tylko aktualizacja jest pełnym rozwiązaniem”.

Wszystkie podane niżej informacje o dostawcach sprawdziliśmy 21 października 2026 roku w źródłach, do których prowadzą odnośniki.

Zakres zagrożenia

Według ogłoszenia PHP ryzyko obejmuje „wszystkie instalacje PHP obsługujące żądania WWW”, niezależnie od sposobu połączenia PHP z serwerem WWW. Dotyczy to aplikacji Magento, Mage-OS, WordPress, Drupal, Laravel i Symfony oraz każdego własnego kodu PHP. Sansec informuje, że badacze uruchomili kod bez logowania w Magento 2.4.9, WordPressie, Drupalu, Nextcloudzie i innych aplikacjach. PHP przetwarza request atakującego, zanim otrzyma go aplikacja, dlatego własny kod sklepu i jego rozszerzenia nie mogą zablokować ataku.

Druga podatność może ponadto ujawnić zawartość pamięci serwera. Serwer, który działał na podatnej wersji i był dostępny z internetu, mógł ujawnić hasła, klucze API lub dane sesji. Po jego aktualizacji warto rozważyć zmianę używanych przez niego danych uwierzytelniających.

Sprzedawcy korzystający z Shopify nie mają własnej instalacji PHP do aktualizacji, ponieważ platformę hostuje Shopify (FAQ Shopify). Własne aplikacje napisane w PHP i hostowane na Twoich serwerach są zagrożone tak samo jak każdy inny kod PHP.

Bezpieczne wersje

GałąźBezpieczna odKoniec wsparcia bezpieczeństwa
8.58.5.1231 grudnia 2029 r.
8.48.4.2731 grudnia 2028 r.
8.38.3.3631 grudnia 2027 r.
8.28.2.3531 grudnia 2026 r.
8.1 i starszebrak poprawki od projektu PHPzakończone

Daty wsparcia pochodzą ze strony obsługiwanych wersji PHP. System działający na PHP 8.2 wymaga natychmiastowej aktualizacji, a przed końcem roku także przejścia na nowszą gałąź, chyba że korzysta z własnych pakietów PHP Debiana 12, które utrzymuje zespół długoterminowego wsparcia Debiana (DLA-4848-1).

Kontrola serwerów

Instalacja aktualizacji zwykle przebiega szybko. Największe ryzyko polega na przekonaniu, że została zainstalowana, choć tak nie jest. Oto pytania, które warto zadać administratorowi Twoich serwerów:

  • Którą wersję PHP faktycznie uruchamia serwer WWW? Może się ona różnić od wersji widocznej w wierszu poleceń, a na jednym serwerze może działać równolegle kilka wersji PHP.
  • Czy numer wersji potwierdza obecność poprawki? Ubuntu na przykład dodaje poprawkę do swojego starszego pakietu PHP, dlatego zaktualizowany serwer z Ubuntu 24.04 nadal wyświetla wersję PHP 8.3.6 (komunikat Ubuntu). W takim przypadku z komunikatem dostawcy musi się zgadzać wersja pakietu.
  • Czy PHP zostało zrestartowane po aktualizacji? Działający proces PHP przechowuje stary kod w pamięci aż do restartu.
  • Czy obrazy Dockera zostały przebudowane? Działający kontener nie aktualizuje się sam. Oficjalne obrazy PHP w Docker Hub zostały przebudowane z poprawionymi wersjami jeszcze tego samego dnia, 21 października, dlatego obraz zbudowany na ich podstawie przed tą przebudową nadal zawiera podatną wersję.
  • Czy zajmuje się tym dostawca hostingu? W przypadku Adobe Commerce on Cloud strona ustawień PHP Adobe nie podaje, kiedy aktualizowane jest wydanie poprawkowe PHP, a 21 października nie znaleźliśmy komunikatu Adobe o tych podatnościach. Sprawdź wersję po najbliższym wdrożeniu, a jeśli nadal jest niższa od bezpiecznego wydania, zwróć się do pomocy technicznej Adobe.

Sklepy Magento w starszych wersjach

Według wymagań systemowych Adobe sklep Magento może działać tylko na określonych wersjach PHP. Sklepy w wersjach 2.4.8 i 2.4.9 mogą już dziś przejść na bezpieczne wydanie. Sklep w wersji 2.4.7 może działać na PHP 8.3, co jest lepszym wyborem niż 8.2.

Najnowsze wydania poprawkowe wersji 2.4.4 i 2.4.5 obsługują wyłącznie PHP 8.1, które nie otrzymuje już poprawek od projektu PHP, a same te linie wydań nie są już objęte wsparciem bezpieczeństwa Adobe (polityka cyklu życia). Do czasu aktualizacji Magento taki sklep jest zdany na poprawkę od dostawcy systemu operacyjnego (następna sekcja).

PHP 8.1 i starsze

Projekt PHP nie publikuje już nowych wydań gałęzi 8.1 ani starszych. Opublikował minimalne poprawki w postaci kodu źródłowego dla wersji 8.1, 8.0 i 7.4 i odsyła użytkowników do ich dostawców. Niektórzy dostawcy już je udostępnili:

  • Ubuntu naprawiło PHP 8.1 w Ubuntu 22.04 w ramach zwykłych aktualizacji (USN-8948-1), a starsze wersje PHP w starszych wydaniach Ubuntu dla klientów Ubuntu Pro (USN-8948-2).
  • Repozytoria Ondřeja Surý’ego, popularne źródło PHP dla Debiana i Ubuntu, opublikowały poprawione pakiety PHP w wersjach od 5.6 do 8.1 (PPA).
  • Red Hat poprawił pakiety PHP 7.4 w RHEL 8, ale dla pozostałych wersji PHP w RHEL 8, 9 i 10 nie udostępnił jeszcze poprawki (dane Red Hat).

Projekt PHP określa te poprawki jako „minimalne zabezpieczenie dla wersji EOL”. Zamykają one znane ścieżki ataku w wersji, która nie otrzymuje żadnych innych poprawek bezpieczeństwa. Aktualizacja do wspieranej wersji PHP nadal jest konieczna.

Środki doraźne przed aktualizacją

PHP wymienia zmiany konfiguracji, które obniżają ryzyko, i zaznacza, że „ograniczają one narażenie na określone ścieżki ataku, ale nie czynią instalacji bezpieczną”. Należą do nich wyłączenie śledzenia postępu przesyłania w sesji (session upload progress) i zmniejszenie maksymalnego rozmiaru requestu, a pełna lista znajduje się w ogłoszeniu PHP. Cloudflare również wdrożył reguły zapory chroniące przed tymi podatnościami. Oba środki obniżają ryzyko do czasu instalacji aktualizacji.

Jako rozwiązanie tymczasowe sugeruje się czasem blokowanie requestów multipart, czyli formatu, którego przeglądarki używają do przesyłania plików. Jak wynika z analizy Sansec, w sklepie Magento blokuje to także przesyłanie zdjęć produktów w panelu Admin, a w niektórych sklepach również koszyk lub checkout. Po każdej takiej zmianie złóż zamówienie testowe.

Stan wykorzystania podatności

Cloudflare informuje, że szczegóły wyciekły przed wydaniem, i pisze: „zaobserwowaliśmy ruch wymierzony w naszych klientów” (wpis Cloudflare). Gdy sprawdzaliśmy 21 października, żadnej z tych CVE nie było jeszcze w katalogu CISA Known Exploited Vulnerabilities.

Jeśli nie masz pewności, na jakiej wersji PHP działają Twoje serwery ani czy aktualizacja dotarła do każdego z nich, możemy je sprawdzić i przeprowadzić aktualizację. Utrzymywanie aktualnej wersji PHP jest częścią naszej stałej opieki, a jednorazową aktualizację wystarczy zlecić, wysyłając nam wiadomość.