php2shell: CVE-2026-109618 und CVE-2026-109619 in PHP und was zu tun ist
php2shell ist der Name für zwei kritische Schwachstellen in PHP selbst, CVE-2026-109618 und CVE-2026-109619, die Angreifern das Ausführen von Code aus der Ferne erlauben und mit 9,2 nach CVSS v4.0 bewertet sind. Die Details sickerten am 20. Oktober 2026 durch, einen Tag vor Ende der Sperrfrist, und das PHP-Team zog sein Sicherheitsrelease auf den 21. Oktober 2026 um 14:00 Uhr UTC vor.
Aktualisieren Sie PHP, sobald Ihr Hoster oder Ihre Distribution den Fix ausliefert. Bis dahin schließt eine einzige PHP-Einstellung den bekannten Angriffsweg, und ReportedIP Hive 3.0.4 setzt sie für Sie, wenn der Erweiterte Schutz aktiv ist.
Was ist php2shell?
php2shell umfasst zwei Fehler im PHP-Kern, nicht in WordPress, einem Plugin oder einem Theme. CERT-EU hält sie in seinem Advisory 2026-018 für möglicherweise ohne Anmeldung ausnutzbar. Berichten zufolge sind PHP 5 bis PHP 8 betroffen. Offizielle Fixes werden nur für die unterstützten Zweige erwartet, also ab PHP 8.2.
Am 21. Oktober 2026 erklärte ein Sicherheitsforscher, er habe beide Lücken nachgebaut. Nach seiner Darstellung handelt es sich um zwei Heap-Use-after-free-Fehler im Handler für session.upload_progress, der Funktion php_session_rfc1867_callback in ext/session/session.c. Das PHP-Team hat das noch nicht bestätigt, das offizielle Advisory erscheint mit dem Release.
| Datum (UTC) | Ereignis |
|---|---|
| 20. Oktober 2026, 15:20 | Ein Beitrag mit Details unter Sperrfrist erscheint auf Hacker News und wird entfernt |
| 20. Oktober 2026, 19:33 | Das PHP-Team kündigt das Sicherheitsrelease einen Tag früher an |
| 20. Oktober 2026 | CERT-EU veröffentlicht das Advisory 2026-018 |
| 21. Oktober 2026 | Ein Forscher meldet einen funktionierenden Nachbau im Upload-Progress-Handler |
| 21. Oktober 2026, 14:00 | Geplantes PHP-Sicherheitsrelease |
Warum kann eine WordPress-Firewall php2shell nicht aufhalten?
Session Upload Progress ist eine PHP-Funktion, die meldet, wie weit ein Datei-Upload fortgeschritten ist. PHP führt sie aus, während es den Body einer Multipart-Anfrage liest, sobald ein Formularfeld namens PHP_SESSION_UPLOAD_PROGRESS zusammen mit einem Session-Cookie ankommt. Das geschieht beim Start der Anfrage, bevor PHP die erste Zeile irgendeines Skripts ausführt.
Eine Plugin-Firewall läuft später, auch die früheste Variante. Der Hive-Wächter vor WordPress wird über auto_prepend_file geladen, und PHP führt diese Datei erst aus, wenn der Body der Anfrage bereits verarbeitet ist. Steckt der Fehler im Upload-Progress-Handler, ist der Schaden angerichtet, bevor irgendein PHP-Code die Anfrage prüfen kann. Das gilt für jedes Sicherheitsplugin, nicht nur für Hive.
Ein Plugin kann aber eine PHP-Einstellung pro Verzeichnis ändern. session.upload_progress.enabled lässt sich in einer .user.ini oder einer .htaccess setzen, und PHP liest diese Dateien, bevor es den Body verarbeitet. Ist die Einstellung aus, überspringt PHP den Upload-Progress-Handler vollständig.
Was ändert Hive 3.0.4?
Hive 3.0.4 ergänzt eine Zeile im Markierungsblock, den der Erweiterte Schutz ohnehin für seinen Wächter schreibt. WordPress selbst, WooCommerce und die gängigen Formular-Plugins nutzen Upload Progress nicht, Uploads funktionieren also wie bisher.
| Server-Umgebung | Datei | Zeile, die Hive ergänzt |
|---|---|---|
| PHP-FPM, CGI oder LiteSpeed | .user.ini im WordPress-Hauptverzeichnis | session.upload_progress.enabled=Off |
| Apache mit mod_php | .htaccess im WordPress-Hauptverzeichnis | php_flag session.upload_progress.enabled off |
| nginx ohne erkanntes PHP-FPM | keine | Zeile selbst in der php.ini setzen |
Websites mit Erweitertem Schutz übernehmen die Zeile innerhalb einer Stunde, nachdem ein Administrator eine beliebige Admin-Seite geöffnet hat. Soll sie sofort greifen, schalten Sie den Erweiterten Schutz auf der Seite „Schutz“ im Tab „Firewall“ aus und wieder ein. PHP-FPM hält .user.ini-Dateien standardmäßig bis zu 5 Minuten im Cache. Wir haben das Ergebnis auf unserem Apache-Teststack geprüft: ini_get() lieferte vor dem Update on und danach off.
Auf Websites ohne Erweiterten Schutz ändert sich nichts, denn Hive schreibt diese Dateien erst, wenn Sie zugestimmt haben. Die Dokumentation zum Erweiterten Schutz erklärt, auf welchen Servern Hive sich selbst einbinden kann.
Wie schalten Sie Session Upload Progress selbst ab?
Am sichersten ist die Serverkonfiguration, weil sie alle Websites auf dem Server abdeckt. Tragen Sie diese Zeile in die php.ini jeder PHP-Version ein, die Websites ausliefert, oder in das Feld für eigene PHP-Einstellungen in Ihrem Hosting-Panel:
session.upload_progress.enabled = Off
- Laden Sie PHP-FPM danach neu, zum Beispiel mit
systemctl reload php8.3-fpm. - Prüfen Sie den Wert mit
php-fpm8.3 -i | grep upload_progress. Der Befehlphp -izeigt die Konfiguration der Kommandozeile, nicht die des Webservers. - Suchen Sie nach Pool-Dateien, die den Wert per
php_admin_valuewieder auf on setzen. - Bei Shared Hosting ohne Zugriff auf die php.ini legen Sie die Zeile in eine
.user.iniim Web-Root.
Das PHP-Handbuch beschreibt die Funktion auf seiner Seite zu Session Upload Progress. Unser Schwesterunternehmen CMS ADMINS hat sie am 21. Oktober 2026 auf allen betreuten Servern abgeschaltet, für jede installierte Version von PHP 5.6 bis 8.4, und fasst das Leck auf Deutsch zusammen: php2shell bei CMS ADMINS.
Was tun, wenn der PHP-Patch erschienen ist?
- Spielen Sie das PHP-Sicherheitsrelease zuerst auf allen Servern ein, die aus dem Internet erreichbar sind.
- Für PHP 8.1 und älter fragen Sie Ihren Hoster oder Ihre Distribution nach einem Backport, oder ziehen Sie die Website auf PHP 8.2 oder neuer um.
- Lassen Sie Upload Progress aus, bis das Advisory bestätigt, welcher Teil von PHP betroffen war.
- Achten Sie auf PHP-Worker-Prozesse, die Shells,
curl,wgetoderpythonstarten. Dieses Muster zeigt einen erfolgreichen Angriff. - Bei Verdacht auf eine Kompromittierung nehmen Sie den Server vom Netz, sichern die Logs von Webserver und PHP und durchsuchen den Web-Root nach neuen PHP-Dateien.
Die Grenzen des Plugins stehen in der Hive-Anleitung. Ein Fehler in der PHP-Laufzeit gehört dazu: Das Plugin kann die Angriffsfläche verkleinern, beseitigen kann den Fehler nur das PHP-Update.
Häufige Fragen
Funktionieren WordPress-Uploads noch, wenn Upload Progress aus ist?
Ja, das Abschalten von Session Upload Progress lässt Uploads unberührt. Die Einstellung steuert nur die Fortschrittsdaten, die PHP während eines Uploads in die Session schreibt. WordPress zeigt seinen eigenen Fortschrittsbalken im Browser und liest diese Daten nicht, deshalb funktionieren Medien-Uploads, Plugin-Installationen und Formularanhänge unverändert.
Ist meine Website sicher, wenn WordPress und alle Plugins aktuell sind?
Ein aktuelles WordPress schützt nicht vor php2shell, weil die Lücken in PHP unterhalb von WordPress liegen. Entscheidend sind die PHP-Version auf dem Server und ob Upload Progress abgeschaltet ist. Die PHP-Version finden Sie unter Werkzeuge, Website-Zustand, Info, im Abschnitt Server.
Welche Hive-Version setzt die Einstellung?
ReportedIP Hive 3.0.4, erschienen am 21. Oktober 2026, setzt die Einstellung auf Websites, auf denen der Erweiterte Schutz eingeschaltet ist. Sie gehört zum kostenlosen Plugin von wordpress.org und braucht keinen bezahlten Tarif. Websites ohne Erweiterten Schutz brauchen die php.ini-Zeile aus diesem Artikel.
Weiterlesen
Eine frühere Schwachstelle, gegen die die Hive-Firewall half: CVE-2026-19949 in All-in-One WP Migration. Die aktuelle Release-Linie begann mit Hive 3.0 auf wordpress.org.
Schützen Sie Ihre WordPress-Website mit Bedrohungsdaten aus der Community, Zwei-Faktor-Anmeldung und einer zweistufigen Firewall.