PHP2Shell to wspólna nazwa dwóch luk w PHP, CVE-2026-109618 i CVE-2026-109619, które mogą umożliwić zdalne wykonanie kodu bez uwierzytelnienia. 21 października 2026 r. PHP opublikowało poprawione wydania; próby odnotowane przez AWS w środowisku honeypot nie przesądzają o włamaniu na rzeczywisty serwer.
Dlaczego te luki mają znaczenie
PHP może obsługiwać żądania internetowe w różnych konfiguracjach, także w usługach, których administrator nie kojarzy od razu z PHP. Dlatego warto sprawdzić, jaki runtime faktycznie odpowiada na żądania, zamiast ograniczać się do głównej aplikacji.
Co dzieje się w dwóch lukach PHP2Shell
CVE-2026-109618 dotyczy obsługi braku pamięci: część danych żądania może pozostać niekompletna, a późniejsze sprzątanie może potraktować je jak prawidłowe. CVE-2026-109619 wiąże się z nieaktualnym stanem wewnętrznym żądania. Po zwolnieniu pamięci stan może pozostać w procesie roboczym, a kolejne żądanie obsłużone przez ten sam proces może go wykorzystać.
PHP wskazuje jako potencjalnie zagrożone instalacje obsługujące ruch internetowy przez PHP-FPM, Apache mod_php, php-cgi, FrankenPHP i LiteSpeed. Najwyższe wykazane ryzyko dotyczy Apache mod_php. PHP uznaje obie luki za zdolne do umożliwienia zdalnego wykonania kodu bez logowania.
Co AWS zaobserwował w MadPot
Amazon Threat Intelligence poinformował, że telemetria honeypota MadPot odnotowała próbę wykorzystania luki 17 października 2026 r. AWS umieścił najwcześniejsze zidentyfikowane exploity proof of concept około 02:00 UTC 21 października. Między 02:00 a 08:00 UTC tego dnia zarejestrował kolejne próby skierowane przeciwko MadPot, a embargo na ujawnienie informacji zakończyło się o 14:00 UTC.
AWS nie rozstrzygnął, czy zaobserwowane próby zakończyłyby się powodzeniem na rzeczywistych systemach. Telemetria honeypota opisuje aktywność skierowaną do tego środowiska, a nie potwierdzone włamanie do serwera ofiary.
Co oznacza wskaźnik Check Point dla Polski
W raporcie z 22 października 2026 r. Check Point podał, że od ujawnienia luk próbami ich wykorzystania objęto 12% polskich organizacji. Wskaźnik firmy oznacza organizacje, wobec których podjęto próby, a nie potwierdzone udane włamania. Dla porównania Check Point podał 10% globalnie i 14% w Europie.
Które wersje PHP zawierają poprawki
PHP opublikowało poprawki w następujących wydaniach głównych gałęzi:
| Gałąź PHP | Pierwsze poprawione wydanie |
| PHP 8.5 | PHP 8.5.12 |
| PHP 8.4 | PHP 8.4.27 |
| PHP 8.3 | PHP 8.3.36 |
| PHP 8.2 | PHP 8.2.35 |
PHP 8.1 i starsze wersje nie otrzymują już aktualizacji z głównego projektu. Niektórzy dostawcy mogą jednak przygotować poprawki wsteczne dla swoich pakietów. Administrator powinien więc ustalić, który runtime obsługuje żądania, także w kontenerach i obrazach dostawców, a następnie sprawdzić jego wersję lub potwierdzoną poprawkę dostawcy. Komunikat PHP zawiera listę wydań i wskazówki dotyczące ograniczania ryzyka.
Dlaczego ustawienia i VPN nie zastępują aktualizacji
Wyłączenie session.upload_progress.enabled blokuje potwierdzone ścieżki związane z CVE-2026-109619, ale nie wszystkie jej warianty. Ustawienia memory_limit=-1 i limity rozmiaru żądań również dotyczą tylko określonych ścieżek. PHP wskazuje aktualizację jako jedyne pełne rozwiązanie dwóch luk PHP2Shell. Ograniczenie dostępu do usługi przez VPN może zmniejszyć jej osiągalność z sieci publicznej, ale nie naprawia podatnego runtime’u.
Osobna nota PHP opisuje mało prawdopodobny wektor zdalnego wykonania kodu CVE-2026-115560. Dotyczy on nietypowej konfiguracji, w której session.serialize_handler ma początkowo wartość php_binary albo php_serialize, następnie zostaje przełączony w czasie działania na php przed session_start(), a obsługa postępu przesyłania sesji pozostaje włączona. To odrębny problem, a nie jedna z dwóch luk PHP2Shell.
Sama instalacja poprawki nie usuwa złośliwego kodu ani szkód, które mogły już znaleźć się na serwerze. Check Point zaleca po aktualizacji sprawdzić nieznane pliki PHP, nietypowe żądania, nieoczekiwane uruchamianie poleceń systemowych i nieznane połączenia wychodzące.