Kritická zranitelnost ve verzi PHP (PHP2Shell)

Co to je

20. a 21. října 2026 byly zveřejněné dvě kritické chyby přímo v jádře jazyka PHP, vedené jako CVE-2026-109618 a CVE-2026-109619. V komunitě se pro ně vžilo označení PHP2Shell. Umožňují útočníkovi spustit na serveru vlastní kód, a to bez přihlášení a bez jakékoli interakce správce. Závažnost je hodnocená CVSS 9,2, tedy nejvyšší pásmo.

Náš sken si u vašeho webu všiml, že se server v hlavičce X-Powered-By hlásí verzí PHP, která opravu zatím nemá. Samotné prozrazení verze je drobnost, kritická je tady ta verze pod ní.

Proč je to problém

Neautentizované vzdálené spuštění kódu je ten nejhorší typ chyby. Útočník nepotřebuje žádné heslo ani platný účet: stačí mu, že je váš web dostupný z internetu. Po úspěšném zneužití má na serveru stejná práva jako samotná aplikace, takže může přečíst databázi, podstrčit návštěvníkům škodlivý kód, rozesílat z vašeho serveru spam nebo ho připojit do botnetu.

Zneužití už podle dostupných zdrojů probíhá v praxi, hromadně a automatizovaně. U takto vysoké závažnosti se čas mezi zveřejněním a plošným skenováním internetu počítá v hodinách, ne dnech.

Které verze jsou zranitelné

Opravené jsou verze 8.5.12, 8.4.27, 8.3.36, 8.2.35 a novější ve své větvi. Zranitelné je tedy:

Jak zjistím svou verzi

Z příkazové řádky serveru: php -v. Přes hosting zpravidla v administraci (cPanel „Select PHP Version“, Plesk „PHP Settings“, Forpsi/Wedos v nastavení webu). Z vnějšku ji často prozradí právě hlavička X-Powered-By:

curl -sI https://example.cz | grep -i x-powered-by

Jak to opravit

Sdílený hosting

Ve většině případů stačí v administraci hostingu přepnout verzi PHP na nejnovější v dané větvi (např. z 8.2.x na poslední 8.2) a aplikaci proklikat, že funguje. Pokud tu volbu nevidíte nebo si nejste jistí, napište hostingové podpoře, že potřebujete záplatu na CVE-2026-109618.

Vlastní server (Debian / Ubuntu)

sudo apt update
sudo apt upgrade php8.3 php8.3-fpm   # dosaďte svou větev
sudo systemctl restart php8.3-fpm
php -v

Vlastní server (RHEL / AlmaLinux)

sudo dnf upgrade php php-fpm
sudo systemctl restart php-fpm
php -v

Docker

Přepište tag v Dockerfile na opravenou verzi (např. php:8.3.36-fpm), znovu sestavte a nasaďte image. Nespoléhejte na plovoucí tag 8.3-fpm bez nového pullu, můžete mít zacachovanou starou vrstvu.

Když nejde aktualizovat hned

Dokud nemáte opravenou verzi, omezte dopad: zapněte WAF (Cloudflare má pro tuto rodinu zranitelností pravidlo v managed rulesetu), zablokujte přístup k administraci na IP a zkontrolujte logy, jestli už útok neproběhl. Jde ale o dočasnou záplatu, ne o řešení.

Jak ověřím, že je hotovo

Po aktualizaci spusťte nový sken na vulscan.app nebo si verzi ověřte přes php -v na serveru. V hlavičce X-Powered-By by se už neměla objevovat zranitelná verze, ideálně hlavičku úplně skryjte (expose_php = Off v php.ini).

Co se může pokazit

Přechod v rámci jedné větve (8.2.x na 8.2 nejnovější) je prakticky bez rizika, opravy uvnitř větve jsou zpětně kompatibilní. Skok na vyšší větev (třeba z 8.1 na 8.3) může odhalit zastaralé knihovny nebo deprecated funkce, takže ho otestujte na kopii webu. I tak je ale skok o větev výš lepší než zůstat na verzi s aktivně zneužívanou dírou.

Reference