PHP2Shell: PHP-Update und Absicherung für Websites, Shops und Apps
Kurzantwort · Stand 22. Oktober 2026
PHP2Shell sind zwei kritische Lücken in PHP selbst (CVE-2026-109618 und CVE-2026-109619). Über sie können Angreifer ohne Login Code auf Ihrem Webserver ausführen. Betroffen sind WordPress-Seiten, Online-Shops, Laravel- und Symfony-Anwendungen, Nextcloud und jede andere PHP-Software. Plugin- oder CMS-Updates helfen nicht. Sicher sind Sie erst mit PHP 8.5.12, 8.4.27, 8.3.36 oder 8.2.35 oder einem gepatchten Paket Ihrer Linux-Distribution. Läuft Ihre Anwendung noch auf PHP 7.4, 8.0 oder 8.1, ist meist eine Migration mit Code-Anpassungen nötig. Dabei helfen wir Ihnen.
PHP2Shell-Soforthilfe: Wir aktualisieren und sichern Ihre Anwendung ab
- Schnell-Check: PHP-Version, Betriebsart und Hosting aller Websites, Shops und Web-Apps
- Update: PHP auf eigenen Servern, VPS und in Docker-Images aktualisieren, Abstimmung mit Ihrem Hoster
- Migration: Anwendungen von PHP 7.4, 8.0 oder 8.1 auf 8.3 oder 8.4 bringen, inklusive Code-Anpassungen, Plugin- und Bibliotheks-Updates
- Absicherung: Übergangshärtung, wenn das Update Zeit braucht, und Behebung von Fehlerquellen im Code, die Angreifer gezielt auslösen können
- Prüfung: Suche nach Spuren eines Angriffs und Abnahme nach dem Update
Rufen Sie uns an: 0351 79 59 35 13 · oder schreiben Sie uns über die Anfrage
Am 21. Oktober 2026 hat das PHP-Projekt die neuen Versionen veröffentlicht, einen Tag nach der Vorankündigung. Das BSI hat die Lage am selben Tag mit der Warnstufe Orange bewertet und rechnet mit einer schnellen Ausnutzung. Proof-of-Concept-Exploits sind öffentlich. Einige Hoster und Betreiber haben PHP-Dienste vorübergehend abgeschaltet, bis ihre Server aktualisiert waren. Für alle, die eine PHP-Anwendung betreiben, stellt sich jetzt eine praktische Frage: Wie komme ich schnell und ohne Ausfall auf eine sichere Version?
Was die Lücke so gefährlich macht
Die beiden Schwachstellen liegen im Kern von PHP. CVE-2026-109618 nutzt aus, dass PHP nach einem Speicherfehler interne Daten in einem halbfertigen Zustand zurücklassen kann. CVE-2026-109619 nutzt Reste einer Anfrage, die im selben Arbeitsprozess bei einer späteren Anfrage wiederverwendet werden. In beiden Fällen braucht der Angreifer weder Zugangsdaten noch eine Aktion eines Nutzers. Gefährdet ist jede Installation, die Webanfragen verarbeitet: PHP-FPM, Apache mit mod_php, php-cgi, FrankenPHP und LiteSpeed. Bei mod_php kann der Angriff laut PHP-Sicherheitsteam sogar greifen, bevor Ihre Anwendung überhaupt startet.
Wer Code auf dem Server ausführen kann, hat in der Regel Zugriff auf die Datenbank, auf Zugangsdaten in Konfigurationsdateien und auf alles, was Kunden über Formulare oder Uploads eingegeben haben.
Bin ich betroffen? So finden Sie Ihre PHP-Version
| Umgebung | So prüfen Sie die Version |
|---|---|
| WordPress | Werkzeuge → Website-Zustand → Bericht → Server. Dort steht die PHP-Version, mit der WordPress tatsächlich läuft. |
| Shared Hosting | Im Kundenmenü des Hosters unter PHP-Einstellungen. Wichtig ist nicht nur die Versionsnummer, sondern ob der Hoster die gepatchte Ausgabe bereitstellt. |
| Eigener Server | php -v zeigt nur die Kommandozeilen-Version. Zusätzlich den FPM-Dienst prüfen, etwa mit php-fpm8.3 -v, und mit dpkg -l | grep php bzw. rpm -qa | grep php die installierten Pakete mit dem Sicherheitshinweis Ihrer Distribution abgleichen. |
| Docker | docker exec <container> php -v im laufenden Container. Ein Update auf dem Host ändert daran nichts. |
| Laravel | php artisan about zeigt die PHP-Version der Anwendung. Auf dem Webserver zählt aber die Version des FPM- oder Webserver-Prozesses. |
| Appliances | Firewalls, NAS und Router mit Weboberfläche: beim Hersteller nach einer Firmware mit gepatchtem PHP fragen. Bis dahin die Oberfläche nicht aus dem Internet erreichbar machen. |
Ein Hinweis zu Linux-Distributionen: Debian, Ubuntu und Red Hat portieren Sicherheitskorrekturen oft in ihre eigene Paketversion zurück. Dann kann ein gepatchtes System eine niedrigere Versionsnummer anzeigen als 8.2.35. Maßgeblich ist in diesem Fall der Sicherheitshinweis der Distribution zu den beiden CVE-Nummern.
Das Update je nach Umgebung
Shared Hosting und Managed WordPress
Den PHP-Kern aktualisiert hier der Hoster. Ihre Aufgabe: Im Kundenmenü eine aktuelle, gepatchte Version auswählen und beim Hoster nachfragen, ob das Update eingespielt ist. Viele Pakete erlauben noch PHP 7.4 oder 8.1 als Auswahl. Klären Sie, ob genau diese Ausgaben einen Backport bekommen haben, und stellen Sie im Zweifel um. Läuft Ihre Seite danach nicht mehr, liegt das an veraltetem Code in Theme oder Plugins. Den passen wir an.
Eigener Server oder VPS
Pakete aus der Quelle aktualisieren, aus der Ihr PHP stammt, also aus den Distributionspaketen oder einem zusätzlichen Repository. Danach alle PHP-FPM-Dienste und den Webserver neu starten. Erst dann läuft der neue Code wirklich, vorher bedienen die alten Prozesse weiter Anfragen. Wer PHP selbst aus den Quellen baut, findet die Korrekturen im php-src-Repository, für 7.4, 8.0 und 8.1 als minimale Backport-Zweige.
Docker und Kubernetes
Images mit einem gepatchten Basis-Image neu bauen, zum Beispiel mit docker build --pull, und neu ausrollen. Prüfen Sie danach im laufenden Container, welche Version wirklich aktiv ist. Ein häufiger Fehler: Das Basis-Image ist auf eine alte Patch-Version festgeschrieben, und der Neubau ändert nichts.
Noch auf PHP 7.4, 8.0 oder 8.1? Dann wird es eine Migration
Für PHP 8.1 und älter liefert das PHP-Projekt keine regulären Updates mehr. Es gibt nur minimale Quellcode-Korrekturen und Pakete einzelner Anbieter mit Langzeit-Support. Auch PHP 8.2 bekommt nur noch bis zum 31. Dezember 2026 Sicherheitsupdates. Wer jetzt sowieso handeln muss, sollte direkt auf PHP 8.3 oder 8.4 gehen, statt im nächsten Jahr erneut umzustellen.
Dabei bricht älterer Code an bekannten Stellen. Typische Anpassungen:
| Altlast im Code | Ab Version | Anpassung |
|---|---|---|
each(), create_function() |
entfernt in 8.0 | durch foreach und anonyme Funktionen ersetzen |
String-Zugriff mit $text{0} |
entfernt in 8.0 | $text[0] verwenden |
Vergleiche wie "abc" == 0 |
geändert in 8.0 | Vergleiche prüfen, wo möglich strikt mit === |
null an interne Funktionen, z. B. strlen(null) |
veraltet seit 8.1 | Werte vorher prüfen oder Standardwerte setzen |
| Dynamische Eigenschaften an Objekten | veraltet seit 8.2 | Eigenschaften in der Klasse deklarieren |
function f(Foo $x = null) |
veraltet seit 8.4 | explizit nullbar schreiben: ?Foo $x = null |
So gehen wir bei einer Migration vor: Kopie der Anwendung in eine Testumgebung, Kompatibilitätsprüfung mit Werkzeugen wie PHPCompatibility und PHPStan, automatische Umstellungen mit Rector, wo sie sicher sind, Aktualisierung der Composer-Abhängigkeiten, Plugins und Themes, dann Tests der kritischen Abläufe wie Login, Formulare, Checkout und Schnittstellen. Erst danach wird die Live-Umgebung umgestellt, mit einem Rückweg für den Notfall.
Code-Änderungen, die das PHP-Advisory selbst empfiehlt
Das Advisory des PHP-Projekts nennt neben dem Update zwei Punkte, die direkt im Code und in der Konfiguration Ihrer Anwendung liegen:
- Fatale Fehler beheben, die Angreifer auslösen können. Dazu zählen Fehler und Zeitüberschreitungen in Callbacks, beim Verarbeiten von Uploads und Importen und in Aufräumroutinen. Konkret heißt das: Eingaben früh validieren, Dateigrößen und Verschachtelungstiefen begrenzen, Typfehler abfangen und lange Verarbeitung in Hintergrundjobs auslagern.
- Ungültige oder veraltete PHP-Einstellungen pro Verzeichnis entfernen. Ältere Projekte tragen oft
php_value– oderphp_flag-Zeilen in.htaccessoder.user.inimit sich, die eine aktuelle PHP-Version nicht mehr kennt. Solche Einträge erzeugen Meldungen, bevor PHP vollständig initialisiert ist. Das Unterdrücken der Meldungen hilft laut Advisory nicht, sie müssen weg.
Beides ist auch nach dem Update sinnvoll. Es macht Ihre Anwendung robuster gegen die nächste Lücke dieser Art.
Wenn das Update ein paar Tage braucht
Für die Übergangszeit nennt das PHP-Projekt Einstellungen, die einzelne Angriffswege erschweren, unter anderem ein niedrigeres post_max_size und session.upload_progress.enabled = 0, gesetzt in der php.ini oder im FPM-Pool und mit anschließendem Neustart aller Worker. Dazu kommen WAF-Regeln, wie sie Cloudflare bereitgestellt hat. Das Advisory sagt aber klar, dass diese Maßnahmen eine Installation nicht sicher machen. Die vollständige Übergangskonfiguration mit allen Punkten hat unser Informationssicherheits-Team im Notfallplan zu PHP2Shell zusammengestellt. Ist ein System nicht kurzfristig zu patchen, rät das BSI, eine vorübergehende Trennung vom Internet zu erwägen.
Nach dem Update: kurze Abnahme
- PHP-Version im Web-Kontext prüfen, nicht nur auf der Kommandozeile.
- Alle PHP-Worker neu gestartet? Dabei wird auch der OPcache geleert.
- Kernfunktionen testen: Startseite, Login, Kontaktformular, Warenkorb und Checkout, Schnittstellen.
- Fehlerprotokoll der ersten Stunden auf Warnungen zu veralteten Funktionen durchsehen.
- War das System nach dem 21. Oktober noch ungepatcht im Netz, auf Angriffsspuren prüfen: neue PHP-Dateien in Upload- und Cache-Ordnern, unbekannte Admin-Konten, neue Cronjobs, gehäufte Speicherfehler im Log.
Betreiben Sie Websites mit Kunden- oder Bewerberdaten, gehört auch die Datenschutzseite dazu: Bei Hinweisen auf einen Einbruch läuft die 72-Stunden-Frist nach Art. 33 DSGVO. Was dann zu tun ist, erklärt der Beitrag PHP2Shell und Datenschutz.
So arbeiten wir mit Ihnen
1
Kontakt
Sie rufen an oder schreiben uns. Wir klären, welche Anwendungen und welches Hosting im Spiel sind.
2
Schnell-Check
Wir prüfen PHP-Version, Betriebsart, Altlasten im Code und sagen Ihnen, was zuerst passieren muss.
3
Update und Anpassung
PHP-Update, Code-Anpassungen, Plugin- und Bibliotheks-Updates, bei Bedarf erst in einer Testumgebung.
4
Abnahme
Funktionstest, Prüfung auf Angriffsspuren und eine kurze Dokumentation für Ihre Unterlagen.
Wir arbeiten mit WordPress und WooCommerce, Laravel, Nextcloud und individuell entwickelten PHP-Anwendungen. Mehr zu unseren Leistungen finden Sie unter WordPress-Agentur Dresden, individuelle Webentwicklung und IT-Service. Für Fragen zur KI-Seite des Themas, etwa warum KI das Finden und Ausnutzen solcher Lücken beschleunigt, gibt es den Ratgeber auf ki-beauftragter-extern.de.
Häufige Fragen
Reicht ein WordPress-Update gegen PHP2Shell?
Nein. Die Lücken stecken in PHP, also in der Software auf dem Server, die WordPress ausführt. Erst PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 oder ein gepatchtes Paket Ihrer Distribution schließen sie.
Meine Seite läuft auf PHP 7.4. Was jetzt?
PHP 7.4 bekommt vom PHP-Projekt keine regulären Updates mehr. Es gibt nur einen minimalen Quellcode-Backport und Pakete einzelner Anbieter. Sicherer und auf Dauer günstiger ist die Migration auf PHP 8.3 oder 8.4. Dafür müssen meist Theme, Plugins oder eigener Code angepasst werden.
Wie lange dauert eine Umstellung auf PHP 8.3 oder 8.4?
Bei gepflegten WordPress-Seiten mit aktuellen Plugins ist der Wechsel meist unkompliziert. Bei älteren Individualanwendungen hängt es davon ab, wie viel veralteter Code darin steckt. Eine Kompatibilitätsprüfung zeigt das schnell. Bis zur Umstellung schützen Übergangsmaßnahmen nur teilweise.
Wurde meine Website schon angegriffen?
Das lässt sich nur durch eine Prüfung klären. Hinweise sind neue PHP-Dateien in Upload-Ordnern, unbekannte Administratorkonten, neue Cronjobs oder gehäufte Speicherfehler im Fehlerprotokoll. Verbindliche Angriffsmerkmale hat das BSI noch nicht veröffentlicht.
Was kostet die Hilfe?
Das hängt von der Zahl der Anwendungen und dem Zustand des Codes ab. Nach dem Schnell-Check erhalten Sie eine klare Einschätzung, was zu tun ist und welcher Aufwand dahintersteht, bevor wir loslegen.
Quellen: PHP-Projekt, Security Advisory zu CVE-2026-109618 und CVE-2026-109619, 21. Oktober 2026 · BSI-IT-Sicherheitshinweis „PHP: Kritische Schwachstellen bedrohen Webanwendungen weltweit“, Version 1.1 vom 21. Oktober 2026 · PHP-Projekt, unterstützte Versionen