Zpět na blog
· Jan Harsa · 8 min čtení

Kvůli díře v PHP vypínají úřady weby. Aktualizace WordPressu vás tentokrát neochrání

Dvě kritické chyby v PHP, souhrnně php2shell, dovolí útočníkovi spustit na serveru vlastní kód bez přihlášení. Úřad vlády kvůli nim odstavil web, NÚKIB vyzývá k okamžité aktualizaci a pokusy o útok běží už od 17. října. Co zkontrolovat ještě dnes.

}

Ve středu večer Úřad vlády ČR na zhruba dvě hodiny vypnul svůj web. Ne kvůli útoku. Preventivně, aby stihl opravit PHP, na kterém web běží. Některé weby odstavil i Český hydrometeorologický ústav, mezi nimi hydro.chmi.cz, a Drážní úřad měl po aktualizacích několik desítek minut nefunkční web. Podobně postupovaly vládní úřady v Nizozemsku, Francii nebo Finsku.

Důvodem jsou dvě chyby v PHP, kterým se říká php2shell. NÚKIB k nim ve středu vydal upozornění s jasným závěrem: jediným řešením je aktualizace, a to hned. Úřad vlády má vlastní IT a dvě hodiny výpadku si mohl dovolit. Firma, které web před lety postavila agentura a od té doby na server nikdo nesáhl, často ani neví, komu má zavolat.

PHP přitom podle W3Techs pohání 69,3 % webů, u kterých je serverový jazyk známý. Stojí na něm WordPress, Drupal, Joomla, PrestaShop a s nimi spousta e-shopů, intranetů a klientských zón. Pokud máte web, je dost pravděpodobné, že se vás to týká.

Co přesně se stalo

PHP 21. října vydalo opravné verze 8.2.35, 8.3.36, 8.4.27 a 8.5.12. Opravují dvě chyby, CVE-2026-109618 a CVE-2026-109619. Obě mají skóre závažnosti 9,2 z 10. Podle bezpečnostního týmu PHP obě můžou útočníkovi umožnit spustit na serveru vlastní kód na dálku, bez jakéhokoli přihlášení.

Tři věci z php2shell dělají víc než běžnou zranitelnost:

  • Chyba je v PHP samotném, ne v aplikaci. Ohrožené jsou podle PHP všechny instalace, které obsluhují webové požadavky, ať běží přes PHP-FPM, Apache s mod_php, php-cgi, FrankenPHP nebo LiteSpeed. Nejvyšší riziko vidí PHP u mod_php. Tam předvedlo útok, ke kterému stačí nepřihlášený požadavek a který proběhne dřív, než se spustí jakýkoli kód vašeho webu.
  • Je stará. Firma Wiz, která chyby nahlásila, píše, že jsou v kódu přes deset let a týkají se verzí až po PHP 5.4. Při hledání jí podle vlastních slov pomáhaly AI modely.
  • Nemá úplné obejití. Dočasná nastavení, která PHP popisuje, podle něj instalaci bezpečnou neudělají. Pomáhá jen aktualizace.

Útočníci byli rychlejší než oprava

Vydání oprav bylo původně naplánované na čtvrtek. V úterý 20. října ráno ale na Hacker News unikla zpráva, že se chystá zveřejnění dvou kritických chyb. PHP proto vydání posunulo na středu.

Amazon zachytil na svých návnadových serverech pokus o zneužití už 17. října, čtyři dny před zveřejněním. V noci na středu, ještě před vydáním oprav, se objevily první ukázkové exploity. Pokusy o útok hlásí Cloudflare, watchTowr i Patchstack. Amazon píše, že php2shell je „nyní široce zneužíván.“

Poctivě: úspěšný průnik zatím nikdo veřejně nepotvrdil. Americká agentura CISA v době svého upozornění zneužití nezaznamenala a k 21. říjnu chyby nebyly v jejím katalogu aktivně zneužívaných zranitelností. Amazon sám připouští, že neví, jestli by zachycené pokusy na skutečných serverech uspěly.

Na potvrzení ale nečekejte. Až přijde, bude pozdě. Amazon k tomu dává radu, kterou si stojí za to zapamatovat: dobu na opravu kritické zranitelnosti na internetu měřte v hodinách, ne ve dnech. Totéž jsme psali v dubnu: AI zkracuje čas od objevení chyby k jejímu zneužití. php2shell je přesně ten scénář. Chybu pomohla najít AI a útočníci zkoušeli útočit dřív, než vyšla oprava. Jak rychle dnes modely zranitelnosti hledají, jsme popsali u modelu Claude Mythos.

Aktualizace WordPressu vám nepomůže

Tady je nejčastější omyl: „Máme aktuální WordPress i pluginy, jsme v pohodě.“ Nejste. Chyba není ve WordPressu ani v pluginu, ale v PHP, na kterém WordPress běží. Aktualizovat aplikaci je dobře, tuhle díru to ale nezavře. Oprava musí proběhnout na serveru.

Rozhodující otázka tedy zní: kdo u vás spravuje PHP?

Kde web běžíKdo PHP opravujeCo udělat vy
Sdílený webhostingHostingZjistěte v administraci, jakou verzi PHP máte zvolenou. Stará verze nemusí mít opravu.
VPS, vlastní server, server od agenturyVy nebo váš dodavatelAktualizovat dnes a restartovat PHP procesy. Nikdo jiný to za vás neudělá.
Pronajatý e-shop nebo web jako službaProvozovatel platformyOvěřit, že o tom ví. Víc udělat nemůžete.
Cloudová platforma pro aplikace (Google App Engine, Cloud Run a podobné)Poskytovatel opraví prostředíZjistěte v dokumentaci, jestli se oprava projevila sama. Často je potřeba aplikaci znovu sestavit a nasadit.
Software, který PHP obsahuje (administrační panely, firemní aplikace)VýrobceHledat jeho aktualizaci. CISA na tuhle skupinu výslovně upozorňuje.

Pozor na číslo verze. Kontrola „máme 8.4.27?“ může dát falešný poplach. Linuxové distribuce a poskytovatelé často doplní opravu do verze, kterou už mají, a hlavní číslo nezmění. Opravený balíček PHP pro Ubuntu 24.04 má například verzi 8.3.6-0ubuntu0.24.04.13. Vychází tedy pořád z 8.3.6, ne z 8.3.36. Totéž platí pro hostingy, které opravily i starší verze. Rozhoduje potvrzení od poskytovatele nebo distribuce, ne samotné číslo.

U cloudových platforem navíc nestačí, že poskytovatel opravu vydal. Google uvádí, že na App Engine flexible, na Cloud Run bez automatických aktualizací a ve vlastních kontejnerech je potřeba aplikaci znovu sestavit a nasadit. Jinak dál běží ve starém prostředí. Když si nejste jistí, nasaďte znovu.

Nejhůř jsou na tom weby na serveru, o který se nikdo nestará. Typicky po agentuře, se kterou už nespolupracujete. Tam se samo nic neaktualizuje.

Stará verze PHP znamená žádnou oficiální opravu

Opravené verze vyšly jen pro PHP 8.2 až 8.5. PHP 8.1 a starší projekt už nepodporuje. Pro verze 7.4, 8.0 a 8.1 bezpečnostní tým kvůli závažnosti zveřejnil aspoň minimální opravy ve zdrojovém kódu, oficiální vydání ale nebude. Pro ještě starší verze nic.

Podle W3Techs běží 26,9 % webů s PHP na verzi 7 a 7,7 % dokonce na verzi 5. Víc než třetina PHP webů tedy jede na verzi, pro kterou projekt PHP oficiální opravu nevydal. A to nepočítáme verze 8.0 a 8.1, které jsou na tom stejně.

Část hostingů staré verze opraví sama. Jak daleko, se liší:

  • Český hosting nasadil pro PHP 7.4, 7.3 a 5.6 opravné balíky z rozšířené podpory. Pro PHP 5.2 až 5.5 opravy neexistují, hosting jen omezil nahrávání dat a bez přechodu na novější verzi se to nevyřeší.
  • Active24 podle své stavové stránky z 22. října opravil všechny podporované verze od 5.6 výš.
  • WEDOS opravil PHP 8.2 až 8.5. U verzí 8.1 a starších podle své podpory zranitelnou funkci jen preventivně vypnul a důrazně doporučuje přejít aspoň na PHP 8.2.

Vypnutá funkce není oprava. PHP i NÚKIB upozorňují, že žádné nastavení chyby úplně neřeší. Kdo léta odkládal upgrade PHP, protože „to přece funguje,“ platí teď. A pozor: i PHP 8.2 končí s bezpečnostní podporou 31. prosince 2026.

Co udělat ještě dnes

  1. Sepište, co vám běží na PHP. Web, e-shop, intranet, klientská zóna, administrace a také hotový software, který PHP obsahuje.
  2. U každého zjistěte verzi PHP a kdo ji spravuje. U hostingu v administraci, u vlastního serveru u správce nebo dodavatele. Když odpověď neznáte, je to první problém k vyřešení.
  3. Aktualizujte na 8.2.35, 8.3.36, 8.4.27 nebo 8.5.12, případně na opravený balíček vaší linuxové distribuce, a restartujte všechny PHP procesy. Na cloudové platformě aplikaci znovu nasaďte. Starou verzi převeďte na podporovanou.
  4. Když to dnes nejde, web odstavte. Přesně to udělal Úřad vlády a přesně to doporučují CISA i evropský CERT-EU. Dočasná nastavení a ochrana typu Cloudflare WAF riziko snižují, bezpečný web z vás ale neudělají. Sám technický ředitel Cloudflaru označil jejich pravidla jen za nouzové řešení.
  5. Hledejte stopy zpětně od 17. října, ne od zveřejnění. NÚKIB doporučuje hlídat neobvyklé procesy spouštěné službami PHP, neobvyklé požadavky s nahráváním souborů následované chybami paměti nebo opakovanými chybami 500 a nevysvětlené restarty PHP procesů. Bezpečnostní firmy k tomu přidávají nové PHP soubory ve webovém adresáři, nové naplánované úlohy a nové SSH klíče.
  6. Při podezření jednejte jako při incidentu. Server izolujte, zachovejte logy a vyměňte hesla a klíče, které aplikace používá. Wiz upozorňuje, že chyby umožňují i čtení paměti serveru, takže mohly uniknout. Pokud spadáte pod zákon o kybernetické bezpečnosti, incident hlásíte přes Portál NÚKIB.

Co si z toho odnést

  • php2shell je chyba v PHP, ne ve vašem webu. Aktualizace WordPressu ani pluginů ji neopraví.
  • Opravené verze jsou 8.2.35, 8.3.36, 8.4.27 a 8.5.12. Starší větve oficiální opravu nedostanou.
  • Číslo verze neříká všechno. Opravu potvrdí poskytovatel nebo distribuce, na cloudové platformě aplikaci znovu nasaďte.
  • Pokusy o útok běží od 17. října. Stopy kontrolujte od tohoto data.
  • Nejde to opravit dnes? Odstavte web. Dvě hodiny výpadku jsou levnější než napadený server.
  • Musíte vědět, kdo spravuje PHP pod vaším webem. Tentokrát na tom stojí všechno.

Nevíte, na jaké verzi PHP váš web nebo e-shop běží a kdo ho má opravit? Ozvěte se, podíváme se na to s vámi. Kdo chce mít jistotu i do budoucna, tomu bezpečnost systémů projdeme v rámci technického auditu.

Kde si to ověřit

Zaujal vás článek?

Rádi s vámi probereme, jak vám můžeme pomoct.

Domluvit konzultaci zdarma