Kritická zraniteľnosť vo verzii PHP (PHP2Shell)

Čo to je

20. a 21. októbra 2026 boli zverejnené dve kritické chyby priamo v jadre jazyka PHP, vedené ako CVE-2026-109618 a CVE-2026-109619. V komunite sa pre ne udomácnilo označenie PHP2Shell. Umožňujú útočníkovi spustiť na serveri vlastný kód, a to bez prihlásenia a bez akejkoľvek interakcie správcu. Závažnosť je hodnotená CVSS 9,2, teda najvyšším pásmom.

Náš sken si pri vašom webe všimol, že sa server v hlavičke X-Powered-By hlási verziou PHP, ktorá opravu zatiaľ nemá. Samotné prezradenie verzie je drobnosť, kritická je tu verzia pod ňou.

Prečo je to problém

Neautentizované vzdialené spustenie kódu je ten najhorší typ chyby. Útočník nepotrebuje žiadne heslo ani platný účet: stačí mu, že je váš web dostupný z internetu. Po úspešnom zneužití má na serveri rovnaké práva ako samotná aplikácia, takže môže prečítať databázu, podsunúť návštevníkom škodlivý kód, rozosielať z vášho servera spam alebo ho pripojiť do botnetu.

Zneužitie už podľa dostupných zdrojov prebieha v praxi, hromadne a automatizovane. Pri takto vysokej závažnosti sa čas medzi zverejnením a plošným skenovaním internetu počíta v hodinách, nie dňoch.

Ktoré verzie sú zraniteľné

Opravené sú verzie 8.5.12, 8.4.27, 8.3.36, 8.2.35 a novšie vo svojej vetve. Zraniteľné je teda:

Ako zistím svoju verziu

Z príkazového riadka servera: php -v. Cez hosting zvyčajne v administrácii (cPanel „Select PHP Version“, Plesk „PHP Settings“ alebo nastavenia webu u vášho poskytovateľa). Z vonku ju často prezradí práve hlavička X-Powered-By:

curl -sI https://example.cz | grep -i x-powered-by

Ako to opraviť

Zdieľaný hosting

Vo väčšine prípadov stačí v administrácii hostingu prepnúť verziu PHP na najnovšiu v danej vetve (napr. z 8.2.x na poslednú 8.2) a aplikáciu preklikať, či funguje. Ak túto voľbu nevidíte alebo si nie ste istí, napíšte hostingovej podpore, že potrebujete záplatu na CVE-2026-109618.

Vlastný server (Debian / Ubuntu)

sudo apt update
sudo apt upgrade php8.3 php8.3-fpm   # doplňte svoju vetvu
sudo systemctl restart php8.3-fpm
php -v

Vlastný server (RHEL / AlmaLinux)

sudo dnf upgrade php php-fpm
sudo systemctl restart php-fpm
php -v

Docker

Prepíšte tag v Dockerfile na opravenú verziu (napr. php:8.3.36-fpm), znova zostavte a nasaďte image. Nespoliehajte sa na plávajúci tag 8.3-fpm bez nového pullu, môžete mať zacachovanú starú vrstvu.

Keď sa nedá aktualizovať hneď

Kým nemáte opravenú verziu, obmedzte dopad: zapnite WAF (Cloudflare má pre túto rodinu zraniteľností pravidlo v managed rulesete), zablokujte prístup do administrácie na IP a skontrolujte logy, či už útok neprebehol. Ide však o dočasnú záplatu, nie o riešenie.

Ako overím, že je hotovo

Po aktualizácii spustite nový sken na vulscan.app alebo si verziu overte cez php -v na serveri. V hlavičke X-Powered-By by sa už nemala objavovať zraniteľná verzia, ideálne hlavičku úplne skryte (expose_php = Off v php.ini).

Čo sa môže pokaziť

Prechod v rámci jednej vetvy (8.2.x na 8.2 najnovšiu) je prakticky bez rizika, opravy vnútri vetvy sú spätne kompatibilné. Skok na vyššiu vetvu (napríklad z 8.1 na 8.3) môže odhaliť zastarané knižnice alebo deprecated funkcie, takže ho otestujte na kópii webu. Aj tak je ale skok o vetvu vyššie lepší než zostať na verzii s aktívne zneužívanou dierou.

Referencie