Crmgo Blog

PHP2Shell: Krytyczne podatności w PHP (CVE-2026-109618, CVE-2026-109619) — Pilnie zaktualizuj do 8.5.12, 8.4.27, 8.3.36, 8.2.35

PHP2Shell: Krytyczne podatności w PHP (CVE-2026-109618, CVE-2026-109619) — Pilnie zaktualizuj do 8.5.12, 8.4.27, 8.3.36, 8.2.35

21 października 2026 roku PHP wydał pilne aktualizacje 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Poprawiają one dwie krytyczne luki w zabezpieczeniach (CVSS 9.2), umożliwiające zdalne wykonywanie kodu bez uwierzytelniania w PHP-FPM, mod_php, php-cgi, FrankenPHP i LiteSpeed.

PHP2Shell: Krytyczne podatności w PHP (CVE-2026-109618, CVE-2026-109619) — Pilnie zaktualizuj do 8.5.12, 8.4.27, 8.3.36, 8.2.35

21 października 2026 roku zespół PHP wydał awaryjne aktualizacje bezpieczeństwa PHP 8.5.12, 8.4.27, 8.3.36 oraz 8.2.35. Zamykają one dwie krytyczne luki, które umożliwiają zdalne wykonanie kodu bez uwierzytelnienia: CVE-2026-109618 i CVE-2026-109619. Obie mają ocenę CVSS v4.0 9.2. W mediach nazywa się je razem PHP2Shell.

Co się stało

Obie podatności wiążą się z tym, że PHP może pozostawić pamięć w uszkodzonym stanie, jeśli żądanie zakończy się awaryjnie:

  • CVE-2026-109618 (GHSA-w8hw-w9fx-j79w): RCE przez uszkodzenie pamięci przy braku pamięci (OOM). Jeśli żądanie osiągnie memory_limit w nieodpowiednim momencie, wewnętrzne dane żądania pozostają tylko częściowo zainicjalizowane. Podczas czyszczenia żądania PHP może uznać je za poprawne. W Apache z mod_php atak można uruchomić nieuwierzytelnionym żądaniem jeszcze przed wykonaniem kodu aplikacji. Według PHP Foundation pełne zdalne wykonanie kodu zademonstrowano z ustawieniami domyślnymi. W PHP-FPM RCE potwierdzono przez ścieżki w kodzie aplikacji.
  • CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): RCE przez „przestarzały" stan globalny. Błąd krytyczny w nieodpowiednim momencie może pozostawić stan wewnętrzny wskazujący na już zwolnioną pamięć poprzedniego żądania. Następne żądanie w tym samym workerze może wykorzystać tę pamięć (use-after-free). Skutki: wyciek danych z pamięci, awaria workera oraz wykonanie kodu.

Kogo to dotyczy

Według zespołu PHP zagrożone są wszystkie instalacje PHP obsługujące żądania sieciowe: PHP-FPM, Apache z mod_php, php-cgi, FrankenPHP i LiteSpeed. Najwyższe ryzyko dotyczy mod_php.

Podatne wersje (według biuletynu AWS):

  • PHP 8.5.0–8.5.11: naprawiono w 8.5.12
  • PHP 8.4.0–8.4.26: naprawiono w 8.4.27
  • PHP 8.3.0–8.3.35: naprawiono w 8.3.36
  • PHP 8.2.0–8.2.34: naprawiono w 8.2.35
  • PHP 8.1 i starsze nie są już wspierane przez projekt PHP. Zespół bezpieczeństwa PHP opublikował minimalne backporty kodu źródłowego dla 7.4, 8.0 i 8.1. Sprawdź także aktualizacje od swojego dystrybutora lub dostawcy LTS.

Poprawki trafiły również do testowej kompilacji PHP 8.6.0 RC4.

Jak poważne jest to zagrożenie

PHP działa na większości stron na świecie, m.in. na WordPress, Joomla, Drupal, Laravel i Symfony. Według BleepingComputer Cloudflare jeszcze przed wydaniem poprawek odnotowywał pierwsze próby ataków i wdrożył tymczasowe reguły WAF. Brytyjski NCSC wezwał do natychmiastowej aktualizacji lub tymczasowego wyłączenia podatnych systemów. Twórcy PHP podkreślają, że nie ma pełnych obejść: niezawodnie chroni wyłącznie aktualizacja.

Co zrobić teraz

  1. Sprawdź wersję PHP. W konsoli wykonaj php -v. Dla serwera WWW wersja może się różnić, więc sprawdź ją przez phpinfo() lub w panelu hostingu. Dla FPM wykonaj php-fpm -v (lub np. php-fpm8.3 -v).
  2. Zaktualizuj do 8.5.12, 8.4.27, 8.3.36 lub 8.2.35. W Linuksie zainstaluj zaktualizowane pakiety swojego dystrybutora (dystrybutory otrzymały poprawki wcześniej), np. apt update && apt upgrade lub dnf upgrade php*.
  3. Zrestartuj wszystkie workery PHP-FPM, Apache i innych SAPI. Przebuduj i ponownie wdróż obrazy Docker.
  4. Jeśli masz PHP 8.1 lub starsze, zaplanuj migrację do wspieranej gałęzi. Zwróć też uwagę, że wsparcie PHP 8.2 kończy się 31 grudnia 2026 roku.

Środki tymczasowe, jeśli nie można natychmiast zaktualizować (zmniejszają jedynie ryzyko, ale go nie eliminują):

  • Dla CVE-2026-109618: ustaw memory_limit=-1 przez php_admin_value, aby aplikacja nie mogła zmienić tej wartości. Zmniejsz post_max_size do 8M (lub do 32M, jeśli potrzebne jest przesyłanie plików). Ogranicz rozmiar i złożoność żądań na poziomie serwera WWW lub proxy.
  • Dla CVE-2026-109619: ustaw session.upload_progress.enabled=0 w php.ini lub w konfiguracji puli FPM i zrestartuj workery. W PHP 8.5 ustaw także fatal_error_backtraces=0.

Źródła

Zaktualizujemy Twój projekt do nowej wersji PHP

Zespół CRM Go aktualizuje projekty klientów do aktualnych, zabezpieczonych wersji PHP. Sprawdzamy zgodność kodu, aktualizujemy zależności i frameworki, testujemy projekt i wdrażamy aktualizacje bez przestoju strony. Jeśli nie masz pewności, czy Twój serwer jest już zabezpieczony przed PHP2Shell, napisz do nas, a pomożemy.

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.