Otkrivene dve kritične PHP ranjivosti: Kako da zaštitite svoj server?
U PHP-u su otkrivene dve kritične bezbednosne ranjivosti koje napadačima mogu da omoguće izvršavanje zlonamernog koda na serveru, bez prethodne prijave u aplikaciju.
PHP razvojni tim je 21. oktobra 2026. godine objavio bezbednosne zakrpe i preporučio korisnicima da što pre ažuriraju svoje instalacije.
Problem je posebno ozbiljan zato što se ranjivosti nalaze u samom PHP-u, a ne u aplikacijama koje ga koriste. To znači da mogu da budu ugroženi WordPress sajtovi, internet prodavnice i druge PHP aplikacije, čak i kada redovno ažurirate njihove pluginove i ostale komponente.
Ako sami održavate VPS ili dedicated server, bitno je da odmah proverite koju PHP verziju koristite i da li su instalirane odgovarajuće bezbednosne zakrpe.
O kakvim ranjivostima je reč?
Otkrivene ranjivosti, označene kao CVE-2026-109618 i CVE-2026-109619, povezane su sa nepravilnim upravljanjem memorijom u PHP-u. Obe mogu da omoguće udaljeno izvršavanje koda (Remote Code Execution – RCE).
To znači da napadač, pod određenim uslovima, može da izvršava zlonamerni kod na serveru, pristupi podacima dostupnim PHP procesu ili izmeni datoteke za koje taj proces ima odgovarajuće dozvole.
Ranjivosti se razlikuju po načinu na koji nastaju:
- CVE-2026-109618 – greška pri obradi situacija kada PHP-u ponestane memorije. PHP tada može da ostavi interne podatke u nevažećem stanju, a njihova kasnija obrada napadaču otvara mogućnost za izvršavanje zlonamernog koda.
- CVE-2026-109619 – greška zbog zaostalih internih podataka iz prethodnog zahteva. Ako se obrada jednog zahteva prekine zbog greške, deo podataka koji je trebalo da bude obrisan može da ostane zapamćen u PHP procesu. Kada isti proces zatim obrađuje novi zahtev, može da koristi te podatke kao da su i dalje važeći, iako memorija na koju ukazuju više ne postoji.
Posebno zabrinjava to što napadač ne mora da ima korisnički nalog niti da se prijavi u aplikaciju. U određenim konfiguracijama dovoljni su posebno pripremljeni HTTP zahtevi.
Obe ranjivosti imaju CVSS ocenu 9.2 od 10, što ih svrstava u kritične. Napad nije jednostavan za izvođenje i zavisi od konfiguracije servera, ali je potvrđeno da može da se izvede, pa ažuriranje ne treba odlagati.
Koji serveri su ugroženi?
Prema zvaničnom saopštenju PHP razvojnog tima, ranjivosti predstavljaju rizik za nezakrpljene PHP instalacije koje obrađuju web zahteve.
To obuhvata servere koji koriste PHP-FPM, Apache mod_php, LiteSpeed (LSAPI) i FrankenPHP.
PHP razvojni tim posebno upozorava na Apache mod_php, za koji je demonstriran napad koji može da se pokrene pre nego što PHP počne da izvršava kod same aplikacije. Za PHP-FPM je takođe potvrđeno da je ranjiv, iako napad u tom slučaju u većoj meri zavisi od same aplikacije.
Važno je da znate da ažuriranje WordPress-a, pluginova ili tema ne može da reši ranjivost koja postoji u samom PHP-u. Zato treba da ažurirate PHP na serveru, bez obzira na to koju aplikaciju koristite.
Koje PHP verzije rešavaju problem?
Bezbednosne ispravke dostupne su u sledećim verzijama:
| PHP verzija | Verzija sa bezbednosnom zakrpom |
| PHP 8.5 | 8.5.12 |
| PHP 8.4 | 8.4.27 |
| PHP 8.3 | 8.3.36 |
| PHP 8.2 | 8.2.35 |
Ako koristite neku od navedenih PHP verzija, treba da instalirate odgovarajuće ažuriranje.
Važna napomena: Ako PHP instalirate iz standardnih repozitorijuma Linux distribucije, broj verzije možda neće odgovarati onome iz tabele. Ubuntu, Debian, AlmaLinux i druge distribucije često ne prelaze na novu PHP verziju, već bezbednosnu ispravku ugrađuju u postojeću. Na primer, PHP na Ubuntu serveru može i posle ispravnog ažuriranja da prikazuje verziju 8.3.6.
Zato stariji broj PHP verzije ne znači automatski da server nije zaštićen. Proverite bezbednosna obaveštenja dobavljača vaše Linux distribucije, poput Ubuntu Security Notices (USN) ili Debian Security Advisories (DSA).
Ako PHP instalirate iz dodatnih repozitorijuma, kao što su Ondřej Surý PPA (sury.org) za Ubuntu i Debian ili Remi repozitorijum za AlmaLinux i Rocky Linux, obično dobijate verzije koje odgovaraju onima iz tabele.
Šta ako koristite stariju PHP verziju?
Ranjivosti ne pogađaju samo verzije iz tabele. Ugrožene su i starije PHP verzije, uključujući PHP 8.1, 8.0, kao i PHP 7 i PHP 5. Problem je u tome što PHP 8.1 i starije verzije više ne dobijaju redovna bezbednosna ažuriranja od PHP projekta, pa za njih ne postoji nova verzija koju možete jednostavno da instalirate.
Mogućnosti zavise od verzije koju koristite i načina na koji ste je instalirali:
- PHP 7.4, 8.0 i 8.1 – PHP bezbednosni tim objavio je posebne ispravke izvornog koda za ove verzije. One su namenjene pre svega onima koji sami kompajliraju PHP i predstavljaju samo minimalnu zaštitu, a ne potpunu zamenu za ažuriranje.
- Ondřej Surý repozitorijum (sury.org) za Ubuntu i Debian – obezbeđuje zakrpljene pakete i za starije verzije, od PHP 5.6 do PHP 8.1. Ako ste stariju PHP verziju instalirali iz ovog repozitorijuma, pokrenite standardno ažuriranje paketa i ponovo pokrenite odgovarajući servis.
- Proširena podrška distribucija – ako koristite stariju verziju Ubuntu-a ili Debian-a, zakrpe za PHP koji dolazi uz sistem možda su dostupne samo kroz plaćenu proširenu podršku, kao što su Ubuntu Pro (ESM) ili Freexian ELTS za Debian.
Ako za vašu PHP verziju ne postoji zakrpa, primenite privremene mere opisane u nastavku teksta i što pre pređite na podržanu PHP verziju, poput PHP 8.4 ili 8.5. Za sajtove koji obrađuju osetljive podatke, dok ne pređete na podržanu verziju, razmislite i o privremenom isključivanju sajta.
Ako aplikacija ne radi na novijim PHP verzijama, ovo je pravi trenutak da planirate njeno ažuriranje. Nepodržane PHP verzije sadrže i brojne druge poznate ranjivosti, pa ih ne treba koristiti na javno dostupnim sajtovima.
Kako da proverite i ažurirate PHP?
Ako sami administrirate Linux server, povežite se sa njim preko SSH protokola i prvo proverite PHP verziju:
php -v
Ova komanda prikazuje PHP verziju dostupnu kroz komandnu liniju. Međutim, ona ne mora da bude ista kao verzija koju koristi vaš web sajt.
Ako koristite PHP-FPM, proverite i njegove servise:
systemctl list-units --type=service --all | grep -E 'php.*fpm'
Na serverima koji imaju više sajtova mogu da rade različite PHP verzije. Zato proverite koju verziju koristi svaki sajt.
Ubuntu i Debian
Najpre osvežite listu dostupnih paketa:
sudo apt update
Proverite dostupnu verziju PHP paketa, na primer:
apt policy php8.3-fpm
Ako repozitorijum sadrži odgovarajuću bezbednosnu zakrpu, instalirajte dostupna ažuriranja:
sudo apt upgrade
Ova komanda ažurira sve pakete na serveru. Ako na produkcionom serveru želite da ažurirate samo PHP pakete, možete da koristite, na primer:
sudo apt install --only-upgrade 'php8.3*'
AlmaLinux i Rocky Linux
Na ovim distribucijama možete da proverite i instalirate dostupna ažuriranja pomoću DNF-a:
sudo dnf check-update
sudo dnf upgrade
Pre instaliranja proverite da li repozitorijum iz kojeg ste instalirali PHP sadrži odgovarajuću bezbednosnu ispravku.
Ako koristite hosting kontrolnu tablu, postupak ažuriranja može da se razlikuje od standardnog ažuriranja sistemskih paketa.
Ponovo pokrenite odgovarajući servis
Instaliranje zakrpe nije dovoljno. Dok ne pokrenete ponovo servis koji izvršava PHP, server i dalje koristi staru, ranjivu verziju koja je učitana u memoriju.
Koji servis treba ponovo da pokrenete zavisi od načina na koji PHP radi na vašem serveru.
Ako koristite PHP-FPM, ponovo pokrenite odgovarajući PHP-FPM servis. Na primer:
sudo systemctl restart php8.3-fpm
Ako koristite Apache mod_php, PHP radi unutar samog Apache-a, pa treba ponovo da pokrenete Apache. Na Ubuntu i Debian sistemima:
sudo systemctl restart apache2
Na AlmaLinux i Rocky Linux sistemima:
sudo systemctl restart httpd
Ako koristite LiteSpeed, ponovo pokrenite LiteSpeed web server kako bi i PHP procesi bili ponovo pokrenuti.
Šta ako koristite Docker?
Ako PHP radi unutar Docker kontejnera, ažuriranje PHP-a na osnovnom serveru neće automatski ažurirati PHP u kontejneru.
Proverite instaliranu verziju:
docker exec ime_kontejnera php -v
Zatim preuzmite ažurirani Docker image koji sadrži zakrpljenu PHP verziju i ponovo napravite kontejner.
Šta ako trenutno ne možete da ažurirate PHP?
PHP bezbednosni tim objavio je nekoliko privremenih mera koje mogu da smanje rizik od iskorišćavanja ovih ranjivosti.
Najvažnije su sledeće:
- Isključivanje praćenja napretka otpremanja datoteka – podešavanje
session.upload_progress.enabled=0uklanja jedan od potvrđenih načina napada. Ova funkcionalnost se retko koristi, pa PHP tim preporučuje da je isključite čak i posle instaliranja zakrpe, ako vam nije potrebna. - Isključivanje backtrace-a kod fatalnih grešaka (samo PHP 8.5) – podešavanje
fatal_error_backtraces=0uklanja drugi potvrđeni način napada. - Uklanjanje ograničenja memorije – podešavanje
memory_limit=-1otežava napad zasnovan na nedostatku memorije. Ova mera nosi i ozbiljan rizik, jer jedan zahtev tada može da potroši svu memoriju servera. Zato je primenjujte samo ako razumete posledice i ako potrošnju memorije ograničavate na drugi način. - Ograničavanje veličine zahteva – zadržite konzervativnu vrednost
post_max_sizei ograničite veličinu zahteva i na nivou web servera.
Ova podešavanja treba da postavite u glavnoj PHP konfiguraciji, a ne na nivou pojedinačnog sajta. Nakon promene ponovo pokrenite sve PHP servise, kao što je opisano u prethodnom delu teksta.
Neke od ovih promena mogu da utiču na rad aplikacija i potrošnju serverskih resursa. Zato nemojte da ih primenjujete bez provere njihove namene i mogućih posledica.
Privremene mere ne pružaju potpunu zaštitu. Instaliranje odgovarajuće bezbednosne zakrpe ostaje jedino potpuno rešenje za ove ranjivosti.
Detaljne tehničke preporuke dostupne su u zvaničnim bezbednosnim obaveštenjima:
Zaključak
Dve otkrivene kritične PHP ranjivosti predstavljaju ozbiljan rizik za web sajtove i aplikacije koje koriste nezakrpljene PHP instalacije.
Ako sami održavate VPS ili dedicated server, proverite sve PHP verzije koje koristite, instalirajte odgovarajuće bezbednosne zakrpe i ponovo pokrenite PHP-FPM, Apache ili drugi servis koji izvršava PHP, kako bi ažuriranja stupila na snagu.
Nakon ažuriranja proverite da li sajtovi pravilno rade i da li zaista koriste zakrpljenu PHP verziju.
Na kraju, imajte na umu da je redovno ažuriranje PHP-a, web servera i operativnog sistema jedan od najvažnijih koraka u zaštiti vaših aplikacija i podataka.
