Lyhyesti: PHP-version tarkistamiseen php -v ei riitä. Teidän on tiedettävä, mitä PHP-versiota verkkopalvelin todella käyttää, sisältääkö paketti korjauksen, myös backportina vanhalla numerolla, ja onko kaikki prosessit käynnistetty päivityksen jälkeen uudelleen. PHP2Shell on korjattu versioissa 8.5.12, 8.4.27, 8.3.36 ja 8.2.35.
Miksi pelkkä versionumero ei riitä
PHP2Shellille on selkeä luettelo korjatuista versioista. Käytännössä kolme tilannetta johtaa silti virhearvioihin:
- Useita asennuksia: Komentorivi näyttää PHP 8.3:n, mutta verkkosivusto toimii poolissa, jossa on PHP 8.1.
- Backportit: Jakelut ja hosting-yritykset asentavat korjauksia osin olemassa oleviin paketteihin. Silloin esimerkiksi Plesk näyttää yhä 8.2.34, vaikka korjaus on tehty.
- Vanhat prosessit: Uudet tiedostot ovat levyllä, mutta käynnissä olevat workerit ovat vielä ajalta ennen niitä.
Johdolle ja ei-teknisille auttaa yksinkertainen nyrkkisääntö: älkää kysykö vain „Mikä PHP-versio meillä on?“ vaan „Onko PHP2Shell suljettu kaikilla palvelimilla, ja mistä sen näemme?“. Luotettava vastaus sisältää kolme todistetta: versio tai backport, paketin tila ja uudelleenkäynnistyksen ajankohta.
Tekninen tarkistus koostuu siksi kolmesta vaiheesta: versio, paketin tila, käynnissä olevat prosessit. Alla olevat komennot ovat pelkästään lukevia. Paketti- ja palvelunimet vaihtelevat jakelun, PHP-lähteen ja hosting-käyttöliittymän mukaan; esimerkit lähtevät PHP 8.3:sta.
PHP-version tarkistus komentorivillä
php -v # komentorivin versio
ls /etc/php/ 2>/dev/null # Debian/Ubuntu: asennetut haarat
php-fpm8.3 -v # FPM-binäärin versio (nimi vaihtelee jakelun mukaan)
php -i | grep -E "^PHP Version|Server API|Loaded Configuration File"
RHEL-, AlmaLinux- tai Rocky-järjestelmissä FPM-binääri on yleensä php-fpm; Software Collectionsissa tai ulkopuolisissa lähteissä muut versiot sijaitsevat omissa poluissaan. Plesk ja cPanel tuovat mukanaan omia PHP-asennuksiaan, jotka ovat järjestelmän PHP:n rinnalla. Miten niissä toimitaan, kuvaamme sivuilla Plesk ja cPanel.
Mitä PHP-versiota verkkosivusto käyttää verkkokontekstissa, näette luotettavimmin poolin tai VirtualHostin konfiguraatiosta tai hosting-käyttöliittymästä. Myös phpinfo-sivu näyttää sen; luokaa se vain hetkeksi, pääsysuojauksella ja satunnaisella nimellä, ja poistakaa se heti sen jälkeen.
Jaetussa hostingissa teillä ei yleensä ole pääsyä komentoriville. Silloin hosting-käyttöliittymä näyttää asetetun PHP-version verkkosivustoittain. Sitä, onko backport asennettu ja käynnistetty uudelleen, siellä harvoin kerrotaan. Tässä luotettava tie on hosting-yrityksen kirjallinen vahvistus.
Paketin tilan ja backportit tarkistus
Paketin tila osoittaa, mitä jakelunne on todella toimittanut:
# 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"
Jos jompikumpi CVE-numero on muutoslokissa, backport sisältyy asennettuun pakettiin. Jos merkintä puuttuu, se ei vielä todista haavoittuvuutta: jotkin paketinylläpitäjät muotoilevat muutoslokit toisin. Silloin vertailkaa paketin versiota jakelunne tietoturvatiedotteisiin tai kysykää palveluntarjoajalta. Mallin tähän kyselyyn löydätte sivulta Näin kysytte hosting-yritykseltä korjauksen tilaa.
Tärkeää: tarkistakaa jokainen asennettu PHP-paketti, älkää vain ensimmäistä. Palvelimilla, joilla on useita haaroja, usein yksi on korjattu ja toinen ei.
Toimiiko uusi versio myös todella?
Päivitys tehoaa vasta, kun kaikki PHP-prosessit on käynnistetty uudelleen. Vertailkaa käynnissä olevien prosessien käynnistysaikaa päivityksen ajankohtaan:
ps -o pid,lstart,cmd -C php-fpm8.3 # FPM-prosessien käynnistysaika
systemctl status php8.3-fpm # kuinka kauan palvelu on ollut käynnissä
needrestart -r l # Debian/Ubuntu, jos asennettu: näyttää vanhentuneet prosessit
Jos käynnistysaika on ennen päivitystä, vanhoja prosesseja on yhä käynnissä. Apachella mod_php:n kanssa sama pätee Apache-prosesseihin. Miten käynnistätte uudelleen siististi, kuvataan sivulla PHP-FPM ja kaikkien workerien uudelleenkäynnistys.
Kirjatkaa tulos ylös: palvelin, PHP-versio, paketin versio, CVE muutoslokissa kyllä tai ei, uudelleenkäynnistyksen ajankohta. Tämän muistiinpanon tarvitsette johdolle, vakuutusyhtiölle ja myöhempää jälkien tarkistusta varten.
Tuloksen arviointi
| Löydös | Arvio |
|---|---|
| Virallinen versio 8.5.12, 8.4.27, 8.3.36 tai 8.2.35, prosessit käynnistetty uudelleen | PHP2Shell suljettu |
| Vanhempi numero, CVE-numerot paketin muutoslokissa, prosessit käynnistetty uudelleen | backport asennettu, suljettu |
| Vanhempi numero, ei merkintää muutoslokissa, ei vahvistusta | epäselvä, selvitettävä palveluntarjoajalta |
| PHP 8.1 tai vanhempi ilman vahvistettua backportia | auki, tarvitaan väliaikaisia toimenpiteitä ja siirtymä |
| Prosessit päivitystä vanhempia | uudelleenkäynnistys puuttuu, haavoittuvuus yhä aktiivinen |
Jos palvelin jää tilaan „epäselvä“, käsitelkää sitä kuin avointa: asettakaa väliaikaiset toimenpiteet ja pitäkää selvitys käynnissä, kunnes todiste on olemassa. Täydellinen versioyleiskatsaus löytyy sivulta Mitkä PHP-versiot ovat haavoittuvia?.
Miten PHP SOS auttaa konkreettisesti?
PHP-korjauspalvelun kautta hoidamme tarkistuksen ja todisteen:
- Löydämme kaikki asennukset, myös hosting-paneelien, Software Collectionsin tai konttien toissijaiset versiot.
- Arvioimme paketin tilan: virallinen julkaisu, backport vai auki, muutoslokin tai palveluntarjoajan todisteineen.
- Tarkistamme uudelleenkäynnistyksen, kunnes mikään prosessi ei enää käytä vanhaa koodia.
- Laadimme tarkistuspöytäkirjan, jota voitte käyttää sisäisesti ja kolmansille osapuolille.
Usein kysytyt kysymykset
Miksi php -v näyttää eri version kuin verkkosivustoni?
Monella palvelimella on asennettu useita PHP-versioita. Komentorivi käyttää yhtä, verkkopalvelin tai FPM-pooli toista. Tarkistakaa siksi versio, joka todella toimii verkkokontekstissa, esimerkiksi FPM-binäärin tai hosting-käyttöliittymän kautta.
Miten tunnistan backportin?
Jakelupaketeissa korjaus on usein paketin muutoslokissa, usein CVE-numeron kanssa. Debianissa ja Ubuntussa auttaa apt changelog, RHEL-tyyppisissä järjestelmissä rpm -q --changelog. Jos merkintää ei ole, selvittäkää tila palveluntarjoajalta.
Voinko tarkistaa PHP-version hosting-asiakasvalikosta?
Kyllä, useimmat käyttöliittymät näyttävät asetetun version verkkosivustoittain. Sitä, onko backport asennettu ja käynnistetty uudelleen, ette yleensä näe siellä. Siihen luotettava tie on hosting-yrityksen kirjallinen vahvistus.