Röviden: A PHP-verzió ellenőrzéséhez a php -v nem elég. Tudnia kell, melyik PHP-verziót használja ténylegesen a webszerver, tartalmazza-e a csomag a javítást, akár régi számú backportként is, és hogy a frissítés után újraindították-e az összes folyamatot. A PHP2Shell a 8.5.12, 8.4.27, 8.3.36 és 8.2.35 verzióban javított.
Miért nem elég önmagában a verziószám
A PHP2Shell esetében van egy világos lista a javított verziókról. A gyakorlatban mégis három helyzet vezet téves értékeléshez:
- Több telepítés: A parancssor PHP 8.3-at mutat, a weboldal azonban egy PHP 8.1-es poolon fut.
- Backportok: A disztribúciók és a tárhelyszolgáltatók a javításokat részben a meglévő csomagokba telepítik. Ilyenkor a Plesk például továbbra is 8.2.34-et mutat, noha javítva van.
- Régi folyamatok: Az új fájlok a lemezen vannak, a futó workerek azonban még a korábbiból származnak.
A vezetésnek és a nem műszaki olvasóknak egy egyszerű ökölszabály segít: ne csak azt kérdezze, „Milyen PHP-verziónk van?“, hanem azt is, „Le van-e zárva a PHP2Shell minden szerveren, és miből látjuk ezt?“. Egy megbízható válasz három bizonyítékot tartalmaz: verzió vagy backport, csomagállapot és az újraindítás időpontja.
A műszaki ellenőrzésnek ezért három lépése van: verzió, csomagállapot, futó folyamatok. Az alábbi parancsok kizárólag olvasók. A csomag- és szolgáltatásnevek disztribúciónként, PHP-forrásonként és tárhelyfelületenként eltérnek; a példák PHP 8.3-ból indulnak ki.
PHP-verzió ellenőrzése a parancssorban
php -v # a parancssor verziója
ls /etc/php/ 2>/dev/null # Debian/Ubuntu: telepített ágak
php-fpm8.3 -v # az FPM-bináris verziója (neve disztribúciónként eltér)
php -i | grep -E "^PHP Version|Server API|Loaded Configuration File"
RHEL, AlmaLinux vagy Rocky alatt az FPM bináris neve többnyire php-fpm; Software Collectionsnél vagy külső forrásoknál további verziók saját útvonalakon vannak. A Plesk és a cPanel saját PHP-telepítéseket hoz magával, amelyek a rendszer-PHP mellett léteznek. Hogyan járjon el ott, azt a Plesk és a cPanel oldalai írják le.
Hogy egy weboldal a webes környezetben melyik PHP-verziót használja, azt a legmegbízhatóbban a pool- vagy VirtualHost-konfigurációban vagy a tárhelyfelületen látja. Egy phpinfo-oldal is megmutatja; csak rövid időre, hozzáférés-védelemmel és véletlenszerű névvel hozza létre, és utána azonnal törölje.
Megosztott tárhelynél többnyire nincs hozzáférése a parancssorhoz. Ilyenkor a tárhelyfelület mutatja a weboldalankénti beállított PHP-verziót. Hogy telepítettek-e backportot és újraindították-e, az ott ritkán áll. Itt a tárhelyszolgáltató írásos megerősítése a megbízható út.
A csomagállapot és a backportok ellenőrzése
A csomagállapot megmutatja, mit szállított ténylegesen a disztribúciója:
# Debian/Ubuntu
apt policy php8.3-fpm
apt changelog php8.3-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"
# RHEL, AlmaLinux, Rocky, Fedora
dnf info php-fpm
rpm -q --changelog php-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"
Ha a CVE-számok egyike szerepel a changelogban, a backport benne van a telepített csomagban. Ha a bejegyzés hiányzik, az még nem bizonyítja a rést: egyes csomaggondozók másképp fogalmazzák a changelogot. Ilyenkor vesse össze a csomagverziót a disztribúciója biztonsági közleményeivel, vagy kérdezzen rá a szolgáltatónál. Egy mintát ehhez a kérdéshez a Így kérdezze meg a tárhelyszolgáltatótól a javítási állapotot oldalon talál.
Fontos: minden telepített PHP-csomagot ellenőrizzen, ne csak az elsőt. Több ágat futtató szervereken gyakran az egyik javított, a másik nem.
Tényleg az új verzió fut?
A frissítés csak akkor hatásos, ha az összes PHP-folyamatot újraindították. Vesse össze a futó folyamatok indulási idejét a frissítés időpontjával:
ps -o pid,lstart,cmd -C php-fpm8.3 # az FPM-folyamatok indítási ideje
systemctl status php8.3-fpm # mióta fut a szolgáltatás
needrestart -r l # Debian/Ubuntu, ha telepítve van: megmutatja az elavult folyamatokat
Ha az indulási idő a frissítés előtt van, még régi folyamatok futnak. Apache mod_php-val ugyanez érvényes az Apache-folyamatokra. Hogyan indítson újra szabályosan, azt a PHP-FPM és az összes worker újraindítása írja le.
Rögzítse írásban az eredményt: szerver, PHP-verzió, csomagverzió, CVE a changelogban igen vagy nem, az újraindítás időpontja. Erre a feljegyzésre szüksége lesz a vezetésnek, a biztosítónak és egy későbbi nyomellenőrzéshez.
Az eredmény besorolása
| Lelet | Értékelés |
|---|---|
| Hivatalos 8.5.12, 8.4.27, 8.3.36 vagy 8.2.35 verzió, a folyamatok újraindítva | A PHP2Shell le van zárva |
| Régebbi szám, a CVE-számok a csomag changelogjában, a folyamatok újraindítva | Backport telepítve, lezárva |
| Régebbi szám, nincs changelog-bejegyzés, nincs megerősítés | tisztázatlan, a szolgáltatónál kell tisztázni |
| PHP 8.1 vagy régebbi megerősített backport nélkül | nyitott, átmeneti intézkedések és migráció szükséges |
| A folyamatok régebbiek a frissítésnél | Hiányzik az újraindítás, a rés továbbra is aktív |
Ha egy szerver „tisztázatlan“ állapotban marad, kezelje úgy, mint a nyitottat: állítsa be az átmeneti intézkedéseket, és követelje a tisztázást, amíg nincs bizonyíték. A teljes verzióáttekintés a Mely PHP-verziókat érinti? oldalon található.
Hogyan segít konkrétan a PHP SOS?
A PHP-javítási szolgáltatással átvesszük az ellenőrzést és az igazolást:
- Az összes telepítés megtalálása, a hosting-panelekből, Software Collectionsből vagy konténerekből származó másodverziókat is.
- A csomagállapot értékelése: hivatalos kiadás, backport vagy nyitott, a changelogból vagy a szolgáltatótól származó bizonyítékkal.
- Az újraindítás ellenőrzése, amíg már egyetlen folyamat sem fut régi kóddal.
- Ellenőrzési jegyzőkönyv készítése, amelyet belsőleg és harmadik felek előtt is használhat.
Gyakori kérdések
Miért mutat a php -v más verziót, mint a weboldalam?
Sok szerveren több PHP-verzió van telepítve. A parancssor az egyiket használja, a webszerver vagy egy FPM-pool egy másikat. Ezért azt a verziót ellenőrizze, amely ténylegesen a webes környezetben fut, például az FPM bináris vagy a tárhelyfelület segítségével.
Hogyan ismerek fel egy backportot?
A disztribúciós csomagoknál a javítás gyakran a csomag changelogjában áll, sokszor a CVE-számmal. Debianon és Ubuntun az apt changelog segít, RHEL-szerű rendszereken az rpm -q --changelog. Ha a bejegyzés hiányzik, tisztázza az állapotot a szolgáltatónál.
Ellenőrizhetem a PHP-verziót a tárhely ügyfélmenüjében?
Igen, a legtöbb felület megmutatja a weboldalankénti beállított verziót. Hogy telepítettek-e backportot és újraindították-e, azt ott többnyire nem látja. Ehhez a tárhelyszolgáltató írásos megerősítése a megbízható út.