Dve kritické zraniteľnosti v jadre jazyka PHP unikli na internet ešte pred koordinovaným zverejnením a vydaním záplat. PHP tím medzitým vydal opravy – administrátori by mali aktualizovať na verzie 8.5.12, 8.4.27, 8.3.36 alebo 8.2.35 bezodkladne.
Prehľad situácie
Ráno 20. októbra 2026 sa na Hacker News objavil príspevok, podľa ktorého sa chystá zverejnenie dvoch kritických zraniteľností v PHP. Príspevok bol odstránený, no snímky obrazovky sa už šírili po sociálnych sieťach. Spoločnosť watchTowr krátko nato potvrdila, že únik je skutočný – všetci mali pôvodne čakať do štvrtka 22. októbra, 11:00 ET.
PHP bezpečnostný tím reagoval vydaním predbežného upozornenia a presunul vydanie opráv o deň skôr – na stredu 21. októbra. Zároveň si vyhradil právo vydať opravy ešte skôr, ak by technické detaily vyšli na verejnosť alebo by sa objavila aktívna exploitácia. Opravené verzie nakoniec vyšli 21. októbra okolo 9:30 ET.
Význam problému je veľký: PHP poháňa WordPress, Drupal, Joomla a Magento, zdieľané hostingy, administračné panely a množstvo softvéru, ktorý PHP vo svojom popise ani nespomína. Keď sa kritická chyba nachádza priamo v PHP (a nie v jednej aplikácii postavenej nad ním), počet miest, kde treba hľadať zraniteľné inštalácie, rastie veľmi rýchlo.
Názov php2shell je označenie, ktoré medzi výskumníkmi koluje – zvyčajne znamená, že útočník pošle požiadavku na webovú stránku a získa shell (príkazový riadok) na zraniteľnom serveri.
Technické detaily
| Údaj | CVE-2026-109618 | CVE-2026-109619 |
|---|---|---|
| CVSS v4.0 | 9.2 (kritická) | 9.2 (kritická) |
| CWE | v zdroji neuvedené | v zdroji neuvedené |
| Komponent | spracovanie chýb pri nedostatku pamäte (out-of-memory) v jadre PHP | uchovávanie stavu požiadavky po uvoľnení pamäte v jadre PHP |
| Typ | vzdialené spustenie kódu (RCE) | vzdialené spustenie kódu (RCE), heap use-after-free, odhalenie pamäte |
| Autentifikácia | nie je potrebná | nie je potrebná |
| Dopad | spustenie kódu s právami účtu webového workera | spustenie kódu s právami webového workera, únik obsahu pamäte |
CVE-2026-109618 súvisí so spracovaním situácie, keď PHP pri príprave dát požiadavky vyčerpá pamäť. Spracovanie sa preruší a dáta zostanú inicializované len čiastočne. Pri upratovaní po požiadavke sa s nimi však zaobchádza, akoby boli v poriadku, čo otvára cestu k spusteniu kódu. Podľa PHP bolo úplné RCE overené cez HTTP proti mod_php s predvolenými limitmi vstupu a pamäte, aj v bežných prefork konfiguráciách s viacerými workermi.
CVE-2026-109619 vzniká tým, že PHP si uchováva stav špecifický pre požiadavku aj po uvoľnení pamäte, ktorá ho zálohovala. Ak ten istý worker spracúva ďalšiu požiadavku, PHP môže k tomuto „zastaranému“ stavu pristúpiť skôr, než ho bežná inicializácia vynuluje. Ide o chybu typu use-after-free (použitie už uvoľnenej pamäte), ktorá môže viesť k odhaleniu obsahu pamäte aj k spusteniu kódu bez prihlásenia.
Zasiahnuté verzie a opravy
Podľa PHP je ohrozená každá inštalácia, ktorá obsluhuje webové požiadavky – vrátane PHP-FPM, Apache s mod_php, php-cgi, FrankenPHP a LiteSpeed. Pre mod_php existuje exploit, pri ktorom môže neautentifikovaná požiadavka spustiť útok ešte pred vykonaním akéhokoľvek aplikačného kódu.
| Vetva PHP | Stav | Opravená verzia |
|---|---|---|
| 8.5 | podporovaná | 8.5.12 |
| 8.4 | podporovaná | 8.4.27 |
| 8.3 | podporovaná | 8.3.36 |
| 8.2 | podporovaná | 8.2.35 |
| 8.1 a staršie | bez podpory | oficiálna oprava nevyšla; PHP tím poskytol minimálne zdrojové backporty pre 7.4, 8.0 a 8.1 |
Linuxové distribúcie a LTS dodávatelia dostali záplaty ešte pred zverejnením – aktualizované balíky treba overiť u svojho dodávateľa. Používatelia komunitného repozitára rpms.remirepo.net by mali prejsť na balíky z distribúcie alebo zostaviť PHP zo zdrojového kódu, pretože aktualizované balíky z tohto repozitára v deň vydania nie sú k dispozícii.
Kontext exploitácie
K 21. októbru (10:00 ET aj 16:30 ET) spoločnosť Huntress nezaznamenala exploitáciu v reálnych útokoch u svojich partnerov, iní výskumníci však hlásia, že útoky sa už objavujú. Po vydaní opráv zverejnili technické detaily viacerí výskumníci:
- Calif popísal históriu zraniteľností súvisiacich s limitom pamäte v PHP a ukázal, ako sa k nim vrátil v rámci iniciatívy OpenAI Patch the Planet, pričom našiel viacero spoľahlivých ciest k RCE.
- Wiz demonštroval, ako neautentifikované RCE funguje proti WordPressu, Drupalu a Joomle, a ukázal samostatnú cestu k úniku pamäte, ktorá môže odhaliť heslá, tokeny, API kľúče a certifikáty.
Keďže sú technické detaily verejné, možno očakávať rýchly nástup verejných PoC exploitov.
Ako bude exploitácia vyzerať v praxi. Florian Roth, autor bezplatného nástroja process-watcher na monitorovanie procesov v Linuxe, upozorňuje, že zneužitie sa pravdepodobne prejaví ako podozrivé podprocesy spustené z PHP. Tomu zodpovedá aj skúsenosť Huntress z prakticky každého incidentu s PHP. Pozor si treba dať, ak worker (php-fpm, php-cgi, php-cgi.exe, httpd, apache2) spustí:
- shelly –
sh,bash,cmd.exe,powershell.exe, - interprety –
python,perl, - nástroje na sťahovanie a sieťovú komunikáciu –
curl,wget,nc,certutil.exe.
Zvýšenú pozornosť si zaslúžia aj príkazové riadky so vzormi reverse shellu (/dev/tcp/, fsockopen, mkfifo) a rýchle prieskumné príkazy spustené priamo z webservera, napríklad whoami, id, uname -a alebo ipconfig.
Odporúčania a mitigácie
- Aktualizujte okamžite. Prejdite na PHP 8.5.12, 8.4.27, 8.3.36 alebo 8.2.35 (zdrojové kódy sú na stránke php.net/downloads). Najprv záplatujte systémy dostupné z internetu a pred nasadením otestujte, či aktualizácia nenaruší funkčnosť webu.
- Urobte inventúru všetkých inštalácií PHP. Nezabudnite na menej zjavné miesta: softvér dodávateľov a aplikácie pre Windows, ktoré obsahujú
php.exealebophp-cgi.exe, administračné panely ako cPanel a Plesk a všetko, kde beží WordPress, Drupal, Joomla alebo Magento. - Izolujte PHP, ktoré dosiahlo koniec životnosti (EOL). Odpojte ho od internetu, prípadne ho skryte za VPN alebo WAF (web application firewall – firewall pre webové aplikácie).
- Dočasná mitigácia pre staré verzie. Do
php.inipridajte riadoksession.upload_progress.enabled = Off. Aby zmena nadobudla účinnosť, môže byť potrebný reštart webových služieb alebo servera. Opatrenie zmierňuje známe spôsoby zneužitia, ale nenahrádza aktualizáciu. - Komunitné záplaty. Výskumníci pripravili vlastné záplaty, ktoré umožňujú prebudovať moduly PHP zo zdrojového kódu. Huntress nedokáže posúdiť ich účinnosť, preto ich odporúča len ako núdzové riešenie – ak je to možné, prejdite na najnovšie vydanie 8.5.x.
- Monitorujte, čo PHP spúšťa. Upozornenia nastavte na PHP workery, ktoré spúšťajú shelly, interprety alebo sťahovacie nástroje. Na linuxových serveroch bez EDR (endpoint detection and response – ochrana koncových zariadení) je rýchlou a bezplatnou voľbou process-watcher, ktorý odporúčame spustiť najprv v režime pozorovania.
- Ak nájdete kompromitáciu, server izolujte a zachovajte logy webservera a PHP. Hľadajte webshelly a nové súbory vo web roote, nové cron úlohy, naplánované úlohy a nové účty.
Záverečné zhodnotenie
CVE-2026-109618 a CVE-2026-109619 patria medzi najzávažnejšie chyby, aké sa v PHP objavili: vyžadujú len HTTP požiadavku, nepotrebujú prihlásenie a zasahujú jadro jazyka, nie jednotlivú aplikáciu. Kombinácia úniku pred záplatou, verejných technických rozborov a existujúceho exploitu pre mod_php znamená, že okno medzi zverejnením a masovým zneužitím bude veľmi krátke. Organizácie by mali záplatovať prioritne systémy dostupné z internetu, a tam, kde to nie je možné (staré, nepodporované verzie), systémy izolovať a zosilniť monitoring podozrivých podprocesov PHP.
Zdroje
- PHP: Upcoming Critical PHP Security Release – https://www.php.net/archive/2026.php#2026-10-20-1
- Huntress: Rapid Response: php2shell, Leaked Critical PHP Vulnerabilities – https://www.huntress.com/blog/php2shell-leaked-critical-php-vulnerabilities
- watchTowr: PHP Remote Code Execution FAQ: CVE-2026-109618 & CVE-2026-109619 – https://watchtowr.com/intelligence/php-cve-2026-109618-faq/