Přeskočit na obsah
Všechny články

Technika

PHP2Shell: kritická díra v PHP a co teď dělat s webem na WordPressu

Dvě zranitelnosti přímo v jádru PHP dovolují za určitých podmínek převzít server bez přihlášení. Týká se to WordPressu, WooCommerce, PrestaShopu i webů na míru. Vysvětlujeme, co se stalo a co si ohlídat ještě tento týden.

Petr Klein6 min čtení

PHP běží podle W3Techs na zhruba 69 % webů, u kterých jde serverový jazyk poznat. WordPress pohání asi 40 % všech webů. Když se tedy objeví díra přímo v PHP, nejde o problém jednoho pluginu, ale o problém velké části internetu. Přesně to se stalo tento týden.

Co se stalo

Výzkumníci z Wiz Research (ve spolupráci s Calif a OpenAI) našli v srpnu v jádru PHP sadu chyb v práci s pamětí. Wiz je pojmenoval PHP2Shell. Oficiálně jde o dvě zranitelnosti:

  • CVE-2026-109618 – když PHP během zpracování požadavku dojde paměť, skončí s napůl připravenými daty a úklid je pak považuje za platná. Spouští se to speciálně upraveným odesláním formuláře nebo souboru.
  • CVE-2026-109619 – vnitřní stav jednoho požadavku přežije uvolnění paměti a použije ho až další požadavek, který obslouží stejný proces.

Obě mají hodnocení závažnosti 9,2 z 10 (kritické). Útočník se nemusí přihlásit a na webu nemusí být nic dalšího zranitelného. Wiz předvedl spuštění vlastního kódu na oficiálních obrazech WordPressu, Drupalu i Joomly a stačil k tomu i obyčejný „Hello World" skript. Kromě převzetí serveru umí jedna z cest vytáhnout z paměti data cizích požadavků – hesla, tokeny nebo API klíče jiných návštěvníků.

Opravy vyšly 21. října ve verzích PHP 8.2.35, 8.3.36, 8.4.27 a 8.5.12. Detaily ale unikly už den předtím a podle Amazonu se první pokusy o zneužití objevily dokonce 17. října, tedy ještě před vydáním oprav. Cloudflare hlásil desetitisíce pokusů do 45 minut od oznámení a „miliony" během dalších hodin. Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal 21. října upozornění s doporučením aktualizovat okamžitě a Úřad vlády preventivně na několik hodin odstavil svůj web.

Je opravdu zranitelný každý WordPress?

Ve směru ano, v detailu je to složitější. Tohle rozlišení je podstatné, protože v médiích se teď mísí dvě věci:

  • Pokusy o útok jsou masové a plošné. Roboti zkoušejí všechno, co běží na PHP.
  • Potvrzený úspěšný průnik zatím veřejně není. Podle watchTowr ani jeden z kolujících veřejných „exploitů" ve skutečnosti kód nespustí. Některé jen shodí server, některé jsou dokonce podvržený malware. Funkční exploit ale existuje (Wiz ho předvedl) a je jen otázka času, kdy se objeví i jinde.

Hodně záleží i na tom, jak hosting PHP na serveru spouští. Nejrizikovější je starší způsob, který se dnes používá hlavně u levných nebo neudržovaných serverů. U moderních hostingů je útok složitější, ale zranitelné jsou také.

Pro majitele webu z toho plyne jednoduché pravidlo: dokud nemáte potvrzeno, že PHP je opravené, berte web jako zranitelný.

Pro úplnost: Shoptet a další pronajímané e-shopové platformy se tohle netýká z vaší strany. Server spravuje provozovatel a vy na něm nic měnit nemůžete. Týká se to hlavně webů, kde si hosting vybíráte sami – WordPress, WooCommerce, PrestaShop, Magento, Shopware a weby na míru v PHP.

Proč jsou nejvíc ohrožené staré weby

Oficiální opravené verze vyšly jen pro PHP 8.2 až 8.5. Pro PHP 7.4, 8.0 a 8.1 zveřejnili vývojáři PHP pouze zdrojové záplaty a je na hostingu, jestli je nasadí. Pro PHP 7.3 a starší neexistuje oficiálně nic.

Podle W3Techs přitom běží na PHP 7.x zhruba 27 % PHP webů a na PHP 5.x dalších téměř 8 %. U nás to dobře známe: web, který kdysi někdo udělal a „funguje", se roky neaktualizoval, protože by se při přechodu na novější PHP mohl rozbít. Teď za to hrozí daleko vyšší cena než za upgrade.

Někteří čeští hostitelé reagovali rychle. Například Český hosting oznámil 21. října opravy pro PHP 8.4 a 8.2, záplaty i pro starší větve a zákazníkům doporučil přechod na 8.4. U ostatních velkých hostingů jsme v době psaní veřejné vyjádření nenašli, takže se vyplatí zeptat napřímo.

Co udělat ještě tento týden

  1. Zjistěte verzi PHP. Ve WordPressu: Nástroje → Stav webu → Informace → Server → Verze PHP. Případně v administraci hostingu.
  2. Bezpečné jsou verze 8.2.35, 8.3.36, 8.4.27, 8.5.12 a novější. Nižší číslo ještě nemusí znamenat problém – hosting mohl opravu doplnit i do starší verze, aniž by se číslo změnilo.
  3. Napište hostingu. Stačí jedna věta: „Je PHP, na kterém běží můj web, opravené proti CVE-2026-109618 i CVE-2026-109619, a od kdy?" Ptejte se na obě CVE, ne obecně na „bezpečnostní aktualizace".
  4. Pokud jste na PHP 8.1 nebo starším, naplánujte přechod na 8.4 nebo 8.3. Většina hostingů umožní verzi přepnout v administraci. Před přepnutím si web zazálohujte a vyzkoušejte, jestli všechno funguje (hlavně košík, formuláře a platby).
  5. Používáte Cloudflare? Od 21. října má i bezplatný tarif zapnutá pravidla firewallu proti těmto útokům. U placených tarifů zkontrolujte, že sada pravidel je v režimu Block. Pomůže to ale jen tehdy, když na server nejde přistoupit napřímo, mimo Cloudflare.
  6. Neinstalujte „PHP2Shell fix" pluginy. Plugin chybu v PHP opravit nemůže a některé z nich kolují jako podvrh.
  7. Pokud si všimnete něčeho divného (neznámí administrátoři, nové soubory, opakované chyby 500 od 17. října), berte server jako možná napadený a změňte všechna hesla a API klíče, které na něm byly uložené – včetně přístupů do platební brány nebo do reklamních systémů.

Aktualizace WordPressu, šablon a pluginů je samozřejmě pořád dobrý nápad, jen tuhle konkrétní chybu neřeší.

Jak to řešíme my

Zdroje

Další články

OpenAI zapnulo v reklamách v ChatGPT automatické úpravy: AI může přepsat titulek a popis, přeložit text a poslat člověka na jinou stránku vašeho webu, a to bez vašeho schválení. Co přesně se mění, co zatím nevíme a co si zkontrolovat před Black Friday.

Napište nám

Nezávazná poptávka

Stačí jméno a e-mail. Zbytek doplníme spolu.

Údaje použijeme jen k odpovědi na vaši poptávku. Jak s nimi zacházíme