České hostingy záplatují PHP kvůli chybám PHP2Shell, nejstarší větve oprava většinou mine
Projekt PHP vydal 21. října opravy dvou kritických chyb, které mohou umožnit spuštění kódu na serveru bez přihlášení. České hostingy je nasazovaly během odpoledne a večera, pro PHP 5.2 až 5.5 ale opravné balíčky podle Českého hostingu neexistují. Co mají udělat provozovatelé webů a jak poznat, že je server opravdu opravený.

Projekt PHP vydal 21. října 2026 opravné verze 8.2.35, 8.3.36, 8.4.27 a 8.5.12. Zavírají dvě kritické chyby jádra jazyka, CVE-2026-109618 a CVE-2026-109619, kterým se souhrnně říká PHP2Shell. Podle oznámení na php.net mohou umožnit vzdálené spuštění kódu bez přihlášení. Jak chyby vznikají a co mění oprava, rozebral tech-blog.chatujme.cz.
Národní úřad pro kybernetickou a informační bezpečnost vydal týž den upozornění, podle kterého je jediným řešením aktualizace. Píše v něm, že „veřejně jsou dostupné také informace umožňující jejich zneužití“, a doporučuje aktualizovat okamžitě.
Koho se chyby týkají
Podle W3Techs běží na PHP 69,3 % webů, u kterých je serverový jazyk známý. Je to celosvětové číslo; české nikdo nezveřejnil. Z webů na PHP má 65,2 % řadu 8, 27,0 % řadu 7 a 7,7 % řadu 5. Opravené větve 8.2 až 8.5 drží 79,0 % webů s PHP 8, tedy zhruba 51,5 % všech webů na PHP (0,79 × 65,2 %). Zbylých 48,5 % běží na větvích, pro které projekt PHP hotové verze nevydal.
Kolik serverů je zranitelných doopravdy, nikdo nezměřil. Firma Tenable cituje hrubý odhad výzkumníka Silase Cutlera na víc než 1,3 milionu potenciálně zranitelných strojů dostupných z internetu. Hledání Henka Poleyho ve vyhledávači Shodan našlo přes 1,9 milionu strojů s PHP.
Php.net řadí mezi ohrožené všechny instalace, které obsluhují webové požadavky: PHP-FPM, Apache s mod_php, php-cgi, FrankenPHP i LiteSpeed. Největší riziko vidí u mod_php. Red Hat dal chybám stupeň „Important“ a u svých systémů, kde běží PHP-FPM, považuje spuštění kódu v praxi za obtížné.
Na sdíleném hostingu PHP neaktualizuje majitel webu, ale hosting. WordPress napsal, že chyby nejsou specifické pro WordPress a aktualizace WordPressu se nechystá; kdo si server spravuje sám a běží na neopravené verzi, má podle něj zvážit jeho odpojení, než PHP aktualizuje. Nextcloud v hlášení na GitHubu předal doporučení CERT vypnout servery s aplikacemi v PHP do vydání oprav a večer vydal balíček All-in-One 14.4.1 s opraveným PHP. Od Drupalu ani Joomly jsme do večera vlastní upozornění nenašli.
Opravy vyšly o den dřív, než se plánovalo
Vydání bylo původně naplánované na čtvrtek 22. října. Podle PHP Foundation začala obě čísla CVE kolovat po fórech 20. října kolem 17. hodiny SELČ, se špatným časem vydání a se známkou 10,0 místo skutečných 9,2. Projekt pak vydání posunul na středu 21. října na 16. hodinu. Firma Chainguard podle nadace porušila embargo už v 9:41, kdy zveřejnila hotové obrazy s opravou.
Linuxové distribuce dostaly záplaty s předstihem. Debian vydal opravu pro Debian 13 v 15:45 a Debian LTS pro Debian 12 v 16:11; Debian 11 jeho bezpečnostní přehled neuvádí. Ubuntu oznámil opravy pro 22.04 až 26.10 v USN-8948-1, starší vydání je dostala jen přes placené Ubuntu Pro (USN-8948-2). Red Hat do večera opravil jen modul php:7.4 v RHEL 8, ostatní moduly RHEL 8, 9 a 10 vedl jako zasažené bez opravy. SUSE vydalo opravu pro SLES 15 SP7, zbytek čekal. AlmaLinux ani Rocky Linux do večera hlášení neměly.
Oficiální obrazy na Docker Hubu se přestavovaly s několikahodinovou prodlevou. Změna v repozitáři oficiálních obrazů prošla v 17:16 a sledované značky php se na Docker Hub nahrávaly mezi 19:18 a 20:58, wordpress ve 20:42. Kdo nad nimi staví vlastní obraz, musí ho sestavit a nasadit znovu.
Pro Windows vyšla na windows.php.net sestavení jen pro 8.2 až 8.5. Pro 7.4 a 8.0 tam zůstávají soubory z července 2024, pro 8.1 z prosince 2025. Server s Windows a starší větví musí přejít na 8.2 nebo novější, případně si PHP sestavit sám ze zdrojových oprav.
Jak reagovaly české hostingy a úřady
Váš-hosting napsal v 16:35, že sdílený webhosting běží na opravené verzi, a v 17:15, že opravu nasazuje i na VPS; servery s Debianem Buster a starším ji nedostanou. Český hosting nasazuje balíčky pro PHP 5.6 a vyšší, pro 5.2 až 5.5 opravné balíčky neexistují a hosting u nich nasadí jen opatření ke zmírnění rizika. Blueboard aktualizace nasazuje na všechny servery. Forpsi v 19:40 hlásil hotový přechod PHP 8.5 na 8.5.12, ostatní větve ještě čekaly. Webglobe a Endora mají na stavových stránkách nasazování oprav ve stavu „probíhá“. Active24 v 16:15 napsal, že opravy nasadí, až budou oficiálně dostupné a otestované, a preventivní odstávku webů neplánuje. U Wedosu jsme do večera oznámení nenašli.
NÚKIB vedle aktuality zveřejnil v 17:03 podrobnější upozornění na svém portálu. CSIRT.CZ do večera k PHP nic nevydal, jeho poslední zpráva je ze 14. října a týká se GitLabu. V přehledu evropské sítě CSIRT zůstaly řádky CSIRT.CZ i GovCERT.CZ prázdné, kdežto třeba Rakousko, Finsko, Nizozemsko, Polsko a Slovensko tam odkazy mají.
Podle Lupy odstavil Úřad vlády svůj web preventivně od 19:00. Když jsme vlada.gov.cz otevřeli krátce před 22. hodinou, ukázal běžnou titulní stránku; jestli odstávka skončila, nebo šlo o uloženou kopii, nevíme. V zahraničí šly úřady dál: podle BBC Finsko dočasně vypnulo veřejné webové služby vlády a nizozemská agentura pro kybernetickou bezpečnost stáhla vlastní web.
Staré větve PHP: kde oprava je a kde chybí
Pro nepodporované větve 7.4, 8.0 a 8.1 vydal projekt PHP jen minimální zdrojové opravy, bez hotových balíčků. Ondřej Surý, který spravuje rozšířený repozitář PHP pro Debian a Ubuntu, má na packages.sury.org podle changelogů opravy pro všechny větve od 5.6 do 8.1, podepsané 21. října ráno. Pro 5.6 až 7.1 chystá ještě doplněk, protože do nich podle něj nikdy nebyla přenesena starší oprava CVE-2023-0662 (hlášení č. 146).
Vedle toho existuje starší kanál, PPA ondrej/php na Launchpadu. Podle jeho popisu se slučuje do packages.sury.org: pro Ubuntu 26.04 je kanonickým zdrojem packages.sury.org, pro 22.04 a 24.04 jde PPA zatím používat a návod k přechodu má přijít v příštích týdnech. Ve středu se oba kanály lišily rychlostí. Zdrojové balíčky se v PPA objevily v 16:45, většina sestavení pro amd64 ve 20:00 a část pro arm64 ve 21:33, kdežto packages.sury.org měl podle výpisu adresáře ubuntí balíčky php8.1 dřív. Uživatelé v diskusi na Codebergu hlásili, že ppa.launchpadcontent.net vrací chybu 503. Surý tam ve 19:43 napsal, že když Launchpad nejede, dá se přejít na packages.sury.org. Sestavení pro procesory ARM podle něj potrvá zhruba dva dny a pro PHP 7.3 na Ubuntu 16.04 opravu nechystá.
cPanel dal PHP 8.4.27 do verzí 138.0.18, 136.0.50 a 134.0.66, verze 110.0.153 nese záplatované PHP 8.1.34 a EasyApache 4 25.91 opravuje ea-php74 až ea-php85. DirectAdmin vydal během dne dvě sestavení: první s novými 8.2 až 8.5 a záplatami pro 8.1, 8.0 a 7.4, druhé se záplatami pro 7.3 až 5.6. CloudLinux měl ve 21:00 venku alt-php 7.4 a 8.0 na většině platforem a 8.1 na některých, zbytek testoval. ISPConfig připomněl, že chyba není v něm, ale v PHP, a vydal doplněk, který vybrané požadavky zastaví na webovém serveru dřív, než dojdou k PHP. Plesk má k chybám vlastní článek v podpoře.
Nejhůř jsou na tom weby na PHP 5.2 až 5.5. Hotovou opravu pro ně z uvedených nabízí jen Ubuntu Pro s doplňkem Legacy Support, a to pro PHP 5.5.9 v Ubuntu 14.04. Jinak zbývá přechod na novější větev nebo dočasná opatření.
Co pomůže, když aktualizovat nejde
Php.net uvádí opatření, která podle něj „snižují vystavení konkrétním cestám útoku, ale instalaci bezpečnou neudělají“ (překlad redakce). U CVE-2026-109618 doporučuje nastavit memory_limit=-1 tak, aby ho nešlo přepsat, například přes php_admin_value ve fondu FPM nebo v Apachi. K tomu nízký post_max_size, 8M pro weby bez nahrávání souborů a 32M s nahráváním (upload_max_filesize pod ním), limity velikosti požadavků na webovém serveru nebo proxy a paměťový limit kontejneru či cgroup, který ukončí jen postižený proces. RLIMIT_AS ani RLIMIT_DATA za něj dosadit nejde, protože mohou zranitelné selhání samy vyvolat. Hlášení GHSA k téže chybě dodává, že ani memory_limit=-1 úplnou ochranu nedává.
U CVE-2026-109619 radí php.net nastavit session.upload_progress.enabled=0 v php.ini, ve fondu FPM nebo v konfiguraci serveru a restartovat všechny procesy. Přes ini_set() ani soubor .user.ini to nezabere. Opatření podle php.net blokuje potvrzené cesty přes session, ne další varianty, a na CVE-2026-109618 nemá vliv. Na PHP 8.5 přidává fatal_error_backtraces=0. Skrytí chybových hlášení přes error_reporting, display_errors nebo zavináč nepomáhá.
Webový firewall čas získá, opravu nenahradí. Cloudflare chránil zákazníky s bezplatným i placeným WAF výchozím pravidlem od 5:02 ráno 21. října a sám popsal, že útočníci požadavky upravovali, aby ochranu obešli. Pravidla Imunify360 podle CloudLinuxu na LiteSpeedu vzorec jen zaznamenají, ale neblokují. Kdo nemůže aktualizovat ani nasadit opatření, tomu CERT-EU, britské NCSC i americká CISA radí server dočasně stáhnout z internetu.
Jak ověřit, že je server opravdu opravený
Číslo verze to neprokáže. U záplatovaných starých větví zůstává stejné: PHP 8.1 od cPanelu je dál 8.1.34, od Surého také, jen s novější revizí balíčku. Spolehlivější jsou tři kontroly.
- Changelog nainstalovaného balíčku zmiňuje obě čísla. Na Debianu a Ubuntu leží v /usr/share/doc/<balíček>/changelog.Debian.gz, takže stačí
zgrep CVE-2026-10961 /usr/share/doc/php8.3-common/changelog.Debian.gzs číslem vlastní větve; na RHELrpm -q --changelog php-common | grep CVE-2026-10961, na SUSE totéž pro balíček php8. U balíčků Surého tam stojí řádek „[CVE-2026-109618, CVE-2026-109619]: Avoid state corruption via bailout“. - PHP-FPM nebo Apache s mod_php byl restartovaný až po instalaci. Čas startu služby ukáže
systemctl status, čas instalace záznam správce balíčků. Bez restartu běží procesy dál se starým kódem. - Žádný proces nedrží smazanou starou knihovnu. Na Debianu a Ubuntu to vypíše nástroj needrestart, ruční kontrolu popisuje technický rozbor.
Kdo má web na sdíleném hostingu, tyhle kontroly sám neudělá. Hostingu se může zeptat, jakou větev PHP jeho web používá, jestli nainstalované balíčky obsahují opravu obou CVE a jestli se po instalaci restartovaly procesy PHP. U PHP 5.x je na místě zeptat se i na dočasná opatření a domluvit přechod na novější větev.
Kde se zdroje rozcházejí
- Rozsah: záznamy CVE uvádějí jen větve 8.2 až 8.5, Wiz a Cloudflare píšou o verzích od 5.4, watchTowr a BBC s odvoláním na CERT-EU o celé řadě 5.
- Zneužívání: watchTowr ho 21. října zachytil na svých návnadách (honeypotech) a Cloudflare viděl útočný provoz ještě před vydáním oprav. CISA v době svého upozornění zneužití nepozorovala a v katalogu zneužívaných zranitelností KEV chyby ve středu odpoledne nebyly.
- Závažnost: php.net uvádí 9,2 podle CVSS 4.0, Red Hat i SUSE stupeň „important“, SUSE podle CVSS 3.1 známku 8,1 a uniklá zpráva 10,0.
- Čas vydání: hlášení GHSA vyšla v 15:34 SELČ, CERT-EU uvádí 15:30, CloudLinux má zprávu o vydání z 15:50 a Živě 16:00.
- Panely: cPanel píše, že EasyApache 4 25.91 už opravuje ea-php74 až ea-php85, CloudLinux, že balíčky ea-php teprve přijdou.