Am 21. Oktober 2026 hat das PHP-Projekt Notfall-Updates für zwei Lücken veröffentlicht, die laut Projekt Code-Ausführung ohne Anmeldung erlauben. Wenn bei dir etwas auf PHP läuft, ist das die Aufgabe für heute.
Was passiert ist
Die Lücken laufen unter dem Namen PHP2Shell: CVE-2026-109618 und CVE-2026-109619, beide mit 9.2 nach CVSS 4.0 bewertet. Sie stecken in PHP selbst, nicht in einer bestimmten Anwendung.
- CVE-2026-109618: Wird der Speicher knapp, kann das PHP unterbrechen, während die Daten einer Anfrage erst teilweise vorbereitet sind. Die Aufräumroutine behandelt diese ungültigen Daten danach als gültig.
- CVE-2026-109619: Interne Zustände können bestehen bleiben, obwohl ihr Speicher bereits freigegeben ist. Eine spätere Anfrage im selben Worker kann sie dann verwenden.
Die Veröffentlichung lief nicht wie geplant. Laut Recorded Future kursierten schon Stunden vor dem Release Details, und Hosting-Partner meldeten am selben Morgen erste Angriffe. Wie viele Systeme tatsächlich kompromittiert wurden, ist noch nicht bekannt.
Bist du betroffen?
Vermutlich, wenn du Web-Anfragen mit PHP beantwortest. Die Sicherheitsmeldung nennt PHP-FPM, Apache mit mod_php, php-cgi, FrankenPHP und LiteSpeed. Am höchsten schätzt das Projekt das Risiko bei mod_php ein, weil dort ein gezeigter Angriff läuft, bevor überhaupt Anwendungscode startet. Eine Anmeldeseite vor der Anwendung hilft dann nicht.
Dazu gehört auch, was du vielleicht gar nicht als PHP wahrnimmst: WordPress, Drupal, Joomla und Magento, Verwaltungsoberflächen wie cPanel und Plesk sowie Geräte mit eingebautem PHP. Auch ein altes NAS oder ein Router mit Weboberfläche gehört auf deine Liste.
Was du jetzt tun solltest
- PHP aktualisieren. Behoben ist es in 8.5.12, 8.4.27, 8.3.36 und 8.2.35. Ein Update des CMS oder eines Plugins ändert an PHP selbst nichts.
- Paket des Anbieters prüfen. Distributionen übernehmen Fixes oft, ohne die Versionsnummer zu ändern. Lies darum das Changelog des Pakets, statt dich nur auf die Nummer zu verlassen.
- Alle Worker neu starten. Alte Prozesse laufen mit dem alten Code weiter, bis sie ersetzt sind. Container brauchen ein neu gebautes Image, nicht nur einen Neustart.
- Prüfen, was wirklich läuft. Kommandozeile und Webserver können verschiedene PHP-Versionen nutzen.
php -vzeigt nur die erste. Prüfe also auchphp-fpm -voder eine vorübergehendephpinfo()-Seite, die du danach wieder löschst. - Beim Hosting nachfragen. Auf Shared Hosting kannst du das nicht selbst erledigen. Lass es dir schriftlich bestätigen.
- PHP 8.1 und älter ablösen. Diese Versionen erhalten vom PHP-Projekt kein Release mehr. Für 7.4, 8.0 und 8.1 gibt es Backports im Quellcode, und manche Anbieter liefern gepatchte Pakete. Die dauerhafte Lösung ist aber eine unterstützte Version.
Wenn du heute nicht aktualisieren kannst
Das Projekt nennt Übergangsmassnahmen und sagt klar, dass sie einzelne Angriffswege erschweren, eine Installation aber nicht sicher machen. Dazu gehören session.upload_progress.enabled=0 in php.ini oder der Pool-Konfiguration mit Neustart aller Worker, tiefe Limits für die Grösse von Anfragen und unter PHP 8.5 fatal_error_backtraces=0. Eine WAF-Regel kann bekannte Angriffsmuster blockieren, behebt PHP aber nicht. Prüfe, dass dein Server nicht direkt an der WAF vorbei erreichbar ist. Eine unwichtige Website bis zum Update vom Netz zu nehmen, ist eine vernünftige Option.
Ein Update wirft niemanden hinaus
Ein Update schliesst die Lücke, aber nicht die Tür, die vielleicht schon jemand geöffnet hat. Schau dir den Zeitraum ab vor der Ankündigung an:
- ungewöhnliche Anfragen und unerklärliche Abstürze von PHP-Workern
- PHP-Prozesse, die Befehle starten, die sie sonst nie starten
- neue oder geänderte Dateien im Webverzeichnis und neue Admin-Konten
- unerwartete ausgehende Verbindungen vom Webserver
Die Logs der Anwendung zeigen womöglich wenig, weil der Angriff unterhalb der Anwendung stattfindet. Die Lücken können zudem Speicher anderer Anfragen preisgeben und damit Passwörter, Tokens und API-Schlüssel. Findest du Hinweise auf einen Angriff, sichere zuerst die Spuren und wechsle danach die Zugangsdaten, auf die der Server Zugriff hatte.
Nachtrag, 23. Oktober 2026: PHP hat eine weitere Lücke angekündigt, CVE-2026-115560. Sie betrifft nur Anwendungen, die session.serialize_handler zur Laufzeit auf php umstellen, und der Fix folgt mit dem nächsten regulären Release. Bis dahin empfiehlt PHP, session.upload_progress.enabled=0 beizubehalten.