Kort sagt: For at kontrollere PHP-versionen er php -v ikke nok. I skal vide, hvilken PHP-version webserveren faktisk bruger, om pakken indeholder rettelsen, også som backport med gammelt nummer, og om alle processer er blevet genstartet efter opdateringen. PHP2Shell er rettet i 8.5.12, 8.4.27, 8.3.36 og 8.2.35.
Hvorfor versionsnummeret alene ikke er nok
Til PHP2Shell findes der en klar liste over rettede versioner. I praksis fører tre situationer alligevel til fejlvurderinger:
- Flere installationer: Kommandolinjen viser PHP 8.3, men websitet kører via en pool med PHP 8.1.
- Backports: Distributioner og hostingudbydere indspiller nogle gange rettelser i eksisterende pakker. Så viser f.eks. Plesk fortsat 8.2.34, selv om der er rettet.
- Gamle processer: De nye filer ligger på disken, men de kørende workers stammer stadig fra før.
For direktion og ikke-teknikere hjælper en enkel tommelfingerregel: Spørg ikke kun »Hvilken PHP-version har vi?«, men »Er PHP2Shell lukket på alle servere, og hvordan kan vi se det?«. Et holdbart svar indeholder tre beviser: version eller backport, pakkestatus og tidspunktet for genstarten.
Den tekniske kontrol har derfor tre trin: version, pakkestatus, kørende processer. Kommandoerne nedenfor er rent læsende. Pakke- og tjenestenavne afviger fra distribution til distribution, PHP-kilde og hostinggrænseflade; eksemplerne tager udgangspunkt i PHP 8.3.
Kontrollér PHP-version på kommandolinjen
php -v # version i kommandolinjen
ls /etc/php/ 2>/dev/null # Debian/Ubuntu: installerede grene
php-fpm8.3 -v # version af FPM-binæren (navnet varierer fra distribution til distribution)
php -i | grep -E "^PHP Version|Server API|Loaded Configuration File"
Under RHEL, AlmaLinux eller Rocky hedder FPM-binæren som regel php-fpm; ved software collections eller fremmede kilder ligger yderligere versioner i egne stier. Plesk og cPanel medbringer egne PHP-installationer, som findes ved siden af system-PHP'en. Hvordan I går frem dér, beskriver vi på siderne om Plesk og cPanel.
Hvilken PHP-version et website bruger i webkonteksten, ser I mest pålideligt i pool- eller VirtualHost-konfigurationen eller i hostinggrænsefladen. En phpinfo-side viser det ligeledes; opret den kun kortvarigt, med adgangsbeskyttelse og tilfældigt navn, og slet den straks bagefter.
Ved shared hosting har I som regel ikke adgang til kommandolinjen. Så viser hostinggrænsefladen den indstillede PHP-version pr. website. Om en backport er indspillet og genstartet, står dér sjældent. Her er hostingudbyderens skriftlige bekræftelse den pålidelige vej.
Kontrollér pakkestatus og backports
Pakkestatus viser, hvad jeres distribution faktisk har leveret:
# 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"
Står et af CVE-numrene i changelog, er backporten med i den installerede pakke. Mangler indførslen, er det endnu ikke et bevis på en sårbarhed: Nogle pakkevedligeholdere formulerer changelogs anderledes. Så sammenligner I pakkeversionen med jeres distributions sikkerhedsmeddelelser eller spørger udbyderen. En skabelon til denne forespørgsel finder I under Sådan spørger I jeres hostingudbyder om rettelsesstatus.
Vigtigt: Kontrollér hver installeret PHP-pakke, ikke kun den første. På servere med flere grene er ofte én rettet og en anden ikke.
Kører den nye version også virkelig?
En opdatering virker først, når alle PHP-processer er genstartet. Sammenhold starttidspunktet for de kørende processer med tidspunktet for opdateringen:
ps -o pid,lstart,cmd -C php-fpm8.3 # starttidspunkt for FPM-processerne
systemctl status php8.3-fpm # siden hvornår tjenesten kører
needrestart -r l # Debian/Ubuntu, hvis installeret: viser forældede processer
Ligger starttidspunktet før opdateringen, kører der stadig gamle processer. Ved Apache med mod_php gælder det samme for Apache-processerne. Hvordan I genstarter rent, beskriver Genstart PHP-FPM og alle workers.
Hold resultatet fast skriftligt: server, PHP-version, pakkeversion, CVE i changelog ja eller nej, tidspunkt for genstarten. Denne notits får I brug for til direktionen, forsikringsselskabet og en senere sporkontrol.
Vurdér resultatet
| Fund | Vurdering |
|---|---|
| Officiel version 8.5.12, 8.4.27, 8.3.36 eller 8.2.35, processer genstartet | PHP2Shell lukket |
| Ældre nummer, CVE-numre i pakkens changelog, processer genstartet | Backport indspillet, lukket |
| Ældre nummer, ingen indførsel i changelog, ingen bekræftelse | uklart, afklar hos udbyderen |
| PHP 8.1 eller ældre uden bekræftet backport | åben, midlertidige foranstaltninger og migrering nødvendig |
| Processer ældre end opdateringen | genstart mangler, sårbarheden stadig aktiv |
Forbliver en server i status »uklart«, behandler I den som en åben: Sæt midlertidige foranstaltninger og følg afklaringen op, til der foreligger et bevis. Det fulde versionsoverblik står under Hvilke PHP-versioner er berørt?.
Hvordan hjælper PHP SOS konkret?
Med PHP-patch-servicen overtager vi kontrollen og dokumentationen:
- Finde alle installationer, også sekundære versioner fra hostingpaneler, software collections eller containere.
- Vurdere pakkestatus: officiel release, backport eller åben, med bevis fra changelog eller fra udbyderen.
- Kontrollere genstarten, til ingen proces med gammel kode kører længere.
- Udarbejde en kontrolprotokol, som I kan bruge internt og over for tredjepart.
Ofte stillede spørgsmål
Hvorfor viser php -v en anden version end mit website?
På mange servere er der installeret flere PHP-versioner. Kommandolinjen bruger en af dem, webserveren eller en FPM-pool en anden. Kontrollér derfor den version, der faktisk kører i webkonteksten, f.eks. via FPM-binæren eller hostinggrænsefladen.
Hvordan genkender jeg en backport?
Ved distributionspakker står rettelsen ofte i pakkens changelog, hyppigt med CVE-nummeret. Under Debian og Ubuntu hjælper apt changelog, under RHEL-lignende systemer rpm -q --changelog. Mangler indførslen, afklarer I status hos udbyderen.
Kan jeg kontrollere PHP-versionen i hostingens kundemenu?
Ja, de fleste grænseflader viser den indstillede version pr. website. Om en backport er indspillet og genstartet, kan I dér som regel ikke se. Her er en skriftlig bekræftelse fra hostingudbyderen den pålidelige vej.