PHP2Shell to nazwa dwóch krytycznych podatności w PHP (CVE-2026-109618 i CVE-2026-109619), ujawnionych 21 października 2026 roku. Pozwalają przejąć serwer sklepu jednym spreparowanym żądaniem, bez logowania i bez znajomości hasła. Dotyczą każdego sklepu PrestaShop, niezależnie od wersji i modułów, bo błąd siedzi w PHP — silniku, na którym działa PrestaShop — a nie w samym sklepie. Jedyną pełną ochroną jest aktualizacja PHP do wersji 8.2.35, 8.3.36, 8.4.27 lub 8.5.12. Najtrudniej mają starsze sklepy: PrestaShop 1.6, 1.7 i 8 działają na PHP, dla którego twórcy PHP nie wydali już oficjalnej poprawki. Poniżej wyjaśniamy prostym językiem, na czym polega luka, jak sprawdzić swój sklep i co zrobić krok po kroku.
- Czym jest PHP2Shell?
- Dlaczego luka w PHP dotyczy każdego sklepu PrestaShop?
- Starsze wersje PrestaShop: tu jest największy problem
- Hosting czy własny serwer: kto instaluje łatkę?
- Co zrobić teraz: 6 kroków
- Nowsze, powiązane podatności
- Serwer, o który nie musisz się martwić
- Źródła
- Najczęściej zadawane pytania
Czym jest PHP2Shell?
PHP to język i silnik, który na serwerze „wykonuje” PrestaShop: buduje strony, zapisuje zamówienia, wysyła maile. Jeśli porównać sklep do lokalu w galerii handlowej, PHP jest zamkiem w drzwiach całego budynku. W październiku 2026 roku okazało się, że ten zamek można otworzyć bez klucza.
Twórcy PHP opisali dwa błędy. Oba dostały ocenę 9,2 na 10 w skali CVSS, czyli poziom krytyczny:
- CVE-2026-109618 — gdy PHP zabraknie pamięci w trakcie odczytywania przesłanego formularza, zostawia po sobie „niedokończony” stan, który atakujący potrafi wykorzystać.
- CVE-2026-109619 — resztki po jednym żądaniu zostają w pamięci serwera i następne żądanie, obsłużone przez ten sam proces, może z nich skorzystać. Najprostsza droga ataku prowadzi przez funkcję postępu wysyłania plików (session upload progress), która w PHP jest domyślnie włączona.
Skutek obu to zdalne wykonanie kodu (RCE): atakujący uruchamia na Twoim serwerze dowolny program, zanim PrestaShop w ogóle zacznie działać. Sprawę pogorszył przeciek — szczegóły i narzędzie nazwane „PHP2Shell” krążyły w sieci dzień przed publikacją poprawek.
| Data | Co się stało |
|---|---|
| 20.10.2026 | PHP zapowiada pilne wydanie bezpieczeństwa; szczegóły luki wyciekają do sieci |
| 21.10.2026 | wydanie PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35 z poprawką oraz minimalne łatki dla PHP 7.4, 8.0 i 8.1 |
| 23.10.2026 | PHP ogłasza kolejną, powiązaną podatność CVE-2026-115560 |
| 26.10.2026 | amerykańska agencja CISA wpisuje obie luki do katalogu podatności wykorzystywanych w realnych atakach |
Dlaczego luka w PHP dotyczy każdego sklepu PrestaShop?
Większość podatności, o których piszemy w poradniku Bezpieczeństwo PrestaShop, dotyczy konkretnych modułów albo wersji sklepu — wystarczy zaktualizować moduł. PHP2Shell jest inny. Atak dzieje się w momencie, gdy serwer odczytuje przychodzące żądanie, czyli zanim zadziała jakikolwiek kod PrestaShop. Dlatego aktualizacja PrestaShop ani modułów nie pomoże — potwierdza to także oficjalny poradnik PrestaShop dla sprzedawców. Łatkę trzeba zainstalować na serwerze.
Sklep nie może też po prostu „wyłączyć formularzy”. PrestaShop korzysta z przesyłania plików w wielu miejscach: formularz kontaktowy z załącznikiem, personalizacja produktu, import CSV, zdjęcia produktów i instalacja modułów w panelu. Blokada takich żądań zepsułaby sklep.
Co może zrobić atakujący, który przejmie serwer? Wszystko, co może administrator: skopiować bazę klientów z adresami i telefonami, podmienić stronę płatności na fałszywą, wstawić złośliwy kod dla odwiedzających, rozsyłać spam z domeny sklepu albo zaszyfrować pliki i żądać okupu. Przy wycieku danych osobowych dochodzą obowiązki wobec klientów i urzędu ochrony danych.
Starsze wersje PrestaShop: tu jest największy problem
Każda wersja PrestaShop działa tylko z określonymi wersjami PHP. A twórcy PHP wspierają tylko kilka najnowszych gałęzi — PHP 8.1 i starsze nie dostają już oficjalnych wydań. Wyjątkowo, dla PHP 7.4, 8.0 i 8.1 zespół PHP przygotował minimalną łatkę w kodzie źródłowym, ale to, czy trafi na Twój serwer, zależy od firmy, która przygotowuje pakiety PHP dla serwera (np. dystrybucji Linuksa lub hostingu).
| Wersja PrestaShop | Najnowsze wspierane PHP | Poprawka PHP2Shell |
|---|---|---|
| 1.6.1 | 7.1 | brak oficjalnej; tylko jeśli dostawca pakietów przeniósł łatkę |
| 1.7.0 – 1.7.6 | 7.1 – 7.2 | brak oficjalnej; tylko jeśli dostawca pakietów przeniósł łatkę |
| 1.7.7 | 7.3 | brak oficjalnej; tylko jeśli dostawca pakietów przeniósł łatkę |
| 1.7.8 | 7.4 | minimalna łatka dla wersji bez wsparcia |
| 8.0 – 8.2 | 8.1 | minimalna łatka dla wersji bez wsparcia |
| 9.0 i 9.1 | 8.4 i 8.5 | pełna poprawka (PHP 8.2 lub nowsze) |
„Minimalna łatka” zamyka znane drogi ataku w prosty sposób: gdy PHP zabraknie pamięci, proces jest natychmiast kończony, a funkcja postępu wysyłania plików zostaje wyłączona na stałe. Działa, ale sami twórcy PHP nazywają ją minimum dla wersji bez wsparcia. Przy kolejnej podobnej luce takiej łatki może już nie być. Do tego PHP 8.2 traci wsparcie 31 grudnia 2026 roku, więc za dwa miesiące do tej grupy dołączą kolejne serwery.
Wniosek jest prosty: sklep na PrestaShop 1.7 lub 8 da się dziś załatać, ale z każdym miesiącem będzie trudniej. Bezpieczną drogą jest aktualizacja PrestaShop do wersji 9, która działa na wspieranym PHP.
Jak sprawdzić wersję PHP sklepu?
W panelu PrestaShop 1.7, 8 i 9 wejdź w Zaawansowane → Informacja. W sekcji z informacjami o serwerze zobaczysz wersję PHP. Uwaga: sam numer nie mówi wszystkiego. Pakiety z przeniesioną łatką często mają ten sam numer co wcześniej (np. 7.4.33 albo 8.1.34) i różnią się tylko wewnętrznym oznaczeniem pakietu. Dlatego przy starszym PHP zawsze zapytaj o łatkę osobę, która opiekuje się serwerem.
Hosting czy własny serwer: kto instaluje łatkę?
To zależy od tego, gdzie działa sklep — więcej o różnicach piszemy w porównaniu własny serwer czy hosting dla PrestaShop.
- Hosting współdzielony — PHP aktualizuje firma hostingowa, Ty nie masz na to wpływu. Starsze wersje PHP do wyboru w panelu hostingu nie zawsze dostają łatki. Zapytaj hosting na piśmie: „Czy poprawka CVE-2026-109618 i CVE-2026-109619 jest zainstalowana w wersji PHP, na której działa mój sklep?” — tak radzi też PrestaShop.
- Własny serwer VPS lub dedykowany — łatkę instaluje administrator, czyli Ty albo firma, która opiekuje się serwerem. Nikt nie zrobi tego automatycznie: popularne źródła pakietów PHP dla Ubuntu domyślnie nie są objęte automatycznymi aktualizacjami systemu.
- Serwer z opieką — aktualizacje bezpieczeństwa, także PHP, należą do administratora w ramach usługi.
Co zrobić teraz: 6 kroków
- Sprawdź wersję PHP w Zaawansowane → Informacja.
- Zapytaj hosting lub administratora, czy łatka jest zainstalowana. Poproś o odpowiedź na piśmie.
- Na własnym serwerze zaktualizuj PHP i zrestartuj wszystkie procesy PHP (PHP-FPM, Apache). Sama instalacja pakietów nie wystarczy, bo działające procesy wciąż używają starego kodu.
- Jeśli nie da się zaktualizować od razu, wyłącz postęp wysyłania plików w
php.inilub konfiguracji puli PHP-FPM (nie w.user.iniani przezini_set()— tam nie działa). PrestaShop z tej funkcji nie korzysta, więc nic się nie zepsuje. To obejście zamyka tylko część dróg ataku. - Sprawdź, czy nie było włamania: nowe pliki
.phpw katalogach sklepu, nieznane konta w Zaawansowane → Zespół, zmienione moduły płatności, nowe zadania cron. Objawy i postępowanie po ataku opisujemy w poradniku o bezpieczeństwie. - Zaplanuj aktualizację PrestaShop, jeśli sklep działa na PHP 8.1 lub starszym.
Dla administratorów serwerów z Ubuntu lub Debianem — aktualizacja i sprawdzenie, czy pakiet zawiera poprawkę (wynik większy od zera oznacza, że tak):
sudo apt update
sudo apt install --only-upgrade 'php*'
sudo systemctl restart php8.1-fpm
zcat /usr/share/doc/php8.1-common/changelog.Debian.gz | grep -c CVE-2026-109618
Tymczasowe obejście w php.ini lub w puli PHP-FPM:
session.upload_progress.enabled = 0
post_max_size = 32M
Wskazówka: zespół PHP proponuje też ustawienie
memory_limit=-1. Zamienia ono jednak ryzyko włamania na ryzyko, że jedno żądanie zajmie całą pamięć serwera i zatrzyma sklep. Bez dodatkowego limitu pamięci dla procesów PHP lepiej go nie stosować — to zadanie dla administratora, nie dla właściciela sklepu.
Nowsze, powiązane podatności
Po 21 października temat się nie skończył. Oto co doszło w kolejnych dniach:
- CVE-2026-115560 (23.10) — kolejna luka w tej samej funkcji postępu wysyłania plików. Działa tylko wtedy, gdy aplikacja w trakcie działania zmienia sposób zapisu sesji PHP (
session.serialize_handler). W kodzie PrestaShop 9 nie znaleźliśmy takiej zmiany, więc dla typowego sklepu ryzyko jest niskie. Poprawka trafi do najbliższego zwykłego wydania PHP, a do tego czasu chroni to samo ustawieniesession.upload_progress.enabled = 0. - Ataki w praktyce — 26 października CISA dopisała CVE-2026-109618 i CVE-2026-109619 do katalogu podatności wykorzystywanych w realnych atakach. W sieci są dziesiątki publicznych przykładów exploitów i ich wersje próbujące ominąć filtry WAF.
- CVE-2026-111497 (26.10) — błąd w bibliotece Brotli w wersjach PHP dla Windows. Sklepów na typowych serwerach z Linuksem nie dotyczy.
Cloudflare czy inny WAF może odsiać część automatycznych ataków, ale nie zastąpi łatki — szczególnie jeśli serwer sklepu jest dostępny w internecie z pominięciem Cloudflare. Jak to poprawnie ustawić, opisujemy w artykule Zabezpieczenie serwera PrestaShop.
Serwer, o który nie musisz się martwić
PHP2Shell dobrze pokazuje, że bezpieczeństwo sklepu to nie tylko moduły i hasła. Ktoś musi wiedzieć o nowej luce tego samego dnia, sprawdzić, czy dotyczy serwera, zainstalować łatkę, zrestartować usługi i sprawdzić, czy sklep działa. Jeśli nie chcesz robić tego sam, możesz to zlecić.
W usłudze Serwer i opieka administracyjna PrestaShop dostajesz własny serwer VPS przygotowany pod PrestaShop i administratora, który dba o regularne aktualizacje, w tym aktualizacje bezpieczeństwa. Serwer ma firewall, logowanie SSH tylko kluczem, fail2ban, Cloudflare z ochroną DDoS i WAF, monitoring oraz kopie zapasowe z 7 dni. Na awarie reagujemy w ciągu 4 godzin w dni robocze, a migracja sklepu jest w cenie. Usługa kosztuje 499 zł netto miesięcznie.
Jeśli podejrzewasz, że sklep mógł zostać zaatakowany, zanim łatka trafiła na serwer, zamów audyt bezpieczeństwa sklepu. Sprawdzimy rdzeń, moduły, konfigurację i ślady włamania, a w raporcie dostaniesz listę problemów z oceną ryzyka.
Źródła
- PHP: komunikaty z października 2026 — wersje z poprawką, obejścia, CVE-2026-115560.
- GHSA-w8hw-w9fx-j79w i GHSA-6wmf-4rv5-p3rp — szczegóły techniczne obu podatności.
- PrestaShop Help Center — zalecenia PrestaShop dla sprzedawców.
- CERT Polska, komunikat 195/2026 — krytyczne podatności w PHP.
- CISA Known Exploited Vulnerabilities — wpis obu luk z 26.10.2026.
- Wymagania systemowe PrestaShop 1.7, 8 i 9 — wspierane wersje PHP.
Najczęściej zadawane pytania
Czy aktualizacja PrestaShop lub modułów usuwa PHP2Shell?
Nie. Luka jest w PHP i atak następuje, zanim zadziała kod PrestaShop. Pomaga wyłącznie aktualizacja PHP na serwerze, a przy starszym PHP — pakiet z przeniesioną łatką. Aktualizacja PrestaShop do wersji 9 jest ważna z innego powodu: pozwala przejść na wspierane PHP i dostawać pełne poprawki w przyszłości.
Mam PrestaShop 1.7. Czy mój sklep jest zagrożony?
Tak, jeśli PHP na serwerze nie ma łatki. PrestaShop 1.7 działa najwyżej na PHP 7.4, dla którego istnieje tylko minimalna łatka, a starsze wydania 1.7 wymagają jeszcze starszego PHP. Zapytaj hosting, czy łatka jest zainstalowana, i zaplanuj przejście na PrestaShop 9.
Skąd mam wiedzieć, czy sklep został zaatakowany?
Typowe ślady to nowe pliki .php w katalogach sklepu, nieznane konta pracowników, zmiany w modułach płatności, nowe zadania cron i nietypowe procesy na serwerze. Brak objawów nie daje pewności, bo dobry atak jest cichy. Jeśli serwer był bez łatki po 21 października, warto zlecić przegląd.
Czy Cloudflare lub inny WAF wystarczy?
Nie. WAF może zatrzymać część automatycznych skanów, ale istnieją wersje ataku, które filtry przepuszczają. Do tego serwer jest często dostępny także bezpośrednio, z pominięciem Cloudflare. WAF to dodatkowa warstwa, a nie zamiennik aktualizacji PHP.
Czy sklep na hostingu współdzielonym jest bezpieczny?
Tak bezpieczny, jak szybko hosting zainstaluje łatkę dla wersji PHP, na której działa Twój sklep. Duże firmy hostingowe zwykle robią to szybko dla aktualnych wersji PHP, ale starsze wersje do wyboru w panelu bywają pomijane. Zapytaj o to na piśmie i nie zakładaj, że sprawa jest załatwiona.
Masz pytanie o PHP na serwerze swojego sklepu? Napisz do nas albo zobacz usługę Serwer i opieka administracyjna PrestaShop.