Č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 sa našli dve kritické chyby s označením CVE-2026-109618 a CVE-2026-109619, ktoré dostali prezývku 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. Podľa The Hacker News potvrdil výskumník Adel Karimi zo spoločnosti Perplexity 24. októbra 2026 úspešné útoky na návnadové servery. 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ý SK-CERT, český NÚKIB aj európsky CERT-EU. Podľa NÚKIB sú verejne dostupné aj informácie, ktoré umožňujú chyby zneužiť. Palo Alto Networks hlási aktívne útoky na správcovské webové rozhranie firewallov s PAN-OS dostupné z internetu, ktoré na pozadí používa PHP.
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, ostanú po nej napoly pripravené údaje a PHP s nimi pri upratovaní zaobchádza ako s platnými. Pri CVE-2026-109619 ostanú po predchádzajúcej požiadavke vnútorné záznamy PHP, ktoré ukazujú do už uvoľnenej pamäte. Ďalšia požiadavka, ktorú obslúži ten istý proces, ich potom použije.
Útočník nepotrebuje prihlásenie, stačí mu posielať upravené požiadavky cez internet. Pri CVE-2026-109618 a Apache s mod_php sa to podľa tímu PHP deje ešte pred spustením akéhokoľvek kódu aplikácie, takže nezáleží na tom, aký web na serveri beží. Pri CVE-2026-109619 tím PHP predviedol útok na Apache s mod_php aj PHP-FPM. Úspešnosť útoku závisí od konfigurácie, rozšírení a aplikácie. Útočník potom môže spúšťať kód s právami účtu webového servera a pracovať so všetkým, k čomu má web prístup, napríklad s konfiguračnými súbormi či obsahom webu.
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, tím PHP 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 nasledujúcich 30 dňoch a pri oboch chybách je takmer na 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, ktoré od projektu PHP už nedostávajú bežné aktualizácie (podľa SK-CERT sú zraniteľné všetky verzie od PHP 5.0)
- zariadenia a produkty, ktoré PHP obsahujú vo svojom správcovskom rozhraní
Podľa CERT-EU je ohrozená každá inštalácia PHP, ktorá obsluhuje webové požiadavky: Apache s mod_php (podľa tímu PHP najrizikovejšia), PHP-FPM, php-cgi, FrankenPHP aj LiteSpeed. Typicky ide o webhostingy, firemné weby a e-shopy, intranetové aplikácie a služby v kontajneroch Docker.
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 medzi zasiahnutými produktmi uvádza Expressway, Duo Access Gateway, Ultra-Reliable Wireless Backhaul a ISE Portal Builder. 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. Nič nemenia, len čítajú. Príkaz dpkg je pre Debian a Ubuntu, rpm pre Red Hat, AlmaLinux a podobné systémy.
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 opravu často doplnia bez zmeny čísla verzie PHP. Pri balíkoch z distribúcie preto 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. Linuxové distribúcie dostali opravy vopred, použite ich balíky. Dobrovoľnícky repozitár remirepo opravy v deň vydania nemal.
- 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 nahraďte podporovanou verziou alebo použite opravu (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
Oba riadky blokujú potvrdené cesty útoku cez CVE-2026-109619, druhý platí len pre PHP 8.5. Pri CVE-2026-109618 tím PHP ako hlavné opatrenie odporúča natvrdo nastaviť memory_limit=-1 cez php_admin_value, aby ho aplikácia nemohla zmeniť. Ďalej znížte post_max_size na 8M, ak web nenahráva súbory, inak na 32M. 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.
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 kvôli nej 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 tým, že mohol byť napadnutý. Kód útočníka beží pod účtom webového servera. Podľa NÚKIB môžu na pokus o útok ukazovať neobvyklé procesy spúšťané službami PHP. Sledujte hlavne:
- 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 a vyčerpanie pamäte v chybových logoch
- veľké množstvo objemný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'
zgrep -iE 'segfault|SIGSEGV|segmentation fault|Allowed memory size' /var/log/apache2/error.log* /var/log/php*-fpm.log*
journalctl -k | grep -i segfault
find /var/www -type f -name '*.php' -mtime -14 -ls
Na Red Hat a podobných systémoch použite v príkaze zgrep cesty /var/log/httpd/error_log* a /var/log/php-fpm/*. 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 ↗