PHP2Shell: dvě kritické chyby v PHP a co mají firmy udělat

23. 10. 2026
Serverová skříň, do které se zasouvá nový červený modul se symbolem aktualizace.

Stav k 23. 10. 2026. Téma se vyvíjí, před rozhodnutím si proto vždy ověřte aktuální informace na php.net.

Zranitelnost PHP2Shell je dvojice kritických chyb přímo v jazyce PHP, na kterém běží velká část webů, e-shopů a firemních aplikací. Nejde o chybu konkrétního redakčního systému ani pluginu. Neodstraní ji proto aktualizace WordPressu ani úprava kódu aplikace, pomůže jen aktualizace PHP na serveru.

Opravy vyšly 21. 10. 2026. Informace o chybách se dostaly ven ještě před plánovaným zveřejněním, a tak se o nich rychle začalo mluvit i mimo vývojářskou komunitu. Několik evropských úřadů, například německý ITZBund, finské Valtori, francouzské prefektury a nizozemské instituce, preventivně odstavilo část svých webů.

Panika ale na místě není. Postup je jasný a u většiny serverů jde o běžnou aktualizaci. Níže najdete, jestli se vás chyby týkají, jak to ověřit a co dělat, když aktualizace hned nejde.

Rychlý přehled

Položka Údaj
Název PHP2Shell
CVE CVE-2026-109618, CVE-2026-109619
Související CVE-2026-115560 (23. 10. 2026, doporučení session.upload_progress.enabled=0)
Závažnost CVSS 9,2 (CVSS 4.0)
Co je zasažené PHP v režimech Apache mod_php, PHP-FPM, php-cgi, FrankenPHP a LiteSpeed
Opravené verze 8.5.12, 8.4.27, 8.3.36, 8.2.35
Zveřejněno 21. 10. 2026

PHP2Shell je chyba v jádru PHP, která může vést ke spuštění cizího kódu

Co znamenají obě CVE jednoduše

CVE je veřejné označení konkrétní bezpečnostní chyby, podle kterého se dá dohledat v databázích a v oznámeních výrobců.

CVE-2026-109618 se projeví, když PHP při zpracování požadavku narazí na nedostatek paměti. V tu chvíli může dojít k poškození paměti. CVE-2026-109619 souvisí se zastaralým globálním stavem, který si PHP ponechá z předchozího požadavku. Program pak může pracovat s pamětí, která už byla uvolněna (takzvaný use-after-free).

Proč má hodnocení 9,2

RCE (remote code execution) znamená, že útočník může na cizím serveru spustit vlastní kód. Obě chyby k tomu mohou vést, proto je PHP hodnotí skórem 9,2 z 10 podle CVSS 4.0, tedy standardní stupnice závažnosti zranitelností. Podrobnosti k hodnocení najdete i v databázi NVD.

Hodnocení zároveň počítá s tím, že útok vyžaduje splnění určitých podmínek. Neznamená to tedy, že je každý server s PHP automaticky napadený.

Koho se chyby týkají: záleží na tom, jak PHP na serveru běží

Apache mod_php, PHP-FPM, php-cgi, FrankenPHP a LiteSpeed

Zasažené jsou všechny běžné způsoby, jak PHP obsluhuje webové požadavky. Míra rizika se ale liší:

  • Apache s mod_php je na tom nejhůř. Útočník podle výzkumníků může spustit kód bez přihlášení, ještě než se vůbec spustí kód aplikace, a stačí mu k tomu výchozí limity.
  • PHP-FPM, typicky v kombinaci s Nginx, je zranitelné chybou CVE-2026-109618. Výzkumníci ji na takové sestavě předvedli. CVE-2026-109619 se tu uplatní jen za určitých podmínek, například při předávání nastavení přes PHP_VALUE nebo PHP_ADMIN_VALUE či při zapnutém sledování průběhu nahrávání v session.
  • php-cgi, FrankenPHP a LiteSpeed patří mezi zasažené režimy také.

Oficiálně se oprava týká větví 8.2 až 8.5. Výzkumníci ze společnosti Calif ale uvádějí, že nejstarší dotčená cesta sahá až k PHP 5.4, u mod_php k verzi 7.3. Rozsah dotčených verzí tedy zatím není ustálený.

WordPress, Drupal, Joomla i aplikace na míru

Chyba je v PHP, ne v CMS. Týká se proto webů na WordPressu, Drupalu nebo Joomle stejně jako aplikací postavených na frameworku Nette nebo na vlastním kódu. A to i tehdy, když je kód samotné aplikace v pořádku a všechny pluginy jsou aktuální.

Jak zjistit verzi PHP: rozhoduje server, ne composer.json

Soubor composer.json říká, jakou verzi aplikace vyžaduje, ne jaká na serveru opravdu běží. Verzi ověřte jedním z těchto způsobů:

  1. Administrace hostingu. Většina hostingů ukazuje verzi PHP pro každou doménu.
  2. WordPress. V administraci otevřete Nástroje, Stav webu, záložku Informace a sekci Server.
  3. Dočasný soubor s phpinfo(). Nahrajte na web soubor s funkcí phpinfo(), podívejte se na verzi a soubor hned smažte. Nenechávejte ho na serveru.
  4. Příkazová řádka. Příkaz php -v ukazuje verzi pro příkazovou řádku, která se může lišit od verze, jež obsluhuje web. U PHP-FPM ověřte i příslušný binární soubor, například php-fpm8.3 -v.
  5. Docker. Ověřte verzi přímo v běžícím kontejneru. Označení obrazu jako php:8.3-fpm neříká, jestli už obsahuje opravu.

Pozor na balíčky z distribucí. Debian nebo Ubuntu často přenášejí opravy do starší verze, takže číslo verze může vypadat neopravené, i když oprava v balíčku je. Rozhoduje verze balíčku uvedená v bezpečnostním oznámení distribuce.

Aktualizujte na opravenou verzi své větve

Větev PHP Opravená verze Podpora do
8.5 8.5.12 31. 12. 2029
8.4 8.4.27 31. 12. 2028
8.3 8.3.36 31. 12. 2027
8.2 8.2.35 31. 12. 2026
8.1, 8.0, 7.4 bez oficiálního vydání mimo podporu

Data konce podpory vycházejí z přehledu podporovaných verzí na php.net.

PHP 8.2 až 8.5: aktualizace v rámci větve a restart

Na větvích 8.2 až 8.5 stačí aktualizovat na opravenou verzi ve stejné větvi, aplikace by se kvůli tomu neměla měnit. Po aktualizaci restartujte PHP-FPM nebo Apache, jinak budou dál běžet staré procesy. U PHP 8.2 počítejte s tím, že jeho podpora končí 31. 12. 2026.

PHP 8.1, 8.0 a 7.4: konec podpory a plán přechodu

Pro starší verze PHP oficiální vydání nevyšlo. Projekt PHP pro větve 7.4, 8.0 a 8.1 vydal jen minimální opravy ve zdrojovém kódu. Hotové balíčky pro tyto verze nabízí například Ubuntu (USN-8948-2, u starších LTS verzí jen s Ubuntu Pro), případně dodavatelé dlouhodobé podpory. Debian vydal opravené balíčky pro podporované verze: php8.4 v Debianu 13 (DSA-6574-1) a php8.2 v Debianu 12 (DLA-4848-1).

Pokud aplikace běží na PHP 8.1 nebo starším, opravený balíček je jen první krok. Dalším krokem je naplánovat přechod na podporovanou verzi.

Potřebujete s aktualizací pomoct hned? Využijte urgentní programátorskou pomoc.

Když aktualizace hned nejde, dočasná opatření snižují riziko

Podle bezpečnostního oznámení je jedinou úplnou ochranou aktualizace. Kdo ji nemůže udělat okamžitě, může riziko snížit těmito kroky:

  • nastavit memory_limit=-1 přes php_admin_value (paměť serveru pak musíte hlídat jiným způsobem),
  • snížit post_max_size (bez nahrávání souborů 8M, s nahráváním 32M),
  • omezit velikost požadavků na webserveru nebo proxy,
  • nastavit session.upload_progress.enabled=0,
  • na PHP 8.5 nastavit fatal_error_backtraces=0,
  • po změně restartovat všechny PHP procesy (workery).

Nastavení nedávejte přes ini_set() ani .user.ini, musí platit pro celý server nebo pool. Nepoužívejte ani omezení RLIMIT_AS a RLIMIT_DATA.

Webový firewall (WAF) riziko také snižuje. Cloudflare nasadil ochranná pravidla zhruba devět hodin před zveřejněním chyb. WAF ale opravu nenahrazuje.

Stav k 23. 10. 2026: nové CVE-2026-115560 a co víme o útocích

Dne 23. 10. 2026 PHP upozornilo na další chybu, CVE-2026-115560. Plné bezpečnostní oznámení vydá s příštím vydáním. Chyba souvisí se sledováním průběhu nahrávání v session a týká se vzácné kombinace s přepínáním session.serialize_handler. Do dalšího vydání PHP doporučuje nastavit session.upload_progress.enabled=0.

Americká agentura CISA chyby k 23. 10. 2026 nezařadila do katalogu aktivně zneužívaných zranitelností (KEV). Cloudflare ale hlásí první pokusy o útok, s aktualizací proto neotálejte. Chyby objevili výzkumníci společnosti Calif ve spolupráci s Wiz a OpenAI a zveřejnění bylo koordinované.

Pravidelná podpora aplikace zkracuje reakci na podobné chyby

U PHP2Shell rozhoduje, jestli někdo ví, na jaké verzi PHP vaše aplikace běží, a jestli může server bezpečně aktualizovat a restartovat. Když to nikdo neví, ztrácí se čas, který se u kritických chyb počítá na hodiny.

1. Web IT z Prahy a Brna vyvíjí a dlouhodobě podporuje webové aplikace a e-shopy v PHP. V rámci podpory aplikace nebo správy serverů a infrastruktury s vámi zkontrolujeme verzi PHP a pomůžeme s aktualizací. Co má obsahovat dobře nastavená podpora, popisujeme v článku o SLA podpory aplikace. Pokud po původním dodavateli nikdo aplikaci nespravuje, pomůže článek o převzetí aplikace po jiném dodavateli.

Stará se o váš web kamarád „ze známosti“? Spousta firemních webů a aplikací běží díky ochotnému kamarádovi, bývalému kolegovi nebo někomu, kdo to „umí s počítači“. Je to normální, jen se pak často stane, že se na server dlouho nesáhne. Pokud je to i váš případ, napište nám. Společně se podíváme, na jaké verzi PHP web běží a jestli je všechno aktuální.

Nejčastější otázky

Co je PHP2Shell?

PHP2Shell je označení dvou kritických chyb v jazyce PHP, CVE-2026-109618 a CVE-2026-109619, zveřejněných 21. 10. 2026. Mohou útočníkovi umožnit spustit na serveru vlastní kód. PHP je hodnotí skórem 9,2 podle CVSS 4.0.

Kterých verzí PHP se týká a na kterou aktualizovat?

Oficiálně se týká větví 8.2 až 8.5. Opravené verze jsou 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Pro PHP 8.1 a starší oficiální vydání nevyšlo. PHP pro ně vydalo jen minimální zdrojové opravy, hotové balíčky nabízejí některé distribuce.

Jak zjistím, jakou verzi PHP můj web používá?

Nejrychleji v administraci hostingu, u WordPressu v sekci Nástroje, Stav webu, Informace. Na serveru pomůže dočasný soubor s phpinfo() nebo příkaz pro PHP-FPM. Soubor composer.json skutečnou verzi neukazuje.

Týká se PHP2Shell i WordPressu?

Ano. Chyba je v PHP, ne ve WordPressu, takže se týká každého webu, který běží na zasažené verzi PHP. Aktualizace WordPressu ani pluginů ji neopraví, je potřeba aktualizovat PHP na serveru.

Co když mám PHP 7.4 nebo 8.1?

Tyto verze už nemají oficiální podporu a opravné vydání pro ně nevyšlo. PHP pro ně vydalo jen minimální opravy ve zdrojovém kódu, hotové balíčky nabízejí některé distribuce, například Ubuntu, nebo dodavatelé dlouhodobé podpory. Dlouhodobě je potřeba naplánovat přechod na podporovanou verzi PHP.

Nevíte jistě, jakou verzi PHP váš web používá, nebo aktualizace narazila na problém? Napište nám. Projdeme s vámi server, verzi PHP a postup aktualizace.

Další články