# CVE-2026-109618: RCE zbog stanja Out of Memory

> CVE-2026-109618 objašnjen: kako stanje Out of Memory u PHP-u može dovesti do izvršavanja koda, koje su verzije ispravljene i što administratori sada rade.

Izvor: https://phpsos.de/hr/php2shell/cve-2026-109618/  
Stanje: 25.10.2026  
Pružatelj: PHP SOS, PHP hitna pomoć i sigurnost poslužitelja. Hitna pomoć putem WhatsAppa: https://wa.me/491736494914?text=Pozdrav%20PHP%20SOS%2C%20trebamo%20pomo%C4%87%20s%20na%C5%A1im%20PHP%20poslu%C5%BEiteljem.%20Tvrtka%3A%20%E2%80%A6%20Web-stranica%3A%20%E2%80%A6

**Ukratko:** CVE-2026-109618 jedna je od dviju ranjivosti iza PHP2Shella. Stanje Out of Memory može prekinuti PHP dok su podaci zahtjeva tek djelomično inicijalizirani; pri čišćenju tada nevaljani podaci mogu vrijediti kao valjani. To omogućuje izvršavanje koda bez prijave. Pogreška je ispravljena u PHP-u 8.5.12, 8.4.27, 8.3.36 i 8.2.35.

## Što je CVE-2026-109618?

CVE-2026-109618 (GitHub oznaka GHSA-w8hw-w9fx-j79w) je ranjivost zbog pogreške u memoriji u jezgri PHP-a. Ocijenjena je s 9,2 prema CVSS-u v4.0. Zajedno s [CVE-2026-109619](https://phpsos.de/hr/php2shell/cve-2026-109619/) čini ono što se u medijima naziva [PHP2Shell](https://phpsos.de/hr/php2shell/was-ist-php2shell/).

Učinak je tzv. unauthenticated Remote Code Execution: napadač može izdaleka i bez korisničkog računa izvršavati kod na web-poslužitelju. Time ranjivost spada u najopasniju klasu slabih točaka koje web-poslužitelj može imati.

## Kako ranjivost načelno nastaje

Kad PHP obrađuje web-zahtjev, interno stvara strukture podataka za taj zahtjev, primjerice za poslane podatke obrasca. Ako pritom PHP dosegne svoju granicu memorije, prekida rad stanjem Out of Memory. Prema php.net-u to se može dogoditi dok su podaci zahtjeva tek djelomično inicijalizirani.

Na kraju svakog zahtjeva PHP čisti i oslobađa memoriju. Upravo je tu pogreška: čišćenje može nevaljane, tek napola stvorene podatke tretirati kao valjane. Iz tog neispravnog ponašanja pod određenim uvjetima može se izvesti izvršavanje koda.

Zašto je takva pogreška toliko ozbiljna? Pogreška u memoriji u programskom jeziku pogađa sve aplikacije koje na njemu rade, neovisno o tome koliko su pažljivo programirane. Održavana WordPress instalacija s aktualnim dodacima pogođena je jednako kao i stari vlastiti razvoj. Zato ovdje ne pomaže ažuriranje aplikacije, nego samo ažuriranje PHP-a.

Daljnje tehničke pojedinosti o iskorištavanju namjerno ne objavljujemo. Za obranu nisu potrebne: odlučujuće je koristi li Vaš poslužitelj ispravljenu verziju i rade li novi procesi doista.

## Pogođene verzije i načini rada

| PHP grana | Zadnje stanje prije ispravka | Ispravljeno od |
|---|---|---|
| 8.5 | 8.5.11 | 8.5.12 |
| 8.4 | 8.4.26 | 8.4.27 |
| 8.3 | 8.3.35 | 8.3.36 |
| 8.2 | 8.2.34 | 8.2.35 |
| 8.1 i starije | nema službenog ažuriranja | samo minimalni backportovi izvornog koda za 7.4, 8.0, 8.1 |

Pogođeni su načini rada PHP-FPM, Apache s mod_php, php-cgi, FrankenPHP i LiteSpeed. PHP tim rizik kod mod_php ocjenjuje najvišim. Distribucije i pružatelji hostinga ponekad ugrađuju backportove pa se prikazuje starija oznaka verzije iako je pogreška ispravljena. Mjerodavni su stanje paketa i potvrda pružatelja.

O razmjerima: Palo Alto Networks (Unit 42) izbrojio je više od 22,6 milijuna izloženih, potencijalno ranjivih instanci. BSI (njemački Savezni ured za sigurnost informacijske tehnologije) proglasio je razinu upozorenja 3 (narančasta) i računao je s brzim iskorištavanjem u velikom opsegu.

## Otklanjanje CVE-2026-109618: ažuriranje i ponovno pokretanje

Jedina potpuna mjera je ažuriranje. Prvo provjerite verziju i stanje paketa. Nazivi paketa razlikuju se po distribuciji; primjeri polaze od PHP-a 8.3:

```bash
php -v
apt policy php8.3-fpm          # Debian/Ubuntu
dnf info php-fpm               # RHEL, AlmaLinux, Rocky, Fedora
rpm -q --changelog php-fpm | grep -i "CVE-2026-109618"
```

Ako changelog paketa navodi CVE broj, backport je instaliran. Ako ga nema, to ne znači automatski da je paket ranjiv; tada pomaže usporedba s tablicom verzija ili upit kod pružatelja.

Nakon ažuriranja moraju se ponovno pokrenuti svi PHP procesi, primjerice naredbom `systemctl restart php8.3-fpm` ili kod mod_php ponovnim pokretanjem Apachea. Kako osigurati da više ne radi nijedan stari worker, piše na stranici [Ponovno pokretanje PHP-FPM-a i svih workera](https://phpsos.de/hr/php2shell/php-fpm-neustart/).

## Privremene mjere dok ažuriranje još nije moguće

php.net je za PHP2Shell objavio privremene mjere. Vrijede za obje ranjivosti zajedno i izričito nisu potpuna zaštita. To što se nekoliko njih odnosi na granice memorije odgovara okidaču Out of Memory kod CVE-2026-109618; službenog pridruživanja pojedinih mjera pojedinim CVE-ovima ipak nema.

```ini
; Primjer FPM poola, npr. /etc/php/8.3/fpm/pool.d/www.conf (putanja se razlikuje po distribuciji)
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M          ; 32M ako su potrebni prijenosi datoteka
php_admin_value[upload_max_filesize] = 6M    ; immer unter post_max_size
php_admin_flag[session.upload_progress.enabled] = off
```

Vrijednosti moraju biti postavljene tako da ih aplikacije ne mogu nadjačati, stoga `php_admin_value`. Uz `memory_limit=-1` usluzi treba izvanjsko ograničenje memorije, putem kontejnera ili cgroupa, a ne putem `RLIMIT_AS` ili `RLIMIT_DATA`. Na PHP-u 8.5 dodaje se `fatal_error_backtraces=0`. Sve pojedinosti su na stranici [Hitne mjere ako još ne možete zakrpati](https://phpsos.de/hr/php2shell/sofortmassnahmen-ohne-patch/).

> **Važno:**
> Ako nisu odmah moguće ni ažuriranje ni privremene mjere, BSI preporučuje privremeno isključiti pogođene web-poslužitelje s mreže.

## Kako PHP SOS konkretno pomaže?

Putem naše [usluge PHP zakrpe](https://phpsos.de/hr/leistungen/php-patch-service/) strukturirano zatvaramo CVE-2026-109618:

- **Utvrditi stvarno stanje:** PHP grana, način rada, izvor paketa i stanje backporta po poslužitelju.
- **Instalirati ažuriranje** iz odgovarajućeg izvora paketa ili, gdje to nije moguće, čisto postaviti privremene mjere u konfiguraciju poola ili poslužitelja.
- **Provjeriti ponovno pokretanje:** Kontroliramo da više ne rade stari PHP procesi.
- **Dokaz:** Dobivate dokumentaciju s verzijama i stanjima paketa prije i poslije zahvata, primjerice za upravu, osiguravatelja ili zaštitu podataka.


## Česta pitanja

**Koliko je kritičan CVE-2026-109618?**  
Ranjivost je ocijenjena s 9,2 prema CVSS-u v4.0 i stoga je kritična. Omogućuje izvršavanje zlonamjernog koda izdaleka bez prijave. BSI je za PHP2Shell proglasio razinu upozorenja 3 (narančasta).

**Je li dovoljno povećati memory_limit?**  
Ne. php.net navodi memory_limit=-1, trajno postavljen u konfiguraciji poslužitelja, kao jednu od više privremenih mjera. Ona izričito nije potpuna zaštita i traži ograničenje memorije putem kontejnera ili cgroupa. Rješenje ostaje ažuriranje.

**Koja GHSA oznaka pripada CVE-2026-109618?**  
U GitHub Security Advisoryju ranjivost se vodi pod GHSA-w8hw-w9fx-j79w. Druga PHP2Shell ranjivost, CVE-2026-109619, ima oznaku GHSA-6wmf-4rv5-p3rp.

## Izvori

- [php.net: sigurnosne objave](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
- [BSI: Savezni ured za sigurnost informacijske tehnologije](https://www.bsi.bund.de/)
