Čo sa stalo
PHP je programovací jazyk, na ktorom beží väčšina webov vrátane WordPressu, Drupalu, e-shopov a mnohých firemných aplikácií. V jeho jadre našli dve kritické chyby s označením CVE-2026-109618 a CVE-2026-109619, ktorým sa hovorí PHP2Shell. Obe môžu útočníkovi z internetu umožniť spustiť na serveri vlastný kód bez akéhokoľvek prihlásenia.
Tím PHP vydal opravy 21. októbra 2026 vo verziách 8.2.35, 8.3.36, 8.4.27 a 8.5.12. Technické detaily sa dostali na verejnosť ešte pred vydaním opráv a krátko nato začali kolovať ukážky útoku. Výskumník potvrdil úspešné útoky na návnadové servery 24. októbra 2026 a americká agentúra CISA zaradila 26. októbra 2026 obe chyby do katalógu aktívne zneužívaných zraniteľností.
Pred chybami varuje slovenské národné centrum SK-CERT aj európsky CERT-EU. Palo Alto Networks hlási aktívne útoky na správcovské rozhranie firewallov PAN-OS, ktoré PHP interne používa.
Prečo je to nebezpečné
Obe chyby patria do skupiny „použitie po uvoľnení“ (use-after-free). Predstavte si hotel, kde host odíde, izbu upracú a dajú ďalšiemu hosťovi, no v knihe na recepcii ostane starý záznam. Kto ho neskôr použije, vstúpi do cudzej izby. V PHP takto zostane odkaz na pamäť, ktorú už medzitým môže ovládať útočník.
Pri CVE-2026-109618 PHP násilne preruší požiadavku, ktorá vyčerpá pamäťový limit. Ak sa to stane v nevhodnej chvíli, napríklad pri spracovaní formulára s nahrávaným súborom, ostane po nej neúplne pripravená pamäť, s ktorou PHP pri upratovaní pracuje ako s platnou. Pri CVE-2026-109619 ostanú po prerušenej požiadavke vnútorné záznamy PHP ukazujúce do uvoľnenej pamäte a ďalšia požiadavka obslúžená tým istým procesom ich použije.
Útočník nepotrebuje prihlásenie, stačí mu posielať upravené požiadavky cez internet. Pri Apache s mod_php to podľa tímu PHP funguje ešte pred spustením akéhokoľvek kódu aplikácie, takže nezáleží na tom, aký web na serveri beží. Útočník získa kontrolu nad serverom s právami účtu webového servera: môže čítať databázy a konfiguračné súbory s heslami, meniť obsah webu alebo pokračovať ďalej do vašej siete.
Skóre CVSS hodnotí závažnosť na stupnici od 0 do 10. Databáza NVD uvádza 9,8 pre CVE-2026-109618 a 8,1 pre CVE-2026-109619, výrobca hodnotí obe chyby podľa CVSS 4.0 na 9,2. Katalóg CISA KEV obsahuje len chyby, ktoré útočníci preukázateľne zneužívajú. EPSS odhaduje pravdepodobnosť zneužitia v najbližších dňoch a pri oboch chybách je na úplnom maxime stupnice.
Koho sa to týka
- PHP 8.2 pred verziou 8.2.35, PHP 8.3 pred 8.3.36, PHP 8.4 pred 8.4.27 a PHP 8.5 pred 8.5.12
- nepodporované vetvy PHP 8.1 a staršie, pre ktoré projekt PHP opravy nevydáva (SK-CERT uvádza zraniteľnosť všetkých verzií od PHP 5.0)
- zariadenia a produkty, ktoré PHP obsahujú vo svojom správcovskom rozhraní
Ohrozená je každá inštalácia PHP, ktorá obsluhuje webové požiadavky: Apache s mod_php (podľa tímu PHP najrizikovejšia), PHP-FPM za nginx alebo Apache, php-cgi, FrankenPHP aj LiteSpeed. Typicky ide o webhostingy, firemné weby a e-shopy, intranetové aplikácie a služby v Docker kontajneroch.
PHP sa skrýva aj v zariadeniach. Pri PAN-OS (firewally PA-Series, VM-Series a Panorama) je zasiahnuté len správcovské webové rozhranie, GlobalProtect nie. Cisco uvádza ako zasiahnuté Expressway, Duo Access Gateway a Ultra-Reliable Wireless Backhaul. Vlastné upozornenia vydali aj ďalší výrobcovia, napríklad Citrix, QNAP, Synology či Veeam. Pozor: aktualizácia WordPressu, pluginu či frameworku nestačí, opraviť treba samotné PHP.
Ako zistiť, či ste zasiahnutí
Na webhostingu nájdete verziu PHP v administrácii hostingu v nastaveniach webu, prípadne sa opýtajte poskytovateľa, či už nasadil opravené PHP. Na vlastnom serveri použite nasledujúce príkazy, ktoré nič nemenia, len čítajú.
php -v
dpkg -l | grep -i php
rpm -qa | grep -i php
apachectl -M | grep -i php
docker exec <kontajner> php -v
Verzia v príkazovom riadku sa môže líšiť od verzie, ktorú používa web. Linuxové distribúcie navyše často opravu doplnia bez zmeny čísla verzie, preto pri balíkoch z distribúcie porovnajte verziu balíka s bezpečnostným oznámením svojej distribúcie. Pri zariadeniach (PAN-OS, Cisco a iné) zistite verziu firmvéru v ich administrácii a porovnajte ju s upozornením výrobcu.
Ako to opraviť
Aktualizácia je jediná spoľahlivá oprava. Postupujte v tomto poradí:
- Najprv riešte servery a správcovské rozhrania dostupné z internetu, až potom interné systémy.
- Aktualizujte PHP na 8.2.35, 8.3.36, 8.4.27 alebo 8.5.12, prípadne novšiu verziu v tej istej vetve. Distribúcie dostali opravy vopred, použite ich balíky. Dobrovoľnícky repozitár remirepo nemal opravy v deň vydania.
- Reštartujte všetky PHP procesy (PHP-FPM, Apache s mod_php). Kontajnery prebudujte z opraveného základného image, samotný reštart nestačí.
- Overte verziu postupom zo sekcie vyššie.
- Pri webhostingu si opravu potvrďte u poskytovateľa.
- Pri zariadeniach nasaďte opravy výrobcu a správcovské rozhranie sprístupnite len z dôveryhodných interných adries.
- Staré vetvy PHP preveďte na podporovanú verziu alebo použite backport od distribúcie. Tím PHP zverejnil aj zdrojové záplaty pre PHP 7.4, 8.0 a 8.1.
Ak nemôžete aktualizovať hneď, dočasné opatrenia znížia riziko, ale nie sú úplnou ochranou. V php.ini alebo v konfigurácii FPM poolu nastavte nasledujúce hodnoty a reštartujte všetky workery (nastavenie cez ini_set() ani .user.ini nefunguje):
session.upload_progress.enabled = 0
fatal_error_backtraces = 0
Druhý riadok platí len pre PHP 8.5. Ďalej znížte post_max_size (8M bez nahrávania súborov, 32M s nahrávaním) a ak web formuláre so súbormi nepotrebuje, blokujte požiadavky multipart/form-data už na proxy. Ak sa systém nedá rýchlo opraviť, odpojte ho od internetu.
Dňa 23. októbra 2026 tím PHP oznámil ďalšiu chybu CVE-2026-115560, ktorá sa týka len nezvyčajne nastavených aplikácií. Mimoriadne vydanie nebude, do ďalšieho bežného vydania pred ňou chráni session.upload_progress.enabled=0.
Čo ak už ste mohli byť napadnutí
Ak server bežal so zraniteľnou verziou a bol dostupný z internetu, počítajte s možnosťou útoku. Kód útočníka beží pod účtom webového servera. Pozrite sa najmä na tieto veci:
- neobvyklé procesy spustené službami PHP alebo webového servera, napríklad shell či neznáme programy
- opakované pády PHP alebo webového servera v chybových logoch
- veľké množstvo veľkých požiadaviek s formulármi a súbormi v prístupových logoch
- nové alebo zmenené PHP súbory vo webovom adresári a neznáme účty v administrácii webu
ps -ef --forest | grep -E -A5 'php-fpm|apache2|httpd'
grep -iE 'segfault|SIGSEGV' /var/log/apache2/error.log
find /var/www -type f -name '*.php' -mtime -14 -ls
Samotná aktualizácia útočníka zo servera nevyhodí. Ak nájdete stopy útoku, odpojte server od siete, uložte logy mimo neho a prizvite odborníka na riešenie incidentov. Zmeňte heslá k databázam a kľúče, ktoré boli na serveri uložené.
Zdroje
- RCE via OOM corruption · Advisory · php/php-src · GitHub ↗
- RCE via stale global state · Advisory · php/php-src · GitHub ↗
- NÚKIB: NÚKIB upozorňuje na kritické zranitelnosti v PHP - jediným řešením je aktualizace ↗
- CERT-EU: 2026-018: Critical Vulnerabilities in PHP ↗
- SK-CERT: Kritické zraniteľnosti v PHP ↗
- Palo Alto Networks: CVE-2026-109618 Impact of Critical Vulnerabilities in PHP (CVE-2026-109618, CVE-2026-10961 ↗
- Cisco: Vulnerabilities in PHP Affecting Cisco Products: October 2026 ↗
- The Hacker News: CISA Confirms Active Exploitation of Two PHP2Shell Flaws Enabling Remote Code Execution ↗
- NVD CVE-2026-109618 ↗
- ENISA EUVD EUVD-2026-107260 ↗
- NVD CVE-2026-109619 ↗
- ENISA EUVD EUVD-2026-107265 ↗
- CISA Known Exploited Vulnerabilities ↗