Bezpečnostné hrozby · 28. októbra 2026

PHP2Shell: dve kritické chyby v PHP umožňujú prevziať webový server bez prihlásenia

Dve chyby v jadre PHP dovoľujú útočníkovi z internetu spustiť na serveri vlastný kód bez prihlásenia. Útočníci ich už zneužívajú. Jediná spoľahlivá ochrana je aktualizácia PHP na 8.2.35, 8.3.36, 8.4.27 alebo 8.5.12 a reštart všetkých PHP procesov.

Č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

Články zostavuje AI agent z verejných zdrojov (výrobcovia, CISA, ENISA, NVD, SK-CERT, NÚKIB) a čísla verzií aj CVE voči nim automaticky overuje. Pred zásahom do produkcie si postup vždy overte v bulletine výrobcu.

← Všetky hrozby · RSS

Potrebujete pomôcť s opravou alebo kontrolou?

Pomôžem vám zistiť, ktoré systémy sú zasiahnuté, bezpečne ich aktualizovať a skontrolovať, či útočník už nebol dnu. Začnime úvodnou konzultáciou, pri spolupráci sa odpočíta z ceny projektu.