Dana 21. listopada 2026. objavljene su sigurnosne zakrpe za dvije kritične ranjivosti pronađene u samom PHP runtimeu:
- CVE-2026-109618
- CVE-2026-109619
Ranjivosti su zajednički poznate pod nazivom PHP2Shell, a obje su dobile ocjenu ozbiljnosti CVSS 9.2 od mogućih 10. Uspješno iskorištavanje moglo bi omogućiti neautorizirano udaljeno izvršavanje koda, pristup osjetljivim podacima iz memorije PHP procesa ili prekid rada web aplikacije.
Problem je posebno važan zato što se ne nalazi u WordPressu, WooCommerceu, temi ili pojedinom dodatku. Ranjivosti se nalaze u PHP engineu na kojem se izvršava velik broj web aplikacija.
Zbog toga mogu biti pogođene:
- WordPress i WooCommerce stranice
- Drupal i Joomla sustavi
- Magento web trgovine
- Laravel i Symfony aplikacije
- Nextcloud
- Moodle
- MediaWiki
- phpMyAdmin
- vlastite PHP aplikacije
Čak i potpuno ažurirana web stranica može ostati izložena ako server koristi ranjivu verziju PHP-a.

Što je PHP2Shell ?
PHP2Shell je naziv za dvije povezane sigurnosne ranjivosti u načinu na koji PHP upravlja memorijom tijekom obrade web zahtjeva.
Ranjivosti mogu biti aktivirane prije nego što se počne izvršavati aplikacijski kod WordPressa, Laravela ili drugog sustava. To znači da napadaču nije nužno potreban WordPress korisnički račun, administratorska lozinka ili ranjivi plugin.
Potencijalni napad dolazi kao posebno oblikovan HTTP zahtjev koji najprije obrađuje PHP runtime. Uspješno iskorištavanje moglo bi omogućiti napadaču da:
- izvršava naredbe na serveru
- pristupi datotekama web stranice
- pročita osjetljive podatke iz memorije
- pristupi lozinkama, tokenima ili API ključevima
- izmijeni ili izbriše podatke
- postavi zlonamjerni kod ili web shell
- privremeno ili trajno onesposobi web aplikaciju
Sigurnosni istraživači potvrdili su da autentifikacija na razini aplikacije ne može zaustaviti napad koji se izvrši tijekom PHP obrade zahtjeva, prije nego što aplikacija dobije priliku provjeriti korisnika. [Piše Security DataLabs]
Kako funkcionira CVE-2026-109618 ?
Ranjivost CVE-2026-109618 povezana je s načinom na koji PHP reagira kada tijekom obrade web zahtjeva dosegne postavljeno memorijsko ograničenje.
U takvoj situaciji PHP prekida obradu zahtjeva. Problem nastaje ako se prekid dogodi dok su interni podaci zahtjeva tek djelomično inicijalizirani. Tijekom čišćenja memorije PHP može takve nepotpune podatke pogrešno obraditi kao da su potpuno i ispravno inicijalizirani.
Napadač može pokušati kontrolirati sadržaj memorije koju PHP zatim pogrešno obrađuje. U određenim uvjetima to može rezultirati korupcijom memorije i udaljenim izvršavanjem koda.
Ranjivost je dobila ocjenu CVSS 9.2, a PHP sigurnosni tim posebno je upozorio na konfiguracije koje koriste Apache s modulom mod_php. U takvom okruženju demonstriran je napad koji se može aktivirati jednim neautoriziranim zahtjevom.
Kako funkcionira CVE-2026-109619 ?
Ranjivost CVE-2026-109619 povezana je sa zadržavanjem internog stanja PHP zahtjeva nakon što je memorija na koju se podaci odnose već oslobođena.
Ako se tijekom obrade dogodi fatalna pogreška, dio internog stanja može preživjeti dulje nego što bi trebao. Sljedeći zahtjev koji obradi isti PHP worker može pokušati koristiti zastarjele reference prije nego što ih inicijalizacija pravilno zamijeni.
Moguće posljedice uključuju:
- pristup ostacima podataka prethodnog zahtjeva
- otkrivanje sadržaja memorije PHP procesa
- nepredvidivo ponašanje aplikacije
- rušenje PHP workera
- korupciju memorije
- udaljeno izvršavanje koda
Ova je ranjivost posebno važna u okruženjima s dugotrajnim PHP procesima koji obrađuju velik broj uzastopnih zahtjeva.

Na koje PHP sustave utječu ranjivosti ?
PHP sigurnosni tim naveo je da su ugrožene PHP instalacije koje obrađuju web zahtjeve, uključujući:
- PHP-FPM
- Apache s modulom
mod_php php-cgi- FrankenPHP
- LiteSpeed i LSAPI
- dugotrajne PHP workere koji poslužuju web zahtjeve
Najviši rizik potvrđen je za određene konfiguracije koje koriste mod_php, ali korištenje Nginxa, PHP-FPM-a ili LiteSpeeda samo po sebi ne znači da je sustav siguran. Zakrpa PHP runtimea i dalje je potrebna. [Piše Vercel.com]
Ranjivi PHP može se nalaziti na:
- shared hostingu
- managed WordPress hostingu
- VPS serveru
- dedicated serveru
- cloud virtualnoj mašini
- Docker kontejneru
- staging okruženju
- lokalnom razvojnom serveru
- administracijskim alatima poput phpMyAdmina
Zbog toga nije dovoljno provjeriti samo produkcijsku web stranicu. Potrebno je provjeriti svaki PHP runtime koji obrađuje web zahtjeve.
Koje su PHP verzije pogođene ?
Pogođene su sve verzije podržanih PHP grana prije sljedećih sigurnosnih izdanja:
- PHP 8.2 prije verzije 8.2.35
- PHP 8.3 prije verzije 8.3.36
- PHP 8.4 prije verzije 8.4.27
- PHP 8.5 prije verzije 8.5.12
Ranjivi kod postoji najmanje od PHP-a 5.4, pa su pogođene i brojne starije grane koje više nisu službeno podržane.
Koje su PHP verzije sigurne ?
Službene zakrpe objavljene su u sljedećim verzijama:
- PHP 8.2.35
- PHP 8.3.36
- PHP 8.4.27
- PHP 8.5.12
PHP razvojni tim preporučio je svim korisnicima hitnu nadogradnju. Za ove ranjivosti ne postoji potpuna konfiguracijska mitigacija koja bi mogla zamijeniti sigurnosnu zakrpu.
Ako stranica koristi PHP 8.1, 8.0, 7.4 ili još stariju granu, situacija je složenija. PHP projekt za takve grane više ne objavljuje standardna binarna sigurnosna izdanja. Objavljeni su određeni izvorni backportovi, a pojedine Linux distribucije i komercijalni LTS provideri mogu isporučiti vlastite zakrpane pakete.
Zbog toga sama oznaka poput „PHP 8.1” nije dovoljna za zaključak da je server nezaštićen ili zakrpan. Potrebno je provjeriti:
- puni naziv instaliranog paketa
- changelog paketa
- sigurnosnu objavu proizvođača
- potvrdu hosting providera
- jesu li zakrpom obuhvaćena oba CVE identifikatora
Dugoročno je ipak preporučljivo prijeći na aktualnu i službeno podržanu PHP granu.
Jesu li WordPress i WooCommerce stranice ugrožene ?
WordPress nije izvor PHP2Shell ranjivosti, ali za svoj rad koristi PHP runtime instaliran na hosting serveru.
To znači da WordPress i WooCommerce stranica može biti izložena čak i kada su ažurirani:
- WordPress jezgra
- tema
- WooCommerce
- svi dodaci
- sigurnosni pluginovi
Problem se nalazi ispod aplikacijskog sloja. WordPress se počinje izvršavati tek nakon što PHP započne obradu zahtjeva, a napad se može aktivirati prije nego što WordPress stigne provjeriti prijavu, prava korisnika ili sigurnosna pravila plugina.
Ažuriranje WordPressa i dodataka i dalje je obavezna sigurnosna praksa, ali ne zamjenjuje nadogradnju PHP runtimea.
Isti princip vrijedi za Drupal, Joomla, Magento, Laravel, Symfony i druge aplikacije. Nije presudno koja se aplikacija nalazi na serveru, nego obrađuje li web zahtjeve ranjiva verzija PHP-a.

Može li WAF zaštititi web stranicu ?
WAF, odnosno web application firewall, može blokirati poznate obrasce napada prije nego što zahtjev stigne do PHP-a.
To može značajno smanjiti izloženost, posebno tijekom razdoblja između objave ranjivosti i instalacije zakrpe. Međutim, WAF nije potpuna zamjena za sigurnu PHP verziju.
Napadači mogu mijenjati strukturu zahtjeva, pronaći novi način iskorištavanja ili izravno pristupiti origin serveru mimo CDN ili proxy zaštite. Vercel je stoga postavio automatska WAF pravila, ali istodobno izričito upozorio da se PHP runtime svejedno mora zakrpati.
Ispravan redoslijed zaštite je:
- instalirati zakrpanu PHP verziju
- restartati sve PHP procese
- provjeriti stvarnu verziju koju koristi web server
- zadržati WAF kao dodatni zaštitni sloj
- pregledati logove i provjeriti znakove mogućeg napada
Kako su reagirali hosting provideri i platforme ?
Odgovornost za uvođenje zakrpe ovisi o vrsti hosting usluge.
Kod shared i managed hostinga provider najčešće upravlja PHP paketima i automatski uvodi nadogradnje. Kod VPS-a, clouda i dedicated servera odgovornost najčešće ostaje na vlasniku servera ili administratoru.
Hostinger
Hostinger je za upravljane hosting planove postavio dodatna firewall pravila, blokirao poznate obrasce iskorištavanja, isključio problematičnu funkcionalnost session.upload_progress u relevantnim okruženjima i automatski započeo uvođenje zakrpanih PHP verzija. [Objavio Hostinger.com]

Za korisnike shared, Business, Cloud i Agency hostinga provider navodi da nisu potrebne ručne intervencije u PHP sustavu.
Ipak, korisnicima se preporučuje:
- provjeriti PHP verziju u hPanelu
- testirati web stranicu nakon nadogradnje
- provjeriti kontakt forme i slanje e-mailova
- testirati WooCommerce košaricu i naplatu
- provjeriti cron zadatke
- pregledati PHP error log
Kod samostalno upravljanog Hostinger VPS-a korisnik ili administrator mora ručno ažurirati PHP pakete i restartati PHP-FPM, Apache ili druge aktivne PHP workere.
Vercel
Vercel je prije javne objave ranjivosti postavio automatska WAF pravila za blokiranje poznatih PHP2Shell obrazaca napada.
Za PHP funkcije i zahtjeve koji prolaze kroz Vercelovu infrastrukturu zaštita se primjenjuje automatski. Međutim, ako Vercel prosljeđuje zahtjeve prema vanjskom PHP backendu, taj server mora zasebno biti zakrpan. [Objavio Vecrel.com]

Poseban rizik postoji ako je vanjski origin server izravno dostupan s interneta. U tom slučaju napadač može pokušati zaobići Vercelov zaštitni sloj i poslati zahtjev izravno prema PHP serveru.
Vlasnici takvih sustava trebaju:
- ažurirati PHP na backend serveru
- ograničiti izravan pristup origin poslužitelju
- dopustiti promet samo iz očekivanih proxy mreža
- restartati PHP workere
- provjeriti firewall logove
Google Cloud
Google Cloud je objavio da njegova upravljana cloud infrastruktura sama po sebi nije pogođena, ali korisničke virtualne mašine, kontejneri i aplikacije koje pokreću ranjivu verziju PHP-a mogu biti izloženi.
Kod samostalno upravljanog Google Cloud VM-a korisnik mora:
- ažurirati PHP pakete unutar operativnog sustava
- restartati PHP-FPM ili Apache
- provjeriti web verziju PHP-a
- pregledati logove
- potvrditi da svi povezani serveri koriste zakrpu

Kod kontejnerskih aplikacija potrebno je izgraditi novu sliku s odgovarajućom PHP verzijom i ponovno postaviti aplikaciju. Sam restart starog kontejnera neće pomoći ako njegova slika i dalje sadrži ranjivi PHP paket.
Ako se koristi autoscaling, potrebno je provjeriti i predložak iz kojeg se pokreću nove instance. U protivnom se nakon skaliranja mogu ponovno pojaviti serveri s ranjivom verzijom.
cPanel i CloudLinux hosting
cPanel je objavio zakrpane verzije za podržane cPanel/WHM i EasyApache pakete, uključujući:
- PHP 8.2.35
- PHP 8.3.36
- PHP 8.4.27
- PHP 8.5.12
Objavljeni su i određeni backportirani paketi za starije PHP grane koje se još koriste u pojedinim hosting okruženjima.
Kod shared cPanel hostinga nadogradnju u pravilu izvršava hosting provider. Korisnik treba provjeriti status providera ili zatražiti potvrdu da su paketi instalirani.
Kod vlastitog cPanel/WHM servera administrator mora:
- osvježiti repozitorije
- instalirati dostupna sigurnosna ažuriranja
- provjeriti EasyApache pakete
- restartati PHP servise
- potvrditi da sve aktivne MultiPHP verzije sadrže zakrpu
Dostupnost sigurnosnog paketa u repozitoriju ne znači da ga je svaki server automatski instalirao.
ISPConfig i vlastiti Linux serveri
ISPConfig je objavio privremeni mehanizam za blokiranje problematičnih multipart zahtjeva prije nego što stignu do PHP-a. Takva mjera može smanjiti rizik dok distribucija ili PHP repozitorij ne objavi zakrpane pakete. [Objavljeno na cert.europa.eu]
Privremeno blokiranje multipart zahtjeva može onemogućiti:
- prijenos slika u WordPress
- slanje privitaka kroz kontakt forme
- uvoz baza kroz phpMyAdmin
- slanje datoteka kroz webmail
- upload proizvoda i dokumenata
Zato se takva zaštita treba koristiti samo kao privremena mjera. Nakon instalacije sigurnog PHP paketa potrebno je ukloniti blokadu i ponovno omogućiti normalne funkcionalnosti.
Administratori vlastitih Linux servera trebaju provjeriti i pakete operativnog sustava. Distribucije poput Debiana, Ubuntua, RHEL-a i SUSE-a često vraćaju sigurnosne zakrpe u postojeće pakete bez promjene glavnog upstream broja verzije.
Zbog toga PHP koji se prikazuje kao primjerice 8.3.6 ne mora nužno biti ranjiv ako naziv distribucijskog paketa i changelog potvrđuju da je sigurnosna zakrpa ugrađena.
Kako provjeriti PHP verziju WordPress stranice ?
PHP verziju možeš provjeriti kroz WordPress administraciju:
WordPress nadzorna ploča:
→ Alati
→ Zdravlje web-stranice
→ Informacije
→ Poslužitelj
→ PHP verzija
Za podržane PHP grane sigurne minimalne verzije trebaju biti:
- PHP 8.2.35
- PHP 8.3.36
- PHP 8.4.27
- PHP 8.5.12
Kod Linux distribucija koje primjenjuju sigurnosne backportove potrebno je dodatno provjeriti puni naziv paketa i njegov changelog.
Također je moguće da naredba: php -v prikazuje CLI verziju PHP-a, dok web stranica koristi drugu verziju kroz PHP-FPM ili Apache. Zato uvijek treba provjeriti runtime koji stvarno obrađuje web zahtjeve.
Na vlastitom serveru mogu se provjeriti i FPM verzije: php-fpm -v ili, ovisno o instalaciji: php-fpm8.3 -v
Nakon nadogradnje potrebno je restartati odgovarajući servis kako stari PHP procesi ne bi nastavili koristiti ranjivi kod učitan u memoriju.
Što napraviti ako koristiš ranjivu PHP verziju ?
Na managed hostingu:
- Napravi sigurnosnu kopiju stranice i baze podataka.
- Provjeri koje zakrpane verzije provider nudi.
- Provjeri kompatibilnost teme i dodataka.
- Napravi staging kopiju ako je dostupna.
- Aktiviraj sigurnu PHP verziju.
- Testiraj frontend, administraciju, forme i e-mailove.
- Testiraj WooCommerce naplatu i zakazane zadatke.
- Pregledaj PHP error log.
Na vlastitom VPS-u ili vlastitom serveru:
- Napravi inventar svih PHP instalacija i verzija.
- Ažuriraj pakete iz službenog ili pouzdanog repozitorija.
- Restartaj PHP-FPM, Apache i druge workere.
- Provjeri web runtime, ne samo CLI.
- Pregledaj pristupne i sigurnosne logove.
- Provjeri neočekivane promjene datoteka i procese.
- Rotiraj lozinke i tajne ako postoje znakovi kompromitacije.
- Provjeri staging, razvojna i pomoćna okruženja.
Ako neposredna nadogradnja nije moguća, privremene WAF i serverske mjere mogu smanjiti izloženost, ali ne predstavljaju potpuno rješenje.
Kako prepoznati mogući pokušaj iskorištavanja ?
Administratori bi trebali obratiti pažnju na:
- neuobičajeno velike POST zahtjeve
- sumnjive
multipart/form-datazahtjeve - česte PHP memory exhaustion pogreške
- neočekivano rušenje PHP workera
- pokretanje shell procesa iz PHP konteksta
- nepoznate datoteke u web direktoriju
- nove administrativne račune
- izmjene WordPress jezgre
- sumnjiva preusmjeravanja
- neočekivano povećanje CPU ili memorijske potrošnje
- nepoznate cron zadatke
- izmijenjene konfiguracijske datoteke
Važno je znati da uspješan napad ne mora nužno srušiti PHP worker ili ostaviti očit trag na samoj web stranici. Sigurnosna analiza treba uključivati pristupne logove, sistemske logove, procese i integritet datoteka.
Ako postoji ozbiljna sumnja na kompromitaciju, samo instaliranje zakrpe nije dovoljno. Potrebno je analizirati sustav, ukloniti neovlaštene promjene i rotirati:
- administratorske lozinke
- hosting pristupe
- SSH ključeve
- API ključeve
- WordPress salts
- lozinke baze podataka
- pristupe e-mail računima
- tajne spremljene u konfiguracijskim datotekama
Zaključak: Ažuriranje PHP-a jedina je potpuna zaštita
PHP2Shell ranjivosti CVE-2026-109618 i CVE-2026-109619 kritične su zato što se nalaze u samom PHP engineu i mogu biti iskorištene prije nego što se izvrši kod WordPressa ili druge web aplikacije.
Najvažnije činjenice su:
- ranjivosti imaju CVSS ocjenu 9.2
- napadaču nije nužno potreban korisnički račun
- WordPress i plugin nadogradnje ne uklanjaju problem
- WAF može smanjiti rizik, ali nije konačno rješenje
- potrebno je instalirati zakrpani PHP paket
- nakon nadogradnje treba restartati PHP workere
- treba provjeriti runtime koji stvarno koristi web server
- backup i sigurnosni nadzor i dalje su obavezni
Korisnici shared i managed hostinga u pravilu ovise o reakciji hosting providera. Vlasnici VPS-a, cloud instanci i dedicated servera moraju sami provjeriti jesu li zakrpe instalirane na svim PHP okruženjima.
Ako provider nije objavio jasnu potvrdu, zatraži eksplicitan odgovor za oba CVE identifikatora.
Ako čitate ovaj članak, a niste web administrator/developer i trebate pomoć oko provjere zakrpe i trenutne PHP verzije koju vaša stranica koristi, javite se za pomoć.
#kritične PHP ranjivosti i sigurnosne nadogradnje #CVE-2026-109618 #CVE-2026-109619


