Hitne PHP zakrpe otklanjaju dve kritične PHP2Shell ranjivosti

PHP je 21. oktobra 2026. objavio hitne zakrpe za dve kritične ranjivosti nazvane PHP2Shell: CVE-2026-109618 i CVE-2026-109619. Obe su ocenjene sa 9,2 po CVSS v4.0 skali, a ispravke su dostupne u verzijama PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Greške mogu napadaču bez korisničkog naloga omogućiti izvršavanje koda na web serveru.
Ranjivosti se nalaze u PHP izvršnom okruženju, a ne u kodu pojedinačne aplikacije. Zato ugrožen može biti i server koji pokreće jednostavnu PHP stranicu, bez obzira na bezbednosni kvalitet aplikacije koja je postavljena iznad njega.
Širok obuhvat i posebno izložen mod_php
Bezbednosno obaveštenje obuhvata PHP-FPM, Apache mod_php, php-cgi, FrankenPHP i LiteSpeed. Istraživači navode da greške pogađaju gotovo svaku granu PHP-a počev od verzije 5.4, dok su najnovije podržane grane dobile zvanične ispravke.
Apache mod_php nosi najveći rizik jer je demonstriran napad u kojem jedan neautentifikovani zahtev pokreće izvršavanje koda pre nego što aplikacioni kod uopšte počne da se izvršava. Kod PHP-FPM-a ponašanje se razlikuje: za jednu ranjivost nije prikazan potpun eksploatacioni lanac, dok je druga demonstrirana i na PHP-FPM-u, ali uz radnju unutar aktivne aplikacije.
Opis problema ukazuje i na mogućnost čitanja memorije PHP radnog procesa. U toj memoriji mogu se nalaziti lozinke, tokeni za autentifikaciju, API ključevi i sertifikati iz drugih zahteva. Istraživači su demonstrirali čitanje memorije radnika nad aplikacijama koje nisu kontrolisali.
Šta treba ažurirati
Potpunu zaštitu donosi ažuriranje PHP runtime-a koji obrađuje web zahteve, a zatim restart Apachea, PHP-FPM-a i svih dugotrajnih PHP radnika. Ažuriranje aplikacije, kao što su WordPress ili Laravel, ne ažurira PHP runtime; njega isporučuju serverski paket, hosting provajder ili slika kontejnera.
- PHP 8.5 treba podići na 8.5.12 ili noviji.
- PHP 8.4 treba podići na 8.4.27 ili noviji.
- PHP 8.3 treba podići na 8.3.36 ili noviji.
- PHP 8.2 treba podići na 8.2.35 ili noviji.
PHP 8.1 i starije grane više ne dobijaju ažuriranja od PHP projekta, dok PHP 8.2 dostiže kraj životnog ciklusa 31. decembra 2026. Za PHP 7.4, 8.0 i 8.1 objavljeni su izvorni backporti. Kod Linux distribucija i LTS dobavljača broj paketa može izgledati starije, pa je potrebno proveriti changelog paketa za oba CVE identifikatora, a ne oslanjati se samo na verzionu oznaku.
Privremene mere nisu zamena za zakrpu
Za CVE-2026-109618 savetuje se postavljanje memory_limit=-1, nizak post_max_size i ograničavanje veličine zahteva na web serveru ili proksiju. PHP izričito upozorava da RLIMIT_AS i RLIMIT_DATA nisu zamena, jer mogu aktivirati isti ranjivi put.
Za CVE-2026-109619 može se isključiti session.upload_progress.enabled i restartovati svaki radnik, a u PHP 8.5 postaviti i fatal_error_backtraces=0. Ta mera blokira potvrđene putanje kroz sesije, ali ne uklanja druge varijante napada. Nijedna konfiguraciona promena nije potpuna zaštita bez ažuriranja.
Cloudflare je pre objave zakrpa zabeležio rane pokušaje eksploatacije, ali nijedan navedeni izvor tada nije potvrdio uspešan prodor. Nakon ažuriranja treba preispitati memorijska ograničenja, jer nova zaštita uvodi čvrsto ograničenje memorije koje prekida proces i sprečava izvršavanje shutdown rutina. Operativni prioritet je jasan: identifikovati PHP runtime koji prima web zahteve, primeniti odgovarajuću zakrpu, restartovati radnike i pratiti neuobičajene multipart zahteve, greške ograničenja memorije, ponovljene HTTP 500 odgovore i neočekivane restarte.

