PHP2Shell: kritikus PHP-sérülékenységek (CVE-2026-109618, CVE-2026-109619)
Hitelesítés nélküli távoli kódfuttatás minden webes PHP-telepítésen, amelyet már a javítás megjelenése előtt kihasználtak. Kit érint, mit kell tenni, és mire figyeljen a naplókban.
2026. november 3. · P1R4T3 Kutatás
Röviden
2026. október 21-én a PHP-projekt soron kívüli biztonsági frissítést adott ki két kritikus sérülékenységre (CVE-2026-109618 és CVE-2026-109619, gyűjtőnevén „PHP2Shell”). Mindkettő hitelesítés nélküli távoli kódfuttatást tesz lehetővé, CVSS v4.0 pontszámuk 9.2. A támadás a PHP kérésfeldolgozójában történik, még mielőtt az alkalmazás saját kódja lefutna: a bejelentkezés, a WAF-szabályok egy része és az alkalmazás-szintű védelem ezért nem állítja meg. A CISA október 26-án mindkét hibát felvette az aktívan kihasznált sérülékenységek (KEV) katalógusába.
Kit érint?
- Minden webes PHP-telepítést a 8.2.35, 8.3.36, 8.4.27 és 8.5.12 előtti verziókon: Apache-modul (mod_php), PHP-FPM, php-cgi, LiteSpeed, FrankenPHP. A legnagyobb a kockázat mod_php esetén.
- A PHP 8.1 és régebbi ágak is érintettek. A 7.4, 8.0 és 8.1 ágra csak minimális forráskód-szintű javítás, illetve a disztribúciók és LTS-szállítók csomagjai érhetők el; a 7.3 és régebbi verziókra nincs javítás.
- PHP-t beágyazó termékek: NAS-eszközök, tűzfalak és appliance-ek webes felületei. A gyártók saját frissítést adnak ki, gyakran a PHP-verziószám megváltoztatása nélkül, ezért a gyártói tájékoztatót kell ellenőrizni.
- A magyar kkv-k jelentős része osztott tárhelyen futtat WordPress-, webáruház- vagy egyedi PHP-oldalt. Itt a frissítés a szolgáltató feladata, de érdemes rákérdezni, és ellenőrizni, hogy a tárhelyen kiválasztott PHP-verzió a javított ágra mutat-e.
Mi a hiba lényege?
- CVE-2026-109618 – memóriasérülés memóriahiánykor. Ha a PHP a kérés felépítése közben kifogy a memóriából (
memory_limit), a belső adatszerkezet félig felépített állapotban marad, és a takarító kód ezt érvényesnek tekinti. - CVE-2026-109619 – elavult állapot a következő kérésben (use-after-free). A worker szintű állapot már felszabadított, egy korábbi kéréshez tartozó memóriára mutathat. Az egyik ismert útvonal a feltöltés-feldolgozás (
session.upload_progress, amely alapértelmezetten be van kapcsolva, éssession_start()nélkül is fut).
Mindkét hibához elég egy speciálisan összeállított, hitelesítés nélküli HTTP POST kérés. A sikeres kihasználás nem feltétlenül okoz összeomlást vagy hibás HTTP-választ, ezért a naplókban könnyen elsikkad.
Idővonal
- Október 17. – Az AWS kihasználási kísérleteket jelzett, négy nappal a nyilvános közzététel előtt (Datadog).
- Október 20. – A részletek idő előtt kiszivárogtak; a PHP-projekt soron kívüli kiadást jelentett be.
- Október 21. – Megjelentek a javított verziók; a watchTowr honeypot-hálózata ugyanezen a napon kihasználást észlelt.
- Október 23. – A PHP egy harmadik, még javítatlan hibát is jelzett (CVE-2026-115560, lehetséges távoli kódfuttatás a feltöltés-követésben); a részletek és a javítás a következő rendes kiadással érkeznek.
- Október 26. – A CISA mindkét CVE-t felvette a KEV-katalógusba, október 29-i javítási határidővel a szövetségi szervek számára.
Mit tegyen most?
- Leltár: minden PHP-futtatókörnyezet számít – szerverek, konténerképek, beágyazott PHP-t használó eszközök. Elsőként az internetről elérhető rendszerek.
- Frissítés a javított verzióra (8.2.35, 8.3.36, 8.4.27, 8.5.12) vagy a disztribúció, illetve a gyártó javított csomagjára.
- Újraindítás: konténerképek újraépítése, minden PHP-worker újraindítása. Amíg a régi worker fut, a régi kód fut.
- Átmeneti intézkedések, ha a frissítés késik (ezek csak szűkítik a kockázatot, nem szüntetik meg):
session.upload_progress.enabled = 0– a CVE-2026-109619 egyik útvonalát és a még javítatlan CVE-2026-115560-at is lezárja; a workereket újra kell indítani;- PHP 8.5-ön
fatal_error_backtraces = 0; memory_limit = -1adminisztrátori szinten, a kérés méretének korlátozásával a reverse proxyn és konténer-memóriakorláttal együtt;- a frissíthetetlen rendszerek internetes elérésének korlátozása.
- Mivel a kihasználás a javítás megjelenése előtt elkezdődött, a frissítés után is érdemes kompromittálódásra utaló jeleket keresni.
Mire figyeljen a naplókban?
- PHP memóriahiba „
Allowed memory size of … bytes exhausted” bejegyzésUnknown on line 0hellyel, vagyis a kérés inicializálása közben – különösen több ilyen rövid időn belül ugyanazon a workeren. - Apache-ban
AH00052: child pid … exit signal Segmentation fault (11); PHP-FPM workerek váratlan leállása. PHP_SESSION_UPLOAD_PROGRESSvagyPHPSESSIDnevű multipart mezők ott, ahol az alkalmazás nem használ ilyet;<?phpvagy|O:karaktersor a feltöltött fájlnévben; szokatlanul sok részből álló vagy mélyen beágyazott mezőnevű kérések.- A legerősebb jel: a webszerver vagy a PHP-worker által indított shell vagy letöltő program (
sh,bash,curl,wget).
Hogyan segítünk
Külső támadásifelület-figyelésünk (ASM) a kitett szolgáltatásokat a CISA KEV-katalógusával veti össze, és riaszt, ha aktívan kihasznált sérülékenység jelenik meg az ügyfél rendszerein. Ha nem biztos benne, hol fut PHP a szervezetében, vagy a frissítés után kompromittálódási vizsgálatra van szüksége, vegye fel velünk a kapcsolatot.
Források
- CERT-EU Security Advisory 2026-018: Critical Vulnerabilities in PHP
- Datadog Security Labs: PHP2Shell – detection, analysis, and remediation
- watchTowr: CVE-2026-109618 – Exploited Remote Code Execution in PHP
- PHP 8.4.27 release (php-src) · PHP 8.5.12 · PHP 8.2.35
- CISA Known Exploited Vulnerabilities Catalog
A cikk a 2026. november 3-i állapotot tükrözi. A konkrét verziószámokat és beállításokat a beavatkozás előtt mindig a PHP-projekt és a saját szállítója hivatalos tájékoztatóján ellenőrizze.