PHP má dve kritické zero-day zraniteľnosti
Vývojári jazyka PHP vydali opravy dvoch kritických zraniteľností, ktoré umožňujú neautentifikované vzdialené vykonávanie ľubovoľného kódu na zraniteľnom serveri. Stručná informácia o zraniteľnostiach unikla na verejnosť pred vydaním opravných aktualizácií.
[aktualizované 22.10.2026]
Zraniteľné systémy:
- PHP verzie 5 až 8, staršie ako 8.5.12, 8.4.27, 8.3.36 a 8.2.35
Pozn.: zraniteľné sú všetky inštalácie PHP, ktoré spracúvajú webové požiadavky, vrátane PHP-FPM, Apache s modulom mod_php, php-cgi, FrankenPHP a LiteSpeed.
Opis činnosti:
Vývojári jazyka PHP opravili dve kritické zero-day zraniteľnosti v jadre PHP, ktoré umožňujú neautentifikovanému útočníkovi vzdialene vykonávať ľubovoľný kód s oprávneniami webového workera. Zraniteľnosti dostali spoločný názov „php2shell“.
CVE-2026-109618 (CVSS v4.0 skóre 9,2)
Kritická zraniteľnosť sa nachádza v mechanizme PHP pre narábanie s chybou vyčerpania pamäte. Pri vyčerpaní pamäte počas načítavania dát z požiadavky sa proces preruší a dáta sú čiastočne inicializované. Následne počas čistenia mechanizmus narába s inicializovanými dátami ako s validnými. Zraniteľnosť môže zneužiť útočník zaslaním špeciálne vytvorenej HTTP požiadavky.
CVE-2026-109619 (CVSS v4.0 skóre 9,2)
Kritická zraniteľnosť súvisí so zachovaním stavu špecifického pre požiadavku po uvoľnení jej pamäte. Keď ten istý worker spracúva ďalšiu požiadavku, PHP môže pristúpiť ku danému stavu predošlej požiadavky, ktorý sa zresetuje až následnou inicializáciou. Útočník tak môže získať schopnosť použiť dealokovanú pamäť na halde.
Možné škody:
- Vzdialené vykonávanie kódu
Odporúčania:
Bezodkladná aktualizácia PHP aspoň na verziu 8.5.12, 8.4.27, 8.3.36 alebo 8.2.35.
Zraniteľnosť CVE-2026-109618 môžete dočasne mitigovať nasledovným spôsobom:
- Nastavte parameter memory_limit=-1 a overte, že ho žiadna aplikácia nezmení naspäť na konečnú hodnotu. Pomôcť tomu zabrániť môže nastavenie na úrovni php_admin_value v poole FPM alebo konfigurácii Apache.
- Nastavte post_max_size = 8M pre aplikácie, ktoré nevyžadujú nahrávanie súborov a post_max_size = 32M pre tie, čo ho vyžadujú. Hodnotu upload_max_filesize nastavte nižšiu ako post_max_size. Dôkladne ho implementujte, bez vynechania veľkosti dekódovanej požiadavky, počtu vstupných polí, počtu častí multipartovej požiadavky, počtu hlavičiek, hĺbky vnorenia a požiadaviek bez Content-Length.
- Ako hranicu dostupnosti použite limit kontajnera alebo cgroup, najlepšie v kombinácii s politikou, ktorá ukončí len príslušný worker proces. Nepoužívajte namiesto toho RLIMIT_AS ani RLIMIT_DATA, pretože tieto môžu spôsobiť zraniteľné zlyhanie alokácie.
Zraniteľnosť CVE-2026-109619 môžete dočasne mitigovať nasledovným spôsobom:
- Nastavte parameter session.upload_progress.enabled=0 a reštartujte workery. Použite súbor php.ini, FPM pool alebo konfiguráciu servera, ktorá sa uplatňuje pred parsovaním požiadavky. Nespoliehajte sa na funkciu ini_set() ani na súbor FPM .user.ini, pretože blokujú iba overené cesty relácií, nie však ostatné varianty.
- Pre PHP 8.5 nastavte parameter fatal_error_backtraces=0 a reštartujte workery.
- Odstráňte neplatné alebo zastarané nastavenia uplatňované pri každej požiadavke, ktoré vyvolávajú zobrazenie diagnostických hlásení pred inicializáciou.
- Opravte kritické chyby a časové limity vykonávania, ku ktorým má útočník prístup, vrátane chýb v spätných volaniach, pri spracovaní nahrávania alebo importu a pri čistení.
Odkazy:
- https://www.php.net/archive/2026.php#2026-10-20-1
- https://www.php.net/archive/2026.php#2026-10-21-5
- https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
- https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
- https://cert.europa.eu/publications/security-advisories/2026-018
- https://www.huntress.com/blog/php2shell-leaked-critical-php-vulnerabilities