php2shell: dve kritické zraniteľnosti v PHP (CVE-2026-109618 a CVE-2026-109619) umožňujú vzdialené spustenie kódu

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

ÚdajCVE-2026-109618CVE-2026-109619
CVSS v4.09.2 (kritická)9.2 (kritická)
CWEv zdroji neuvedenév zdroji neuvedené
Komponentspracovanie chýb pri nedostatku pamäte (out-of-memory) v jadre PHPuchovávanie stavu požiadavky po uvoľnení pamäte v jadre PHP
Typvzdialené spustenie kódu (RCE)vzdialené spustenie kódu (RCE), heap use-after-free, odhalenie pamäte
Autentifikácianie je potrebnánie je potrebná
Dopadspustenie kódu s právami účtu webového workeraspustenie 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 PHPStavOpravená verzia
8.5podporovaná8.5.12
8.4podporovaná8.4.27
8.3podporovaná8.3.36
8.2podporovaná8.2.35
8.1 a staršiebez podporyoficiá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

  1. 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.
  2. 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.exe alebo php-cgi.exe, administračné panely ako cPanel a Plesk a všetko, kde beží WordPress, Drupal, Joomla alebo Magento.
  3. 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).
  4. Dočasná mitigácia pre staré verzie. Do php.ini pridajte riadok session.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.
  5. 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.
  6. 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.
  7. 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