Prüfen Sie nur Systeme, die Ihnen gehören oder für die Sie verantwortlich sind. Diese Seite und unser Checker arbeiten ausschließlich mit Versionsnummern, die Sie selbst eintippen. Nichts hier testet, scannt oder sondiert einen Server. Unabhängige Seite, nicht mit der PHP Group oder php.net verbunden.
Kurz gesagt
- Finden Sie die PHP-Version, mit der Ihre Website läuft (nicht nur die im Terminal): in WordPress unter Werkzeuge > Website-Zustand > Info > Server, im Hoster-Kundenbereich oder mit einer kurzen Testdatei.
- Liegt die Nummer unter 8.2.35, 8.3.36, 8.4.27 bzw. 8.5.12 (oder nutzen Sie 8.1 oder älter), ist die Installation ohne Backport von Distribution oder Hoster betroffen.
- Bei Ubuntu, Debian, Red Hat & Co. kann eine scheinbar alte Nummer trotzdem gepatcht sein, weil Fixes zurückportiert werden. Vergleichen Sie dann die vollständige Paketversion mit der Fixversion Ihres Anbieters.
- Tragen Sie die Werte in den Checker ein. Er vergleicht sie direkt im Browser.
Worum es geht
„php2shell“ ist der Name, den Wiz Research für zwei kritische PHP-Sicherheitslücken verwendet (CVE-2026-109618, CVE-2026-109619). Laut php.net können sie Remote-Code-Ausführung ohne Anmeldung ermöglichen. Gefährdet sind alle PHP-Installationen, die Webanfragen bedienen, darunter PHP-FPM, Apache mit mod_php, php-cgi, FrankenPHP und LiteSpeed. In den Release-Meldungen schreibt php.net außerdem: „There are no complete mitigations, updating is the only safe choice.“ (sinngemäß: Es gibt keine vollständigen Gegenmaßnahmen; nur ein Update ist eine vollständige Lösung.)
Das BSI führt die Meldung im CERT-Bund-Portal als WID-SEC-2026-4055 (Titel „PHP: Mehrere Schwachstellen ermöglichen Codeausführung“, Einstufung kritisch, erstmals am 21.10.2026 geführt, am 22.10.2026 aktualisiert; der erste Titel lautete „… ermöglichen nicht spezifizierten Angriff“). Das Portal lädt seine Inhalte per JavaScript; die Versionsnummern entnehmen Sie php.net. Auch CERT-AT (Österreich) ist in der Übersicht des ENISA-CSIRTs-Network gelistet; die Seite selbst haben wir nicht geöffnet.
Fixversionen der PHP Group:
| Zweig | Behoben ab |
|---|---|
| 8.5 | 8.5.12 |
| 8.4 | 8.4.27 |
| 8.3 | 8.3.36 |
| 8.2 | 8.2.35 |
| 8.1 und älter | Kein offizielles Release. php.net hat nur minimale Quell-Backports für 7.4, 8.0 und 8.1 veröffentlicht; sonst brauchen Sie einen Anbieter-Build oder ein Upgrade |
Quelle: GitHub-Advisory der PHP Group. Die vollständige Liste mit Paketversionen finden Sie unter Fixversionen.
Schritt 1: WordPress (der schnellste Weg)
Im Backend: Werkzeuge > Website-Zustand (englisch: Tools > Site Health), Reiter Info, Bereich Server, Zeile PHP-Version. Das ist die Version, mit der Ihre Website tatsächlich läuft (WordPress-Dokumentation).
WordPress-, Theme- oder Plugin-Updates beheben das nicht: Die Lücken stecken in PHP selbst, nicht in einer einzelnen Anwendung. Wordfence schreibt nach der Veröffentlichung der PHP-Updates, dass WordPress-Autoupdates die Lücken nicht beheben (Wordfence); Patchstack empfiehlt das Update von PHP selbst (Patchstack). Details in unserer WordPress-Anleitung. Dasselbe Prinzip gilt für jede andere PHP-Anwendung, etwa Nextcloud, Shopware oder Joomla: Entscheidend ist die PHP-Version auf dem Server.
Schritt 2: Hoster-Kundenbereich
Bei Shared Hosting wählen Sie die PHP-Version meist pro Domain oder Paket im Kundenbereich (Suchbegriffe: „PHP-Version“, „PHP-Einstellungen“). Die Menünamen unterscheiden sich je Hoster und ändern sich; wir nennen sie bewusst nicht, weil wir sie nicht bei jedem Anbieter geprüft haben. Zwei Stolperfallen:
- Das Panel zeigt oft nur den Zweig („8.3“), nicht den Patchstand („8.3.36“). Für die genaue Nummer nutzen Sie Schritt 3.
- Die Einstellung im Panel wählt Ihre Version. Den Fix selbst liefert bei Shared Hosting in der Regel der Hoster auf seinen Servern. Ihre Aufgabe ist es, zu wissen, was läuft, und gegebenenfalls einen unterstützten PHP-Zweig zu wählen.
Das sagen die Hoster selbst (Stand 22.10.2026; Statusseiten ändern sich laufend, bitte den Link öffnen):
| Hoster | Aussage | Quelle |
|---|---|---|
| IONOS | Schreibt, die offiziellen PHP-Updates seien auf allen von IONOS selbst betriebenen Plattformen bereits eingespielt (Störungsmeldung am 22.10. um 10:10 UTC als behoben markiert); Kunden müssen laut IONOS nichts tun. Wer PHP selbst betreibt (VPS, Dedicated Server), muss selbst aktualisieren. Die geprüfte Seite ist die englischsprachige IONOS-Statusseite; ob sie Ihr deutsches Paket abdeckt, ist nicht bestätigt | ionos-status.com |
| Hetzner | Hat Patches für PHP 7.4 und 8.0 bis 8.5 und danach auch für die übrigen PHP-Versionen 5.6 und 7.3 auf allen Webhosting- und Managed-Servern eingespielt („We deployed patches for the remaining PHP versions 5.6 and 7.3 on all Webhosting- and Managed-Servers.“). Kunden mit Dedicated- und Cloud-Servern müssen selbst patchen | Hetzner-Status |
| netcup | Die Statusmeldung vom 21.10. („temporarily unavailable“) ist als erledigt markiert. Inzwischen sind laut netcup alle Webhosting-Pakete (einschließlich Reseller) und alle Managed Server gepatcht und wieder online („have been patched and secured and are online“); auf ihnen sei keine ungepatchte PHP-Version online. Root-Server, VPS und Managed-Cloud-Cluster müssen Sie selbst patchen | netcup-status.de |
| Infomaniak (CH) | Laut letzter Meldung (22.10., 07:42, Ortszeit laut Seite) sind die Sicherheitsfixes auf der gesamten Shared-Web-Hosting- und Cloud-Server-Infrastruktur für PHP 8.5, 8.4, 8.3, 8.2, 8.1, 8.0 und 7.4 ausgerollt; die PHP-Versionsnummern bleiben dabei unverändert. Als vorübergehende Maßnahme ist session.upload_progress.enabled deaktiviert, Datei-Uploads sind bei einigen Diensten zeitweise eingeschränkt. Versionen älter als PHP 7.4 müssen upgraden. Seite auf Französisch | infomaniakstatus.com |
| Strato, ALL-INKL.COM, Host Europe, Mittwald | Kein Eintrag. Wir haben keine Quelle geprüft; schauen Sie auf der Status- oder News-Seite des Anbieters nach | – |
Eine Übersicht finden Sie unter Hoster-Status und in der Hosting-Anleitung.
Schritt 3: Testdatei für die echte Web-Version
Am zuverlässigsten ist eine Datei, die nur Version und Schnittstelle ausgibt. Legen Sie sie per FTP/SFTP oder Dateimanager mit einem schwer erratbaren Namen im Web-Verzeichnis (Document Root) Ihrer Domain ab, zum Beispiel als v-7f3a91c2.php:
<?php header("Content-Type: text/plain"); echo PHP_VERSION, " ", php_sapi_name(), PHP_EOL;
Rufen Sie sie einmal im Browser auf und löschen Sie sie sofort wieder. Die Ausgabe sieht etwa so aus: 8.3.36 fpm-fcgi. Die zweite Angabe ist die SAPI (Server API), also die Art, wie PHP Ihre Website bedient (PHP-Handbuch).
Wenn Sie lieber phpinfo(); verwenden: Lesen Sie nur PHP Version und Server API ab und löschen Sie die Datei danach. phpinfo() zeigt Pfade, Einstellungen und Umgebungsdaten, die nicht dauerhaft öffentlich abrufbar sein sollten (Handbuch).
Schritt 4: Eigener Server (Terminal)
Per SSH:
php -v
which -a php
php -r 'echo PHP_VERSION, " ", php_sapi_name(), PHP_EOL;'
Die erste Zeile von php -v nennt die Version, (cli) die Schnittstelle (PHP-Handbuch). Das gilt nur für die Kommandozeile. Ihre Website läuft meist über PHP-FPM, Apache oder LiteSpeed, und auf einem Server können mehrere PHP-Versionen installiert sein. Prüfen Sie deshalb gezielt die Version für den Webbetrieb:
php-fpm8.3 -v # Debian/Ubuntu: Version steckt im Programmnamen
php-fpm -v # RHEL-Familie u. a.
apache2ctl -M | grep -i php # Apache mit mod_php (RHEL-Familie: httpd -M)
Paketversion unter Linux
Ubuntu und andere Distributionen behalten oft die alte Upstream-Nummer und hängen ein Suffix an, wenn ein Fix zurückportiert wird. php -v kann also 8.3.6 zeigen und trotzdem gepatcht sein (Debian hat diesmal dagegen neue Upstream-Versionen ausgeliefert). Lesen Sie die vollständige Paketversion:
# Debian / Ubuntu
dpkg -l | grep -E '^ii +php'
apt policy php8.3-cli # "Installed" lesen, nicht "Candidate"
apt changelog php8.3-cli | grep -m3 -E 'CVE-2026-10961[89]'
# RHEL, Alma, Rocky, Oracle, Amazon Linux
rpm -qa | grep -i '^php'
rpm -q --changelog php-cli | grep -m3 -E 'CVE-2026-10961[89]'
# Alpine
apk list -I | grep -i php
Eine Changelog-Zeile mit der CVE-Nummer ist ein gutes Zeichen. Fehlt sie, beweist das nicht, dass das Paket verwundbar ist: Vergleichen Sie mit der Fixversion des Anbieters.
| System | Behoben ab Paketversion | Quelle |
|---|---|---|
| Ubuntu 26.04 LTS | 8.5.4-0ubuntu1.5 | Ubuntu CVE |
| Ubuntu 24.04 LTS | 8.3.6-0ubuntu0.24.04.13 | wie oben |
| Ubuntu 22.04 LTS | 8.1.2-1ubuntu2.28 | wie oben |
| Ubuntu 20.04 LTS | 7.4.3-4ubuntu2.29+esm5, nur über Ubuntu Pro (ESM) | wie oben |
| Debian 13 (trixie) | 8.4.27-1~deb13u1 | DSA-6574-1 |
| Debian 12 (bookworm) | 8.2.35-1~deb12u1 | DLA-4848-1 |
| Debian 11 (bullseye) | Debian selbst hat keinen php7.4-Eintrag (LTS endete am 31.08.2026). Freexians kostenpflichtiges Extended LTS nennt 7.4.33-1+deb11u14, geliefert nur über dessen privates Repository für Abonnenten | ELA-1853-1 |
| Debian forky (testing) / sid (unstable) | forky liefert noch 8.4.26-1, das der Debian-Tracker als verwundbar führt. Behoben ist 8.4.27-1 in sid, es ist noch nicht in forky angekommen | Security Tracker |
| RHEL 10 | php (PHP 8.3): 8.3.36-1.el10_2; php8.4: 8.4.27-1.el10_2 | RHSA-2026:87070, RHSA-2026:87071 |
| RHEL 9 | php (PHP 8.0): 8.0.30-8.el9_8.1; php:8.2: 8.2.35-1.module+el9.8.0+25111+a1450321; php:8.3: 8.3.36-1.module+el9.8.0+25109+6886e21a. Für php:8.4 führt Red Hat „Affected“ (betroffen), noch ohne Advisory | RHSA-2026:87151, RHSA-2026:87072, RHSA-2026:87079, Red Hat CVE |
| RHEL 8 | php:7.4: 7.4.33-8.module+el8.10.0+25117+30337cca; php:8.2: 8.2.35-1.module+el8.10.0+25110+f67151d2. Für andere PHP-Streams haben wir keine Aussage gefunden | RHSA-2026:87080, RHSA-2026:87073 |
| Rocky Linux 10 | php8.4: 8.4.27-1.el10_2; php: 8.3.36-1.el10_2 | RLSA-2026:87071, RLSA-2026:87070 |
| Rocky Linux 9 | php (PHP 8.0): 8.0.30-8.el9_8.1; php:8.2: 8.2.35-1.module+el9.8.0+40395+2f706e64; php:8.3: 8.3.36-1.module+el9.8.0+40396+4e680bb7. Für php:8.4 gibt es noch keinen Advisory | RLSA-2026:87151, RLSA-2026:87072, RLSA-2026:87079 |
| Rocky Linux 8 | php:7.4: 7.4.33-8.module+el8.10.0+40393+c071e357; php:8.2: 8.2.35-1.module+el8.10.0+40394+d21b33fb. Für andere Builds haben wir keinen Advisory gefunden | RLSA-2026:87080, RLSA-2026:87073 |
| Oracle Linux 10 | php8.4: 8.4.27-1.el10_2; php: 8.3.36-1.el10_2 | ELSA-2026-87071, ELSA-2026-87070 |
| Oracle Linux 9 | php (PHP 8.0): 8.0.30-8.el9_8.1; php:8.2: 8.2.35-1.module+el9.8.0+91079+4ad1bd7f; php:8.3: 8.3.36-1.module+el9.8.0+91082+c865dc1a. Für andere Streams nicht bestätigt. Oracles CVE-Seiten führen für Oracle Linux 9 nur php (8.0), php:8.2 und php:8.3 | ELSA-2026-87151, ELSA-2026-87072, ELSA-2026-87079 |
| Oracle Linux 8 | php:7.4: 7.4.33-8.module+el8.10.0+91080+9785160d; php:8.2: 8.2.35-1.module+el8.10.0+91081+33b5c645. Für andere Streams nicht bestätigt. Oracles CVE-Seiten führen für Oracle Linux 8 nur die Streams php:7.4 und php:8.2 | ELSA-2026-87080, ELSA-2026-87073, Oracle CVE |
| AlmaLinux 10 | php (PHP 8.3): 8.3.36-1.el10_2; php8.4: 8.4.27-1.el10_2. Für andere Builds nicht bestätigt. Die AlmaLinux-Advisories decken nur php (8.3) und php8.4 ab | ALSA-2026:87070, ALSA-2026:87071 |
| AlmaLinux 9 | php:8.3: 8.3.36-1.module_el9.8.0+330+fdc30075. Für andere Builds nicht bestätigt. Die AlmaLinux-Advisories nennen nur für php:8.3 einen korrigierten php-Build | ALSA-2026:87079, AlmaLinux-Errata |
| AlmaLinux 8 | php:7.4: 7.4.33-8.module_el8.10.0+4321+cf5fd4bb. Für andere Builds nicht bestätigt. Die AlmaLinux-Advisories decken nur php:7.4 ab | ALSA-2026:87080, AlmaLinux-Errata |
| Amazon Linux 2023 | php8.2: 8.2.35-1.amzn2023.0.1; php8.3: 8.3.36-1.amzn2023.0.1; php8.4: 8.4.27-1.amzn2023.0.1; php8.5: 8.5.12-1.amzn2023.0.1. Für php8.1 steht bei Amazon „No Fix Planned“ (keine Korrektur geplant) | ALAS2023-2026-3301 bis 3304, Amazon CVE |
| Amazon Linux 2 | PHP-8.2-Extras-Stream: 8.2.35-1.amzn2.0.1. Das php-Paket im AL2-Core-Repository steht bei Amazon auf „No Fix Planned“ (keine Korrektur geplant) | ALAS2PHP8.2-2026-015 |
| Alpine 3.24 und edge | php83 8.3.36-r0, php84 8.4.27-r0, php85 8.5.12-r0. Alpine 3.24: laut Prüfung auf allen Architekturen. edge: im x86_64-Index als behoben geführt, aber nicht jede Architektur war aktualisiert (bei der Prüfung am 22.10., gegen 03:55 UTC, führten x86, ppc64le, s390x und riscv64 noch 8.3.35-r0, 8.4.26-r0 bzw. 8.5.11-r0); nach apk upgrade die installierte Version prüfen | Alpine secdb |
| Alpine 3.23, 3.22 und 3.21 | 3.23: php83 8.3.36-r0, php84 8.4.27-r0, php85 8.5.12-r0. 3.22: php82 8.2.35-r0, php83 8.3.36-r0, php84 8.4.27-r0. 3.21: php82 8.2.35-r0. Der Community-Zweig dieser Releases ist laut Alpine bereits ausgelaufen, die Updates wurden dennoch veröffentlicht. Für php83 und php84 unter 3.21 erwartet Alpine kein Sicherheitsupdate. Nach apk upgrade die installierte Version prüfen | secdb 3.23, secdb 3.22, secdb 3.21 |
Die vollständige Liste mit allen Releases und Streams finden Sie unter Fixversionen. Eine Zeile „Noch kein Eintrag“ oder „Noch kein Advisory“ heißt nur, dass wir (Stand 22.10.2026) keine Aussage des Anbieters gefunden haben, nicht dass das Paket verwundbar ist oder nicht.
Drittquellen wie die Pakete von sury.org (Ubuntu-PPA und Debian) und Remis RPM-Repository sind keine offiziellen Distributionsarchive. Zu Remi schrieb php.net am Veröffentlichungstag, das Repository werde an diesem Tag keine Updates haben („The repo will not have updates today.“). Inzwischen enthält Remis Repository für Enterprise Linux 8, 9 und 10 Builds von PHP 8.2.35 bis 8.5.12 mit Datum 21.10. (zum Beispiel 8.3.36-1.el9.remi); Remi nennt die CVEs nicht. sury.org hat Pakete mit den korrigierten Versionen veröffentlicht, die Versionsnummern tragen aber ein eigenes Suffix (zum Beispiel +deb.sury.org+1).
Docker
Ein Image-Tag zeigt, was Sie gezogen haben, nicht unbedingt, was läuft. Prüfen Sie im Container:
docker ps --format '{{.Names}} {{.Image}}'
docker exec <container> php -v
Nach docker compose pull muss der Container neu erstellt werden (docker compose up -d); ein bloßer Neustart behält das alte Image. Bei unserer Registry-Abfrage (21.10., 17:11 UTC) enthalten die offiziellen Images php:8.5 (8.5.12), php:8.4 (8.4.27), php:8.3 (8.3.36) und php:8.2 (8.2.35) die korrigierten Versionen; die Images wurden am 21.10. veröffentlicht, ältere lokale Kopien ersetzen Sie also per erneutem Pull. Kontrollieren Sie nach dem Pull mit php -v. Für 8.1 und älter gibt es kein offizielles korrigiertes Image.
Schritt 5: Ergebnis auswerten
| Was Sie sehen | Bedeutung | Nächster Schritt |
|---|---|---|
| 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 oder höher im jeweiligen Zweig | Mindestens der Upstream-Fix | Fertig, wenn auch die Web-Version das zeigt |
| Niedrigere Nummer bei Debian, Ubuntu, RHEL-Familie, Alpine | Kann trotzdem gepatcht sein | Paketversion mit der Tabelle oben vergleichen |
| Niedrigere Nummer (Zweig 8.2 bis 8.5) bei php.net-Build oder Docker-Tag | Betroffen | Auf die Fixversion aktualisieren bzw. das Image neu bauen und den Container neu erstellen |
| 8.1 oder älter | Kein offizieller Fix; die Nummer verrät keinen Backport | Anbieter fragen, ob er einen Backport liefert (und welche Paketversion), sonst upgraden. Vorher Backup oder Snapshot |
Starten Sie nach dem Update den PHP-Dienst neu (zum Beispiel sudo systemctl restart php8.3-fpm bzw. sudo systemctl restart apache2), damit laufende Prozesse den neuen Stand laden, und wiederholen Sie dann Schritt 3. Ein Wechsel des Zweigs (etwa von 8.1 auf 8.3) kann Plugins und Erweiterungen beeinträchtigen, deshalb vorher sichern.
Schritt 6: Im Checker prüfen
Öffnen Sie den Checker, wählen Sie Ihre Plattform und geben Sie die Version genau so ein, wie sie angezeigt wird: die Upstream-Nummer bei php.net-Builds und Docker, bei Distributionspaketen die komplette Paketversion (zum Beispiel 8.3.6-0ubuntu0.24.04.13). Der Checker vergleicht nur das, was Sie im Browser eintippen. Er greift nicht auf Ihren Server zu. Mehr zum Hintergrund: Was ist php2shell?.
Wenn Sie das lieber nicht selbst herausfinden möchten: Mit dem optionalen persönlichen Patch-Plan für 49 US-Dollar erhalten Sie schriftliche Schritte für Ihr genaues Setup per E-Mail innerhalb von 24 Stunden. Wir loggen uns nie auf Ihrem Server ein, die Schritte führen Sie selbst aus. Details zum Patch-Plan.