Aktuální situace: PHP2Shell. Dvě kritické zranitelnosti PHP (CVSS 9.2) umožňují spustit škodlivý kód bez přihlášení. Záplaty od 21. 10. 2026.Co nyní udělat →

CVE-2026-109618: RCE přes stav nedostatku paměti

CVE-2026-109618 je jedna ze dvou zranitelností PHP2Shell: stav out of memory může přerušit PHP uprostřed zpracování požadavku. Opraveno od PHP 8.5.12, 8.4.27, 8.3.36 a 8.2.35.

Stav 4 min čteníPHP2Shell

Stručně: CVE-2026-109618 je jedna ze dvou zranitelností za PHP2Shell. Stav out of memory může přerušit PHP ve chvíli, kdy jsou data požadavku inicializována jen částečně; při úklidu pak mohou neplatná data platit za platná. To umožňuje spuštění kódu bez přihlášení. Chyba je opravena v PHP 8.5.12, 8.4.27, 8.3.36 a 8.2.35.

Co je CVE-2026-109618?

CVE-2026-109618 (označení GitHub GHSA-w8hw-w9fx-j79w) je zranitelnost typu chyba paměti v jádru PHP. Je hodnocena CVSS v4.0 9.2. Spolu s CVE-2026-109619 tvoří to, co se v médiích označuje jako PHP2Shell.

Důsledkem je takzvané unauthenticated Remote Code Execution: útočník může na dálku a bez uživatelského účtu spouštět kód na webovém serveru. Zranitelnost tak patří do nejnebezpečnější třídy slabin, které může webový server mít.

Jak zranitelnost zásadně vzniká

Když PHP zpracovává webový požadavek, vytváří si interně datové struktury pro tento požadavek, například pro odeslaná data formuláře. Pokud PHP přitom narazí na svůj limit paměti, skončí stavem out of memory. Podle php.net se to může stát ve chvíli, kdy jsou data požadavku inicializována teprve částečně.

Na konci každého požadavku PHP uklízí a uvolňuje paměť. Právě tam je chyba: úklid může neplatná, jen napůl vytvořená data považovat za platná. Z tohoto chybného chování lze za určitých podmínek odvodit spuštění kódu.

Proč je taková chyba tak závažná? Chyba paměti v programovacím jazyce se týká všech aplikací, které na něm běží, bez ohledu na to, jak pečlivě jsou naprogramovány. Udržovaná instalace WordPressu s aktuálními pluginy je postižena stejně jako stará vlastní aplikace. Proto zde nepomůže aktualizace aplikace, ale jen aktualizace PHP.

Další technické podrobnosti ke zneužití záměrně nezveřejňujeme. Pro obranu nejsou potřeba: rozhodující je, zda váš server používá opravenou verzi a zda skutečně běží nové procesy.

Postižené verze a provozní režimy

Větev PHP Poslední stav před opravou Opraveno od
8.5 8.5.11 8.5.12
8.4 8.4.26 8.4.27
8.3 8.3.35 8.3.36
8.2 8.2.34 8.2.35
8.1 a starší žádná oficiální aktualizace jen minimální zdrojové backporty pro 7.4, 8.0, 8.1

Postiženy jsou provozní režimy PHP-FPM, Apache s mod_php, php-cgi, FrankenPHP a LiteSpeed. Tým PHP hodnotí riziko u mod_php jako nejvyšší. Distribuce a poskytovatelé hostingu někdy nasazují backporty, takže se zobrazuje starší číslo verze, přestože je chyba opravena. Rozhodující jsou stav balíčku a potvrzení poskytovatele.

K řádu velikosti: Palo Alto Networks (Unit 42) napočítalo více než 22,6 milionu exponovaných, potenciálně zranitelných instancí. BSI (německý Spolkový úřad pro informační bezpečnost) vyhlásil výstražný stupeň 3 (oranžový) a počítal s rychlým plošným zneužíváním.

Odstranění CVE-2026-109618: aktualizace a restart

Jediným úplným řešením je aktualizace. Nejprve zkontrolujte verzi a stav balíčku. Názvy balíčků se liší podle distribuce; příklady vycházejí z PHP 8.3:

php -v
apt policy php8.3-fpm          # Debian/Ubuntu
dnf info php-fpm               # RHEL, AlmaLinux, Rocky, Fedora
rpm -q --changelog php-fpm | grep -i "CVE-2026-109618"

Pokud changelog balíčku uvádí číslo CVE, je backport nasazen. Pokud chybí, neznamená to automaticky, že je balíček zranitelný; pomůže pak porovnání s tabulkou verzí nebo dotaz u poskytovatele.

Po aktualizaci je nutné restartovat všechny procesy PHP, například pomocí systemctl restart php8.3-fpm nebo u mod_php restartem Apache. Jak zajistit, že neběží žádný starý worker, najdete na stránce Restart PHP-FPM a všech workerů.

Přechodná opatření, pokud aktualizace zatím nejde

php.net zveřejnil k PHP2Shell přechodná opatření. Platí společně pro obě zranitelnosti a výslovně nejsou úplnou ochranou. To, že se několik z nich týká limitů paměti, odpovídá spouštěči out of memory u CVE-2026-109618; oficiální přiřazení jednotlivých opatření k jednotlivým CVE ale neexistuje.

; Příklad poolu FPM, např. /etc/php/8.3/fpm/pool.d/www.conf (cesta se liší podle distribuce)
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M          ; 32M, pokud jsou potřeba uploady
php_admin_value[upload_max_filesize] = 6M    ; immer unter post_max_size
php_admin_flag[session.upload_progress.enabled] = off

Hodnoty musí být nastaveny tak, aby je aplikace nemohly přepsat, proto php_admin_value. U memory_limit=-1 potřebuje služba limit paměti zvenčí, přes kontejner nebo cgroup, ne přes RLIMIT_AS nebo RLIMIT_DATA. U PHP 8.5 přibývá fatal_error_backtraces=0. Všechny podrobnosti najdete na stránce Okamžitá opatření, když zatím nelze záplatovat.

Důležité

Pokud není okamžitě možná ani aktualizace, ani přechodná opatření, BSI doporučuje postižené webové servery dočasně odpojit od sítě.

Jak konkrétně pomáhá PHP SOS?

Prostřednictvím naší služby záplatování PHP uzavíráme CVE-2026-109618 strukturovaně:

  • Zjistit skutečný stav: větev PHP, provozní režim, zdroj balíčků a stav backportu pro každý server.
  • Nasadit aktualizaci z vhodného zdroje balíčků nebo, kde to nejde, čistě nastavit přechodná opatření v konfiguraci poolu či serveru.
  • Zkontrolovat restart: ověříme, že neběží žádné staré procesy PHP.
  • Doklad: Obdržíte dokumentaci s verzemi a stavy balíčků před zásahem a po něm, například pro vedení, pojišťovnu nebo ochranu osobních údajů.

Časté dotazy

Jak kritická je CVE-2026-109618?

Zranitelnost je hodnocena CVSS v4.0 9.2, tedy jako kritická. Umožňuje spuštění škodlivého kódu na dálku bez přihlášení. Německý BSI vyhlásil k PHP2Shell výstražný stupeň 3 (oranžový).

Stačí zvýšit memory_limit?

Ne. php.net uvádí memory_limit=-1, pevně nastavené v konfiguraci serveru, jako jedno z několika přechodných opatření. Výslovně to není úplná ochrana a vyžaduje limit paměti přes kontejner nebo cgroup. Řešením zůstává aktualizace.

Jaké označení GHSA patří k CVE-2026-109618?

V GitHub Security Advisory je zranitelnost vedena pod GHSA-w8hw-w9fx-j79w. Druhá zranitelnost PHP2Shell, CVE-2026-109619, má označení GHSA-6wmf-4rv5-p3rp.

Zdroje

Okamžitý kontakt

Každá hodina se počítá. Napište nám hned.

Stručně popište systém, verzi PHP a pozorování. Ozveme se, vyjasníme situaci a budeme pracovat na dálku, dokud nebude incident uzavřen a zdokumentován.

Okamžitá pomoc