Wymagane do działania strony (logowanie, preferencje, bezpieczeństwo). Zawsze włączone.
Podatność PHP2Shell: aktualizacja PHP już dziś, obie luki RCE są wykorzystywane
Dwie krytyczne luki w PHP, CVE-2026-109618 i CVE-2026-109619, pozwalają uruchomić kod bez uwierzytelnienia i są już wykorzystywane. Poprawione wersje wyszły 21 października.
W tym artykule
Podatność PHP2Shell to w rzeczywistości dwie krytyczne luki w języku PHP, CVE-2026-109618 i CVE-2026-109619, które pozwalają atakującemu bez żadnych poświadczeń uruchomić kod na serwerze WWW. Projekt PHP opublikował poprawione wersje 21 października 2026 r., a pierwsze ataki zaobserwowano tego samego dnia. Jeśli serwer firmy lub klienta działa na PHP, trzeba go zaktualizować jeszcze dziś.

Co jest potwierdzone
Projekt PHP otrzymał pierwsze zgłoszenia 11 sierpnia 2026 r. Amazon Threat Intelligence zgłosił próbę wykorzystania luki 17 października, jeszcze przed publicznym ujawnieniem. 20 października szczegóły wyciekły do sieci przed uzgodnioną datą, a PHP przyspieszyło awaryjne wydanie na 21 października. Tego dnia watchTowr zaobserwował aktywne wykorzystywanie luk w swojej sieci honeypotów.
CVE-2026-109618 dotyczy obsługi błędów braku pamięci: jeśli PHP wyczerpie pamięć podczas przygotowywania danych żądania, dane te pozostają zainicjowane tylko częściowo, a końcowe czyszczenie traktuje je jako poprawne. CVE-2026-109619 to błąd niewyzerowanego stanu globalnego, który prowadzi do use-after-free na stercie, z odczytem pamięci i wykonaniem kodu. Obie luki umożliwiają zdalne wykonanie kodu, bez uwierzytelnienia, z uprawnieniami konta serwera WWW. Biuletyny dostawców zabezpieczeń oceniają je na 9,2 w skali CVSS v4.0.
Zagrożona jest każda instalacja PHP obsługująca żądania WWW: Apache z mod_php, PHP-FPM, php-cgi, LiteSpeed i FrankenPHP. Projekt PHP uważa, że ryzyko jest największe w przypadku mod_php, ponieważ atak może się udać, zanim uruchomi się jakikolwiek kod aplikacji. Z tego samego powodu zapora aplikacji webowych (WAF) lub agent RASP wewnątrz procesu PHP może go nie powstrzymać.
Podatność PHP2Shell: które wersje PHP są bezpieczne
- PHP 8.5: aktualizacja do wersji 8.5.12.
- PHP 8.4: aktualizacja do wersji 8.4.27.
- PHP 8.3: aktualizacja do wersji 8.3.36.
- PHP 8.2: aktualizacja do wersji 8.2.35.
- PHP 8.1, 8.0 i 7.4: brak oficjalnego wydania. Minimalne backporty istnieją tylko jako kod źródłowy albo w pakietach dystrybucji i dostawców LTS.
- PHP 7.3 i starsze, w tym PHP 5: brak poprawki, trzeba przejść na wspieraną gałąź.
Dystrybucje Linuksa często naprawiają lukę bez zmiany numeru wersji: należy sprawdzić changelog pakietu, a nie tylko wynik polecenia php -v.
Co się mówi
Źródła nie są zgodne co do stanu exploita. Część badaczy twierdzi, że obie luki są już połączone w jeden działający skrypt oraz że publicznie dostępne są analizy i narzędzie. Huntress napisał, że nie odtworzył proof of concept, a JFrog ostrzegł, że krążą fałszywe exploity. Kto pobiera rzekomy exploit PHP2Shell z forum, ryzykuje zainstalowanie złośliwego oprogramowania.
Według watchTowr na 22 października luk nie było w katalogu CISA KEV. Brytyjskie Narodowe Centrum Cyberbezpieczeństwa (NCSC) wezwało do natychmiastowej aktualizacji lub odłączenia narażonych systemów od sieci. VirusTotal szacuje, że z internetu osiągalnych jest ponad 5,1 mln hostów PHP.
Dlaczego to ważne
Kto odpowiada za IT w małej lub średniej firmie albo u kilku klientów, powinien pamiętać, że PHP nie działa tylko w samodzielnie napisanych stronach. Jest w WordPressie, Joomli, Magento, PrestaShop, poczcie webowej, starych aplikacjach firmowych i w każdym kontenerze, którego obraz bazowy zawiera PHP. Kontener zachowuje wersję PHP, z którą został zbudowany: trzeba go przebudować lub pobrać poprawiony obraz i wdrożyć ponownie.
Co zrobić dziś
- Zrobić inwentaryzację:
php -vna każdym hoście idocker exec <container> php -vw każdym kontenerze obsługującym PHP. - Zaktualizować do poprawionej wersji lub do poprawionego pakietu dostawcy, a następnie zrestartować PHP-FPM lub Apache.
- Jeśli aktualizacja nie jest możliwa od razu, odciąć ten system od bezpośredniego dostępu z internetu.
- Środki tymczasowe, które nie chronią w pełni:
session.upload_progress.enabled=0i restart workerów, niskipost_max_size(8M, a 32M, jeśli potrzebne są uploady) oraz limity pamięci na poziomie kontenera. - Przejrzeć logi dostępu od 17 października, a jeśli istnieje podejrzenie, że odczytano pamięć procesów, zmienić hasła, tokeny i klucze API.
Projekt PHP jasno stwierdza, że żadna konfiguracja nie łagodzi w pełni tych luk, a aktualizacja jest jedyną trwałą obroną. Pomoc w ustaleniu priorytetów i szybkim łataniu zapewniają nasze usługi cyberbezpieczeństwa.
Źródła: watchTowr, FAQ o PHP2Shell; BleepingComputer; Qualys; JFrog; Huntress.