Stručně: CVE-2026-115560 je upozornění, které php.net zveřejnil 23. října 2026. Spuštění kódu na dálku je podle něj možné jen při neobvyklé konfiguraci session. Do dalšího řádného bugfixového vydání platí náprava: nastavit session.upload_progress.enabled=0 na straně serveru a restartovat všechny workery.
Co je CVE-2026-115560?
Dva dny po záplatách pro zranitelnosti PHP2Shell CVE-2026-109618 a CVE-2026-109619 zveřejnil projekt PHP další upozornění. CVE-2026-115560 se týká zpracování session v PHP ve spojení s funkcí session upload progress, která ukládá průběh probíhajícího nahrávání souborů do session.
Podle php.net je spuštění škodlivého kódu na dálku možné, ale jen při neobvyklé konfiguraci. Úplný advisory se všemi podrobnostmi má přijít s dalším řádným bugfixovým vydáním. Do té doby jsou znalosti záměrně stručné.
Co dělá session upload progress?
Session upload progress je komfortní funkce PHP. Když návštěvník nahrává větší soubor, PHP během nahrávání průběžně zapisuje údaje o průběhu do session: kolik dat už dorazilo a který soubor se právě přenáší. Aplikace si tyto údaje může souběžně dotazovat a sestavit z nich ukazatel průběhu.
V praxi to využívá jen málo aplikací, protože moderní formuláře pro nahrávání měří průběh většinou přímo v prohlížeči. V PHP je ale funkce ve výchozím stavu zapnutá. Proto se objevuje jak u CVE-2026-115560, tak u přechodných opatření proti PHP2Shell: co se nepoužívá, mělo by být vypnuté.
Kdy je server zasažen CVE-2026-115560?
Podle upozornění php.net se musí sejít tři podmínky:
- V konfiguraci je jako
session.serialize_handlerzadána hodnotaphp_binarynebophp_serialize. - Aplikace tuto hodnotu za běhu pomocí
ini_set()přepne naphp, než zavolásession_start(). - Session upload progress je aktivní.
Výchozí hodnota session.serialize_handler je php. Přepnutí v konfiguraci a vrácení v kódu je neobvyklé, ale vyskytuje se ve vyrostlých vlastních vývojích nebo u knihoven s vlastním zacházením se session. Zda se to týká vás, lze ověřit.
Jak zkontrolovat konfiguraci
Nejdřív účinné hodnoty. CLI může číst jiný soubor php.ini než PHP-FPM nebo mod_php; zkontrolujte proto také konfiguraci webového serveru nebo poolu FPM.
php -i | grep -E "session.serialize_handler|session.upload_progress.enabled"
grep -rn "serialize_handler\|upload_progress" /etc/php/ 2>/dev/null # cesta se liší podle distribuce
Poté kód aplikace. Následující vyhledávání je čistě čtecí a ukáže místa, kde se handler nastavuje za běhu:
grep -rn "session.serialize_handler" /var/www/ --include="*.php"
Pokud vyhledávání nic nenajde a handler je v konfiguraci nastaven na php, je popsaná kombinace nepravděpodobná. Session upload progress byste přesto měli vypnout, protože php.net uvádí totéž nastavení také jako přechodné opatření proti PHP2Shell.
Náprava: session.upload_progress.enabled=0
Nastavte hodnotu v php.ini, v poolu FPM nebo v konfiguraci serveru. Podle php.net výslovně ne přes ini_set() ani .user.ini, protože tam působí příliš pozdě nebo ji aplikace může přepsat.
; php.ini (pro všechny pooly a SAPI, které tento soubor čtou)
session.upload_progress.enabled = 0
; nebo v poolu FPM
php_admin_flag[session.upload_progress.enabled] = off
# Apache s mod_php, ve VirtualHostu nebo v konfiguraci serveru
php_admin_flag session.upload_progress.enabled off
Poté restartujte všechny workery PHP, například systemctl restart php8.3-fpm nebo u mod_php Apache. Názvy balíčků a služeb se liší podle distribuce. Bez restartu běží staré nastavení dál. Více na stránce Restart PHP-FPM a všech workerů.
Po restartu zkontrolujte, zda nastavení skutečně působí: ve webovém kontextu, ne jen na příkazové řádce. Krátce zřízená, přístupem chráněná stránka phpinfo ukáže účinnou hodnotu; potom ji ihned smažte.
Zařazení vedle PHP2Shell
CVE-2026-115560 je výrazně užší než obě zranitelnosti PHP2Shell, které se uplatní v obvyklých provozních režimech bez zvláštní konfigurace. Kdo musí právě stanovit priority, měl by nejprve nasadit aktualizaci PHP2Shell a poté nastavit session.upload_progress.enabled=0. Obojí je proveditelné v jednom servisním okně.
Pro vedení firem a netechniky: CVE-2026-115560 není důvod k neklidu, ale je to bod na seznamu. Nastavení se nastaví rychle, na téměř žádnou aplikaci nemá znatelný dopad a zároveň pokrývá jedno z přechodných opatření proti PHP2Shell. Další přechodná opatření z php.net najdete na stránce Okamžitá opatření, když zatím nelze záplatovat, obecné pokyny ke konfiguraci session na stránce Zabezpečení session v PHP.
Co zatím nevíme: které verze PHP jsou přesně postiženy a které vydání přinese opravu. Tuto stránku aktualizujeme, jakmile advisory vyjde.
Jak konkrétně pomáhá PHP SOS?
V rámci hardeningu serveru nápravu zavedeme trvale a ověřitelně:
- Přečíst konfiguraci: účinné hodnoty session pro každé SAPI, pool a virtuální host.
- Prohledat kód: místa, kde se handler nebo nastavení session mění za běhu.
- Vypnout na správném místě: v php.ini, poolu nebo konfiguraci serveru, aby ji aplikace nemohla přepsat, s následným restartem.
- Sledovat dál: až bugfixové vydání vyjde, nasadíme ho a zdokumentujeme stav.
Časté dotazy
Je CVE-2026-115560 součástí PHP2Shell?
Upozornění přišlo dva dny po záplatách PHP2Shell a týká se rovněž samotného PHP. Je to ale samostatná zranitelnost s vlastním číslem CVE a uplatní se jen při určité, neobvyklé konfiguraci. Aktualizace PHP2Shell z 21. října ji podle dosavadního stavu neopravují.
Existuje už aktualizace proti CVE-2026-115560?
Podle stavu k 25. 10. 2026 ne. php.net oznamuje, že úplný advisory přijde s dalším řádným bugfixovým vydáním. Do té doby je doporučenou nápravou session.upload_progress.enabled=0.
Co přestane fungovat, když vypnu session upload progress?
Funkce hlásí aplikaci průběh probíhajícího nahrávání souborů. Jen aplikace, které takový ukazatel průběhu realizují přes tuto funkci PHP, přijdou o zobrazení. Samotné nahrávání funguje dál.