Przejdź do treści
← Wróć do bloga
BezpieczeństwoPHP2Shell, październik 2026

PHP2Shell (CVE-2026-109618, CVE-2026-109619): jak załatać PHP

PHP2Shell to dwie krytyczne luki w samym PHP, obie z oceną 9,2 w CVSS v4.0. Jedno zapytanie bez logowania może uruchomić kod na serwerze. Dotyczy WordPressa, WooCommerce, Magento, Drupala, Joomli, Laravela i Symfony. Instrukcja aktualizacji i pomoc inżyniera.

Dwie luki w silniku PHP pozwalają przejąć serwer jednym zapytaniem, bez logowania i zanim ruszy kod strony. Pomaga tylko nowa wersja PHP na każdym serwerze.

Autor

Syntalith

Opublikowano Zaktualizowano 7 min czytania

PHP2Shell to dwie krytyczne luki w samym silniku PHP: CVE-2026-109618 i CVE-2026-109619. Według Datadog Security Labs (2026) obie mają ocenę 9,2 w CVSS v4.0, czyli niemal najwyższą w skali do 10. Jedno spreparowane zapytanie, bez logowania, może uruchomić na serwerze kod atakującego, zanim w ogóle ruszy kod strony. Naprawiają je PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35, wydane 21 października 2026 r.

Według W3Techs (2026) PHP działa na 69,3% stron, których język serwera da się ustalić. Na PHP stoją WordPress i WooCommerce, Magento, PrestaShop i Shopware, Drupal i Joomla, aplikacje na Laravelu, Symfony, Laminas (dawniej Zend Framework) i CodeIgniter. Aktualizacja samej strony czy wtyczek nic tu nie daje. Trzeba podnieść wersję PHP na każdym serwerze, w każdym obrazie kontenera i w każdym potoku wdrożeń.

Co to jest PHP2Shell i jak groźne są te luki

Obie luki siedzą w tym, jak PHP przyjmuje formularze z plikami, czyli zapytania multipart/form-data. PHP robi to sam, zanim przekaże zapytanie do strony.

CVE-2026-109618 uruchamia się, gdy PHP zabraknie pamięci w trakcie zapytania. Część danych zostaje wtedy w niepełnym stanie, a sprzątanie po zapytaniu traktuje je jak poprawne. CVE-2026-109619 polega na tym, że proces PHP zachowuje odwołanie do zwolnionej pamięci, a następne zapytanie w tym samym procesie może jej użyć.

Skutki opisują sami dostawcy chmur. Google Cloud pisze, że przy takiej ocenie atakujący może zawiesić i przejąć system oraz łatwo ukraść, zmienić albo skasować jego dane. Vercel dodaje ujawnienie danych z zapytań innych użytkowników i wyłączenie usługi. Kod uruchomiony przez PHP ma uprawnienia strony: widzi jej pliki konfiguracyjne z hasłami do bazy, bazę klientów i zamówień, klucze do bramek płatności i poczty.

Trzy rzeczy sprawiają, że te luki są wyjątkowo groźne:

  • Logowanie nic nie daje. Datadog potwierdził, że PHP przetwarza złośliwe zapytanie, zanim aplikacja je zobaczy. Wystarczy dowolny skrypt PHP, nawet taki, który tylko coś wyświetla.
  • Ataki zaczęły się przed poprawką. Według Datadog AWS widział próby wykorzystania PHP2Shell 17 października, 4 dni przed publikacją.
  • Exploity są publiczne. VulnCheck uruchomił własny exploit na PHP 8.4.10 do 8.4.26 w konfiguracji produkcyjnej, a Vercel pisze o działających publicznych exploitach.

Co może się stać z Twoją firmą: przykłady

Atakujący, który uruchomi kod na serwerze sklepu albo strony, ma te same możliwości co sama strona. Oto, co może zrobić z niezałatanym PHP:

Co atakujący może zrobićCo to znaczy dla firmy
Skopiować bazę klientów: imiona, adresy, telefony, e-maile, historię zamówień, skróty hasełWyciek danych osobowych, zgłoszenie do UODO, list do każdego klienta
Dopisać skrypt do strony płatności, który przechwytuje dane kartKlienci tracą pieniądze, a sklep traci zaufanie banku i operatora płatności
Podmienić numer konta na fakturach albo w mailach z potwierdzeniem zamówieniaKlienci płacą przestępcy, a firma traci przychód
Ukraść klucze do bramki płatności, poczty, chmury i APIRachunki za cudze użycie, wysyłka spamu i phishingu z Waszej domeny
Zaszyfrować pliki i bazę i zażądać okupuSklep stoi, zamówienia przepadają, odtwarzanie z kopii trwa dni
Wgrać na serwer botnet albo koparkę kryptowalutSerwer atakuje innych z Waszego adresu, a hosting może go wyłączyć

Ostatni przykład już się zdarza: Sophos widział próby wgrania przez PHP2Shell odmiany botnetu Mirai.

Wyciek danych klientów ma też skutki prawne. Według RODO (2016) firma ma 72 godziny od wykrycia naruszenia na zgłoszenie go organowi nadzorczemu, w Polsce UODO. Według RODO (2016) za naruszenie obowiązków bezpieczeństwa i zgłaszania grozi kara do 10 mln euro albo do 2% całkowitego rocznego obrotu, zależnie od tego, która kwota jest wyższa. Źródło: RODO, rozporządzenie 2016/679, art. 33 i art. 83 ust. 4.

PHP2Shell w liczbach: statystyki 2026

Dane sprawdziliśmy 23 października 2026 r.

  • Według W3Techs (2026) PHP działa na 69,3% stron internetowych, których język serwera jest znany.
  • Według W3Techs (2026) WordPress, napisany w PHP, obsługuje 39,6% wszystkich stron internetowych.
  • Według W3Techs (2026) 26,9% stron na PHP działa na wersji 7, a 7,7% na wersji 5, i żadna z tych gałęzi nie dostanie wydania z poprawką.
  • Według Google Cloud (2026) podatne są wszystkie wersje PHP od 5.4 do 8.5.11.
  • Według Datadog Security Labs (2026) AWS widział próby ataku PHP2Shell 17 października 2026 r., 4 dni przed publikacją poprawek.
  • Według Google Cloud (2026) Google Security Operations dodało 23 nowe reguły wykrywania tego ataku.

Źródła: W3Techs, PHP, W3Techs, WordPress, komunikat PHP, Google Cloud, Datadog Security Labs.

Kogo dotyczy PHP2Shell: sklepy, WordPress, Laravel i hosting

Według komunikatu PHP zagrożona jest każda instalacja, która obsługuje zapytania z sieci: PHP-FPM, Apache z mod_php, php-cgi, FrankenPHP i LiteSpeed. Największe ryzyko PHP widzi przy mod_php. Tam pokazano exploit, w którym jedno zapytanie bez logowania uruchamia atak, zanim ruszy kod aplikacji.

Vercel pisze wprost, że systemy i frameworki zbudowane na PHP są podatne, gdy działają na podatnej wersji PHP. W praktyce to:

RodzajPrzykłady
Sklepy internetoweWooCommerce, Magento, PrestaShop, Shopware
Systemy treściWordPress, Drupal, Joomla
Frameworki aplikacjiLaravel, Symfony, Laminas (dawniej Zend), CodeIgniter
Hostinghosting współdzielony, panele typu cPanel, serwery VPS z PHP
Narzędzia wewnętrzneintranety, panele administracyjne, stare skrypty

Najbardziej narażone są serwery, o których nikt nie pamięta: stara wersja strony, sklep testowy, panel postawiony lata temu. Te działają często na PHP 7 albo 5, a dla nich PHP nie wyda poprawki.

Które wersje PHP są podatne, a które naprawione

Gałąź PHPWersja z poprawkąStatus
8.58.5.12Wspierana
8.48.4.27Wspierana
8.38.3.36Wspierana
8.28.2.35Wspierana
8.1, 8.0, 7.4Brak wydania od PHPKoniec wsparcia, same poprawki źródłowe
7.3 i starsze, od 5.4Brak poprawkiKoniec wsparcia

Zespół bezpieczeństwa PHP przygotował minimalne poprawki źródłowe dla PHP 7.4, 8.0 i 8.1. Pomagają tylko tym, którzy sami budują PHP ze źródeł. Część dystrybucji Linuksa i dostawców długiego wsparcia wydaje własne paczki, więc sprawdź komunikat swojego dostawcy. PHP ostrzega też użytkowników repozytorium rpms.remirepo.net, które w dniu publikacji nie miało aktualizacji.

Jak załatać PHP2Shell: instrukcja krok po kroku

  1. Spisz wszystkie miejsca, w których działa PHP: serwery, kontenery, hosting, maszyny w CI, stare strony i panele.
  2. Sprawdź wersję PHP w każdym z nich, w środowisku, które obsługuje ruch.
  3. Zaktualizuj PHP do 8.5.12, 8.4.27, 8.3.36 albo 8.2.35, zależnie od gałęzi.
  4. Przebuduj obrazy kontenerów na obrazie bazowym z poprawką i wdroż je ponownie.
  5. Zrestartuj wszystkie procesy PHP-FPM i Apache, żeby żaden nie został na starej wersji.
  6. Sprawdź wersję jeszcze raz, już po wdrożeniu.
  7. Serwery na PHP 8.1 i starszym przenieś na wspieraną gałąź i sprawdź, czy strona działa po zmianie.

Polecenia do sprawdzenia wersji i restartu:

php -v                                   # serwer lub maszyna wirtualna
php-fpm -v                               # proces, który obsługuje ruch
docker run --rm <obraz> php -v           # każdy obraz kontenera
sudo apt update && sudo apt upgrade      # Debian, Ubuntu: paczki z poprawką
sudo systemctl restart php8.3-fpm        # restart FPM (nazwa zależy od wersji)
docker build --pull --no-cache -t <obraz> .   # przebudowa obrazu na nowej bazie

Na hostingu współdzielonym wersję widać w panelu albo w wyniku phpinfo(). Zapytaj hosting, czy wgrał już poprawkę. Przy Google Cloud wspierane środowiska App Engine standard aktualizują się same, ale App Engine flexible, Cloud Run bez automatycznych aktualizacji obrazu i GKE wymagają przebudowy i ponownego wdrożenia. Wersja na laptopie programisty nic nie mówi o produkcji.

Co zrobić, jeśli nie możesz zaktualizować PHP dziś

PHP opisuje kilka ustawień, które zmniejszają ryzyko na konkretnych ścieżkach ataku. Żadne z nich nie zabezpiecza serwera w pełni, a Datadog sprawdził, że popularne obejście z session.upload_progress.enabled=0 nie chroni w pełni.

  • Ustaw memory_limit=-1 tak, żeby aplikacja nie mogła tego zmienić, na przykład przez php_admin_value w puli FPM.
  • Ustaw niski post_max_size: 8M bez przesyłania plików, 32M z przesyłaniem. upload_max_filesize trzymaj poniżej tej wartości.
  • Ustaw session.upload_progress.enabled=0 w php.ini albo w puli FPM i zrestartuj wszystkie procesy.
  • Na PHP 8.5 ustaw fatal_error_backtraces=0 i zrestartuj procesy.
  • Włącz reguły WAF dostawcy. Google Cloud Armor, AWS WAF i Vercel mają już reguły na PHP2Shell.

Te ustawienia dają czas do aktualizacji, którą i tak trzeba zrobić.

Czy PHP2Shell jest już wykorzystywany?

Próby trwają. Vercel pisze o próbach ataków zgłaszanych w całej branży. Sophos w aktualizacji z 22 października widział skanowanie i niewielką liczbę nieudanych prób, w których przestępcy chcieli wgrać na serwer odmianę botnetu Mirai. VulnCheck naliczył setki repozytoriów z rzekomymi exploitami na GitHubie, z których tylko nieliczne działały.

Sophos zauważa, że zbudowanie działającego exploita jest trudne, i dodaje, że z czasem przestępcy mogą je dopracować. Zalecenie się nie zmienia: każdy serwer z podatnym PHP trzeba zaktualizować.

Jak Syntalith pomaga załatać PHP2Shell

Możemy zrobić to za Was, od listy serwerów po sprawdzenie wyniku. Najpierw szukamy PHP na serwerach, w kontenerach, w CI i u dostawców hostingu, także w stronach i panelach, o których zespół zapomniał. Potem podnosimy PHP do wersji z poprawką, przebudowujemy obrazy, wdrażamy usługi ponownie i restartujemy procesy. Strony na PHP 7 i 5 przenosimy na wspieraną gałąź i sprawdzamy, czy sklep, formularze i panel działają po zmianie. Tam, gdzie aktualizacja musi poczekać, ustawiamy reguły WAF i ustawienia z komunikatu PHP.

Na koniec sprawdzamy wersję w środowisku, które obsługuje ruch, i dajemy raport na piśmie: co było podatne, co zaktualizowaliśmy, co zostało i dlaczego. Pracujemy na Waszej infrastrukturze, z dostępami tylko na czas zadania.

Te same kroki robimy u siebie. 23 października przenieśliśmy własną stronę, system rezerwacji i serwer MCP na Node.js 24.22.1 z poprawką luki Node2Shell.

Zacznij od bezpłatnej, 30-minutowej rozmowy z inżynierem. Powiedz, gdzie działa PHP, a my powiemy, od czego zacząć i ile to potrwa. Umów rozmowę.

Ten sam tydzień przyniósł dwa inne pilne problemy: skompromitowane certyfikaty eMudhra i lukę Node2Shell w Node.js.

Najczęstsze pytania

Co to jest PHP2Shell?
PHP2Shell to nazwa dwóch krytycznych luk w silniku PHP: CVE-2026-109618 i CVE-2026-109619. Obie mają ocenę 9,2 w CVSS v4.0 i pozwalają uruchomić kod na serwerze bez logowania, zanim zadziała kod aplikacji. PHP opublikował poprawki 21 października 2026 r.
Które wersje PHP naprawiają PHP2Shell?
PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Podatne są wszystkie wersje od 5.4 do 8.5.11. PHP 8.1 i starsze nie dostają już wydań od projektu PHP.
Czy aktualizacja WordPressa albo wtyczek usuwa PHP2Shell?
Nie usuwa. Luka siedzi w samym PHP, więc trzeba zaktualizować PHP na serwerze, który obsługuje ruch. WordPress, WooCommerce, Magento, Drupal, Joomla, Laravel i Symfony są podatne, gdy działają na podatnej wersji PHP.
Czy WAF wystarczy zamiast aktualizacji?
Nie wystarczy. Google Cloud, AWS i Vercel opisują reguły WAF jako zabezpieczenie na czas aktualizacji. Pełną ochronę daje tylko nowa wersja PHP i ponowne wdrożenie usługi.
Czy Syntalith może załatać nasze serwery PHP?
Tak. Inżynier spisuje serwery, kontenery i hosting z PHP, aktualizuje je, wdraża ponownie i sprawdza wersję, która naprawdę obsługuje ruch. Zaczynamy od bezpłatnej, 30-minutowej rozmowy.

Aktualizacje bezpieczeństwa

Nie wiesz, czy Wasze serwery są już załatane?

Powiedz inżynierowi w 30 minut, gdzie działają strona, sklep i aplikacje. Spiszemy podatne wersje, zaktualizujemy je, wdrożymy usługi ponownie i sprawdzimy wynik na produkcji.

Rozmowa z inżynierem
0 zł30 minut, plan prac na piśmie w 2 dni robocze
Zakres
PHP, Node.js, Go, certyfikatyserwery, kontenery, hosting i CI
Na koniec
raport na piśmieco było podatne, co zaktualizowaliśmy, co zostało

Terminy zobaczysz w swojej strefie czasowej.

Poznaj inżynierów, którzy wykonają pracę

Co Ci daje, że jesteśmy partnerem OpenAI i Anthropic?

OpenAI robi ChatGPT, a Anthropic robi Claude. Należymy do programów partnerskich obu firm, więc pracujemy z ich narzędziami na co dzień i uczymy się od samych twórców.

OpenAI Select PartnerClaude Partner Network
01Dobierzemy narzędzie do zadania
Wdrażamy i ChatGPT, i Claude. Oba sprawdzamy na Twoich dokumentach, a Ty wybierasz to, które robi mniej poprawek i oszczędza więcej czasu.
02Wiedza prosto od twórców
Uczymy się z oficjalnych kursów i materiałów OpenAI i Anthropic. Twój zespół poznaje funkcje i ustawienia, które działają dziś.
03Licencje bez naszej marży
Konta kupujesz bezpośrednio u OpenAI albo Anthropic i dostajesz od nich fakturę. Do licencji nic nie doliczamy.
04Certyfikowani inżynierowie
W zespole mamy certyfikat AWS z uczenia maszynowego i certyfikat Anthropic z architektury systemów na Claude.

Udział w programach nie oznacza, że OpenAI albo Anthropic polecają nasze usługi.