PHP2Shell ist eine Pre-Auth-RCE in PHP selbst. PHP aktualisieren, dann neu starten.
Zwei Speichersicherheits-Bugs in der PHP-Engine (CVE-2026-109618, CVE-2026-109619) erlauben einem Angreifer ohne Anmeldung, Code auszuführen oder Serverspeicher auszulesen — Passwörter, API-Schlüssel, Session-Token — auf fast jeder PHP-Version seit 5.4, unabhängig von der Anwendung darüber.
Nicht technisch? Lesen Sie PHP2Shell einfach erklärt — was es für Ihre Website oder Ihre SaaS-Tools bedeutet.
Zuletzt geprüft 2026-10-22 · unabhängig, herstellerneutral
Fügen Sie eine Version, die Ausgabe von php -v oder eine Version pro Zeile für eine ganze Serverflotte ein. Läuft vollständig in Ihrem Browser.
CLI und Webserver können unterschiedliche PHP-Builds verwenden. Prüfen Sie die Version, die Ihr Webserver tatsächlich nutzt: php-fpm -v (oder php-fpm8.3 -v) oder phpinfo() über die jeweilige Website.
| Branch | Anfällig | Behoben in |
|---|---|---|
| 8.5 | < 8.5.12 | 8.5.12 |
| 8.4 | < 8.4.27 | 8.4.27 |
| 8.3 | < 8.3.36 | 8.3.36 |
| 8.2 | < 8.2.35 | 8.2.35 |
| 8.1 · 8.0 · 7.4 | alle | Nur Quellcode-Backport |
| 5.4 – 7.3 | alle | Kein Fix |
PHP 8.2 verliert am 2026-12-31 den Security-Support
Das Update auf 8.2.35 behebt PHP2Shell, aber vor Ende 2026 müssen Sie erneut wechseln. Wenn Sie ohnehin migrieren, zielen Sie auf 8.4 oder 8.5.
Jetzt tun
In dieser Reihenfolge. Alles andere ist keine vollständige Lösung.
- 01
Jede PHP-Laufzeit finden
Webserver, Container, Base-Images, Shared-Hosting, Staging. Die CLI-Version kann sich von der unterscheiden, die PHP-FPM oder Apache nutzt.
Anleitung - 02
Ein gepatchtes Release installieren
8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 oder das gepatchte Paket Ihrer Distribution. Ein Update von WordPress/Drupal/Laravel aktualisiert PHP nicht.
Anleitung - 03
Alles neu starten, was PHP ausführt
PHP-FPM-Pools, Apache (mod_php), FrankenPHP, Queue-Worker, Octane/RoadRunner/Swoole. Alte Prozesse behalten den alten Code im Speicher.
Anleitung - 04
Prüfen, dann zurückblicken
Bestätigen Sie die Version, die der Webserver meldet. Prüfen Sie die Logs seit Anfang Oktober 2026 und tauschen Sie Geheimnisse aus, wenn etwas auffällig ist.
Anleitung
Heute kein Update möglich? Temporäre Workarounds verringern die Angriffsfläche für die bekannten Pfade. Auf Shared-Hosting? Siehe Hosting.
Anleitungen für Ihr Setup
- WordPressIst Ihre WordPress-Seite von PHP2Shell betroffen? PHP im Website-Zustand prüfen, Grenzen von Plugin-Updates und Fragen an Ihren Hoster.
- DrupalIst Ihre Drupal-Seite von PHP2Shell betroffen? PHP-Version im Statusbericht oder mit Drush prüfen und erfahren, was Sie Ihren Hoster fragen sollten.
- JoomlaIst Ihre Joomla-Seite von PHP2Shell betroffen? PHP in den Systeminformationen prüfen und erfahren, was Sie Ihren Hoster zum Patch fragen sollten.
- Hosting-AnbieterPHP2Shell bei Shared- und Managed-Hosting: PHP-Versionen in cPanel oder Plesk prüfen und wechseln, Anbieter-Updates und Fragen an Ihren Hoster.
- Cloudflare WAFCloudflare WAF gegen PHP2Shell: Regel-IDs für Free- und Bezahlpläne, aktive Sperren prüfen und warum PHP weiterhin gepatcht werden muss.
- session.upload_progressStoppt das Abschalten von session.upload_progress PHP2Shell? Erfahren Sie, was es abwehrt, wo Sie es setzen, prüfen und welche Dienste neu starten.
Wird es ausgenutzt?
Stand 2026-10-22. Die Berichte gehen auseinander; gehen Sie davon aus, dass fähige Angreifer funktionierende Exploits haben.
- Cloudflare (CTO Dane Knecht): „We are seeing early attacks emerging and are updating mitigations as new vectors show up.“
- watchTowr führt die Ausnutzung zum 21. Oktober als „in the wild“ beobachtet, über sein Honeypot-Netz.
- Das niederländische NCSC hatte zu dem Zeitpunkt keinen Missbrauch gesehen und betrachtet jedes aus dem Internet erreichbare PHP-System als anfällig, bis es gepatcht ist.
- Es war kein bestätigter erfolgreicher Einbruch veröffentlicht, und keine der beiden CVEs stand im KEV-Katalog der CISA.
- Auf GitHub kursieren mehrere „PoC“-Repositories. Tenable konnte bei keinem bestätigen, dass es funktioniert — behandeln Sie sie als nicht vertrauenswürdigen, möglicherweise bösartigen Code.
Welche Server-Setups exponiert sind
mod_php ist am klarsten ausnutzbar, aber jede SAPI, die Web-Requests bedient, braucht den Patch.
| Setup | …109618 | …109619 | Hinweise |
|---|---|---|---|
| Apache + mod_php | RCE bestätigt | RCE bestätigt | Beide CVEs mit Standardlimits bis zur RCE bestätigt. Setup mit dem höchsten Risiko. |
| PHP-FPM (nginx, Apache, Caddy…) | Anfällig | RCE bestätigt | RCE über den Session-Lebenszyklus auf FPM bestätigt. OOM-Pfad über Codepfade auf Anwendungsebene bestätigt; kein generischer FPM-Exploit veröffentlicht. |
| FrankenPHP / LiteSpeed LSAPI | Wahrscheinlich | Wahrscheinlich | Laut Advisory wahrscheinlich anfällig. Langlebige Worker machen requestübergreifenden Zustand eher relevanter als weniger. |
| CLI (Cron, Queue-Worker, artisan) | Nicht behandelt | Nicht behandelt | In den Advisories nicht behandelt und im Normalbetrieb nicht per HTTP-Request erreichbar. Trotzdem aktualisieren — es ist dasselbe Paket. |
Wann erschien der Patch in meiner Zeitzone?
PHP veröffentlichte die gepatchten Releases am Dienstag, 21. Oktober 2026, um 14:00 UTC — 16:00 Uhr in Deutschland, Österreich, der Schweiz und Luxemburg. An diesem Tag galt in den USA und Europa noch Sommerzeit, „EST“ bedeutete also eigentlich EDT (UTC−4).
| Zeitzone | Patch veröffentlicht | Datum |
|---|---|---|
| UTC | 14:00 | Di., 21. Okt. 2026 |
| USA Pazifik (PDT, UTC−7) | 07:00 | 21. Okt. |
| USA Central (CDT, UTC−5) | 09:00 | 21. Okt. |
| USA Ostküste (EDT, UTC−4) | 10:00 | 21. Okt. — Suchen nach „EST“ meinen das |
| UK (BST, UTC+1) | 15:00 | 21. Okt. |
| Mitteleuropa (MESZ, UTC+2) | 16:00 | 21. Okt. — DE, AT, CH, LU, NL, BE… |
| Indien (IST, UTC+5:30) | 19:30 | 21. Okt. |
| China / HK / SG (UTC+8) | 22:00 | 21. Okt. |
| Japan (JST, UTC+9) | 23:00 | 21. Okt. |
| Sydney (AEDT, UTC+11) | 01:00 | 22. Okt. |
Was ein Angreifer tun kann
Code ohne Anmeldung ausführen
Codeausführung als Benutzer des PHP-Workers (z. B. www-data): Webshells, Datendiebstahl, Defacement, laterale Bewegung.
Speicher anderer Requests lesen
Worker-Speicher kann DB-Passwörter, API-Schlüssel, Session-Cookies, TLS-Material und Formulardaten anderer Benutzer enthalten.
Unbemerkt Daten abziehen
Der Speicherleck-Pfad braucht keine Codeausführung, daher schlagen Tools, die auf bösartige Prozesse achten, womöglich nie an.
Häufige Fehler
Die schnellsten Wege, sich sicher zu fühlen, obwohl man es nicht ist.
| Wenn Sie denken… | Tatsächlich |
|---|---|
| „Ich habe WordPress / meine Plugins aktualisiert.“ | Der Bug steckt im PHP-Interpreter. Anwendungs-Updates berühren ihn nicht. Selbst ein simples „Hello World“-Skript auf einer anfälligen PHP-Version ist exponiert. |
| „Ich habe session.upload_progress.enabled = 0 gesetzt.“ | Das blockiert einige bestätigte Pfade einer CVE. Gegen CVE-2026-109618 hilft es nicht. Die PHP-Entwickler sagen selbst, dass Aktualisieren die einzige Abhilfe ist. |
| „Ich habe apt upgrade ausgeführt, also bin ich fertig.“ | Laufende PHP-FPM- / Apache-Prozesse behalten die alte Binary im Speicher, bis sie neu gestartet werden. |
| „php -v sagt, ich bin gepatcht.“ | Das ist die CLI. Der Webserver kann ein anderes Paket, einen anderen Container oder eine andere Version nutzen. Prüfen Sie php-fpm -v oder phpinfo(). |
| „Ich bin hinter Cloudflare / einer WAF.“ | WAF-Regeln senken das Risiko bei bekannten Payloads; Angreifer verändern sie bereits, und Origins sind oft direkt erreichbar. Das verschafft Zeit, ist aber nicht die Lösung. |
| „Meine Version sieht alt aus, also bin ich anfällig.“ | Vielleicht nicht. Debian, Ubuntu und RHEL portieren Fixes zurück, ohne die Upstream-Nummer zu ändern. Prüfen Sie das Changelog des Pakets. |
Die beiden CVEs auf einen Blick
RCE durch Out-of-Memory-Korruption (OOM)
Codeausführung ohne Authentifizierung als Benutzer des PHP-Web-Workers.
Demonstriert: Pre-Auth-RCE auf WordPress, Drupal und Joomla (mod_php, Standardlimits).
RCE durch veralteten globalen Zustand zwischen Requests
Use-after-free, das zum Auslesen von Worker-Speicher oder zur Codeausführung führt.
Demonstriert: Pre-Auth-RCE auf WordPress und Drupal; anwendungsunabhängiges Auslesen von Speicher aus der Ferne.
Warum manche Seiten 10.0 nennen: CVSS 9.2 vs. 10.0 →
Wie es ablief
- 2026-10-20 15:00 UTCCVE-IDs kursieren in Foren und sozialen Medien, mit einem falschen CVSS von 10.0.
- 2026-10-20 19:30 UTCPHP veröffentlicht seine Vorankündigung früher als geplant.
- 2026-10-20 ~20:00 UTCCalif veröffentlicht versehentlich ein Video seines Proof of Concept.
- 2026-10-20 23:00 UTCHinweise zu Workarounds gehen an einige Betreiber kritischer Infrastruktur und sind möglicherweise durchgesickert.
- 2026-10-21 03:02 UTCCloudflare-WAF-Regeln gehen für alle Pläne live, auch Free.
- 2026-10-21 07:41 UTCChainguard liefert gepatchte Images aus und bricht das Embargo um mehr als sechs Stunden.
- 2026-10-21 11:51 UTCBambooHR nimmt seinen Dienst vorsorglich vom Netz (USA, Kanada, Irland).
- 2026-10-21 (CEST)Niederländische Behörden- und Bildungsseiten, darunter DigiD und MijnOverheid, gehen vorsorglich vom Netz.
- 2026-10-21 14:00 UTCKoordiniertes Release: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 sowie Quellcode-Backports für 7.4, 8.0, 8.1. Ursprünglich für den 22. Okt. geplant.
- 2026-10-21 15:03 UTCBambooHR meldet, dass der Fix eingespielt ist und getestet wird.
Vollständige Zeitleiste ab dem Audit 2024 → · Im Vergleich zum Java-Bug von 2021: PHP2Shell vs. Log4Shell →