Zwei kritische PHP-Schwachstellen, bekannt als PHP2Shell (CVE-2026-109618 und CVE-2026-109619), ermöglichen es Angreifern, ohne Anmeldung Code auf einem Webserver auszuführen. PHP erhält für beide Schwachstellen eine Sicherheitsbewertung von 9,2 von 10 Punkten und wird am 21. Oktober 2026 um 14:00 Uhr UTC Behebungen veröffentlichen. Die Details wurden einen Tag früher bekannt, und es wurden bereits Angriffe gemeldet.
Wenn Ihre Website mit PHP läuft, finden Sie hier die Maßnahmen, die Sie heute noch ergreifen können – von der endgültigen Lösung bis hin zu Übergangslösungen. Den vollständigen technischen Hintergrund und einen aktuellen Zeitplan finden Sie hier: Sansec-Empfehlung.
1. Aktualisieren Sie PHP so schnell wie möglich.
Die Aktualisierung von PHP ist die einzige wirkliche Lösung. Alles andere in diesem Artikel verringert das Risiko nur bis dahin.
- Erwartete korrigierte Versionen: 8.5.12, 8.4.27, 8.3.36 und 8.2.35. Diese Nummern stammen von Sicherheitsforschern und Linux-Distributions-Trackern; PHP selbst bestätigt sie nur mit der Veröffentlichung.
- Ältere Versionen (8.1, 8.0, 7.x, 5.x) Diese Systeme haben das Ende ihres Lebenszyklus erreicht und erhalten keine offizielle Lösung mehr. Falls Sie eines dieser Systeme verwenden, planen Sie jetzt ein Upgrade und behalten Sie die unten aufgeführten Übergangslösungen bei.
- Prüfen Sie, ob Ihr Paket die Korrektur tatsächlich enthält. Die Versionsnummer allein kann irreführend sein, da Distributionen häufig Fehlerbehebungen nachträglich einspielen. Suchen Sie im Änderungsprotokoll nach der CVE-Nummer, beispielsweise mit
apt changelog php8.3-cli(Debian/Ubuntu) oderrpm -q --changelog php(RHEL/Alma/Rocky). - Nach dem Update PHP neu starten. (Zum Beispiel
systemctl restart php8.3-fpm), andernfalls läuft der alte Code weiter. - Beim Shared Hosting, Fragen Sie Ihren Hosting-Anbieter, wann die gepatchte PHP-Version ausgerollt wird.
2. Sitzungs-Upload-Fortschritt deaktivieren
Erste Analysen deuten auf die standardmäßig aktivierte Upload-Fortschrittsanzeige der PHP-Session hin, die beim Hochladen einer Datei aktiv wird. Durch Deaktivieren dieser Funktion und Aktivieren des strikten Session-Modus wird das Risiko verringert. Die Sicherheitslücke wird dadurch jedoch nicht behoben, und Sicherheitsexperten warnen, dass möglicherweise nur einer der beiden Fehler blockiert wird.
Füge dies hinzu zu php.ini, .user.ini oder die PHP-Einstellungen Ihres Hosters:
session.upload_progress.enabled = Off session.use_strict_mode = 1Wenn Sie PHP-FPM verwenden, können Sie dies auch pro Pool festlegen:
php_admin_flag[session.upload_progress.enabled] = offLaden Sie PHP anschließend neu. Nur sehr wenige Websites verwenden Upload-Fortschrittsanzeigen, die auf dieser Funktion basieren, daher führt diese Änderung selten zu Problemen.
3. Uploads auf dem Webserver (nginx) blockieren
Die bekannten Angriffswege nutzen Multipart-Anfragen, das Format, das Browser zum Hochladen von Dateien verwenden. Durch das Blockieren dieser Anfragen auf dem Webserver werden sie gestoppt, bevor sie PHP erreichen. Sansec empfiehlt dies als temporäre Maßnahme.
Fügen Sie dies in Ihren ein server { } Block, außerhalb von jedem Standort:
if ($http_content_type ~* "multipart/form-data") { rewrite ^ /__upload_blocked last; } location = /__upload_blocked { internal; default_type text/plain; return 403 "Uploads sind aufgrund eines schwerwiegenden Fehlers derzeit nicht möglich. Wir sind bald wieder für Sie da.\n"; }Besucher, die jetzt versuchen, etwas hochzuladen, erhalten eine klare Fehlermeldung anstelle einer einfachen Fehlerseite. intern Diese Linie bedeutet, dass niemand öffnen kann. /__upload_blocked direkt, und Ihre anderen Fehlerseiten bleiben unverändert.
Testen und neu laden:
nginx -t && nginx -s reload curl -i -F "x=1" https://yoursite.example/ curl -i -F "x=1" https://yoursite.example/some/subpageBeide Locke Tests sollten zurückgeben 403 mit der Meldung. Falls eine Unterseite weiterhin geladen wird, überprüfen Sie, ob die Wenn sitzt direkt in server { } und nicht innerhalb eines Standort, und dass Sie die Server Der Block, der die Website tatsächlich ausliefert. Eine normale Seitenanfrage ohne Upload sollte weiterhin funktionieren.
4. Uploads auf dem Webserver blockieren (Apache / .htaccess)
Bei Apache 2.4 fügen Sie Folgendes hinzu: .htaccess im Stammverzeichnis Ihres Dokuments. Es funktioniert überall in der Datei, auch oberhalb oder unterhalb der Regeln Ihres CMS:
ErrorDocument 403 "Das Hochladen ist aufgrund eines schwerwiegenden Fehlers derzeit nicht möglich. Wir sind bald wieder da." Alle Anfragen wurden abgelehntApache lehnt die Anfrage ab, bevor Rewrite-Regeln ausgeführt werden, sodass jede URL abgedeckt ist, nicht nur die Startseite. Eine Version basierend auf RewriteRule [F] kann leicht falsch gemacht werden: Wird es unterhalb der Regeln eines CMS platziert, blockiert es nur die Startseite, während Unterseiten weiterhin PHP erreichen.
- Verwenden Sie die
.htaccessApache liest tatsächlich für Ihre Website. Bei Magento 2 ist das oft der Server inPub/. - Ein Unterordner mit eigenem
.htaccess, Beispielsweise kann bei einer zweiten WordPress-Installation derselbe Block benötigt werden. - Ein 500-Fehler nach dem Speichern bedeutet normalerweise, dass Ihr Host diese Direktiven nicht zulässt.
.htaccess. Bitten Sie sie, dies zu erlauben oder die Regel in der Serverkonfiguration hinzuzufügen.
Testen Sie die Startseite und mindestens eine Unterseite. Beide sollten die gewünschte Antwort liefern. 403 mit der Nachricht:
curl -i -F "x=1" https://yoursite.example/ curl -i -F "x=1" https://yoursite.example/some/subpageWenn eine Unterseite weiterhin die Seite selbst zurückgibt, ist die Sperre für diese URL nicht wirksam.
Was zu erwarten ist und wann man es rückgängig machen sollte
Der Webserver blockiert alle Multipart-Anfragen, nicht nur Datei-Uploads. Rechnen Sie damit, dass diese nicht mehr funktionieren, bis Sie die Blockierung entfernen.
- Datei- und Bild-Uploads, auch in Ihrem Administrationsbereich oder CMS.
- Einige Standardformulare, wie z. B. Kontaktformulare oder Produktänderungsformulare, die als mehrteilige Pakete übermittelt werden.
- Hintergrund-Uploads in JavaScript, die möglicherweise eine allgemeine Fehlermeldung anstelle Ihrer Nachricht anzeigen.
Die PHP-Einstellungen aus Schritt 2 verursachen selten Probleme und können beibehalten werden. Entfernen Sie die Webserver-Sperre, sobald PHP aktualisiert wurde und Sie die Korrektur im Changelog Ihres Pakets bestätigt haben. Laden Sie anschließend nginx oder Apache neu und testen Sie einen Upload.
Weiterführende Literatur
- Kritische PHP-RCE-Schwachstelle: CVE-2026-109618 und CVE-2026-109619 (Sansec): Empfehlungen, Gegenmaßnahmen und aktueller Zeitplan
- Bevorstehende kritische PHP-Sicherheitsfreigabe (PHP-Ankündigung)
- Schwerwiegender Sicherheitsalarm: PHP anfällig für kritische Remote Code Execution (Patchstack)
- PHP2Shell: Was schützt Sie tatsächlich vor dem Patch? (The Hacker News)
Letzte Aktualisierung: 21. Oktober 2026
