PHP2Shell macht deutlich, worauf es im Betrieb ankommt: Nicht wer den Patch kennt, gewinnt, sondern wer ihn am schnellsten überall nachweisbar einspielt. Dieser Beitrag zeigt die konkrete Lösung, wie Sie den Rollout automatisieren und wo KI-Agenten dabei helfen, ohne selbst zum Risiko zu werden.
Was ist PHP2Shell? Die Lage in zwei Absätzen
PHP2Shell bezeichnet zwei Lücken im Kern von PHP. CVE-2026-109618 betrifft die Behandlung von Speicherüberläufen: Bricht PHP eine Anfrage beim Erreichen von memory_limit ab, können halb aufgebaute interne Daten beim Aufräumen als gültig behandelt werden. CVE-2026-109619 betrifft Zustand, der nach dem Ende einer Anfrage im Worker zurückbleibt und von der nächsten Anfrage genutzt wird. Beides führt laut PHP-Projekt zu Remote Code Execution ohne Authentifizierung.
Betroffen ist jede PHP-Installation, die Webanfragen verarbeitet, also PHP-FPM, Apache mit mod_php, php-cgi, FrankenPHP und LiteSpeed; am kritischsten ist mod_php. CERT-EU rät zum sofortigen Patchen und andernfalls zur Isolation internetfähiger Anwendungen. Proof-of-Concepts kursieren, Cloudflare meldete erste Angriffe.
Warum dauert Patchen in der Praxis so lange?
Das Update selbst dauert Minuten. Die Zeit geht an anderer Stelle verloren:
| Engpass | Folge | Abhilfe |
|---|---|---|
| Kein aktuelles Inventar | Vergessene Server bleiben offen | Inventar automatisch aus Hosts, Containern und Clustern erheben |
| Manuelle Updates per SSH | Langsam, uneinheitlich, nicht dokumentiert | Ansible-Playbook mit Wellen und Health-Checks |
| Container mit altem Basis-Image | Neustart ändert nichts | CI-Rebuild mit --pull, Digest-Pinning |
| Fehlender Nachweis | Unklar, ob wirklich gepatcht | Automatische Prüfung von Version und Changelog |
| Unklare Zuständigkeit | Warten auf Freigaben | Vorab definierter Notfallprozess für kritische CVEs |
PHP2Shell Lösung als automatisierter Ablauf
Schritt 1: Inventar automatisch erheben
Ansible kann Fakten zu PHP direkt von allen Hosts einsammeln. Ein Ad-hoc-Aufruf genügt für den ersten Überblick:
ansible all -b -m ansible.builtin.shell \
-a "ls /usr/sbin/php-fpm* 2>/dev/null; php -r 'echo PHP_VERSION;' 2>/dev/null" \
-oErgänzen Sie das um Container und Cluster (docker ps, kubectl get pods -A) und um Dockerfiles in Ihren Repositories, die FROM php verwenden. Für Drittprodukte, die PHP intern nutzen, pflegt das NCSC-NL eine Liste auf GitHub.
Schritt 2: Rollout per Ansible in Wellen
Das folgende Playbook aktualisiert PHP auf Debian- und RHEL-Systemen, startet alle PHP-FPM-Dienste neu und rollt in Wellen aus, damit ein Fehler nicht alle Server gleichzeitig trifft:
- name: PHP2Shell patchen
hosts: php_servers
become: true
serial: "25%"
max_fail_percentage: 0
tasks:
- name: PHP-Pakete aktualisieren (Debian/Ubuntu)
ansible.builtin.apt:
name: "php*"
state: latest
only_upgrade: true
update_cache: true
when: ansible_os_family == "Debian"
- name: PHP-Pakete aktualisieren (RHEL/AlmaLinux)
ansible.builtin.dnf:
name: "php*"
state: latest
update_only: true
when: ansible_os_family == "RedHat"
- name: PHP-FPM-Dienste ermitteln
ansible.builtin.shell: "systemctl list-units --type=service --no-legend 'php*-fpm*' | awk '{print $1}'"
register: fpm_units
changed_when: false
- name: PHP-FPM neu starten
ansible.builtin.systemd:
name: "{{ item }}"
state: restarted
loop: "{{ fpm_units.stdout_lines }}"
- name: Fix im Changelog nachweisen (Debian/Ubuntu)
ansible.builtin.shell: "zcat /usr/share/doc/php*-common/changelog.Debian.gz | grep -cE 'CVE-2026-10961(8|9)'"
register: cve_check
changed_when: false
failed_when: cve_check.stdout | int < 2
when: ansible_os_family == "Debian"Passen Sie das Playbook an: mod_php benötigt einen Neustart von Apache, LiteSpeed von lsws. Bei Upstream-Builds prüfen Sie statt des Changelogs die Versionsnummer. Testen Sie das Playbook zuerst gegen Staging.
Schritt 3: Container in der CI neu bauen
Container werden nicht gepatcht, sondern ersetzt. Lösen Sie für alle Images mit PHP-Basis einen Rebuild ohne Cache aus und prüfen Sie das Ergebnis direkt in der Pipeline:
docker build --pull --no-cache -t registry.example.de/app:php2shell-fix .
docker run --rm registry.example.de/app:php2shell-fix php -r '
$ok = ["8.5"=>"8.5.12","8.4"=>"8.4.27","8.3"=>"8.3.36","8.2"=>"8.2.35"];
$b = PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;
exit(isset($ok[$b]) && version_compare(PHP_VERSION, $ok[$b], ">=") ? 0 : 1);'Der zweite Befehl lässt die Pipeline fehlschlagen, wenn die Version unter dem Fix liegt. Danach in Kubernetes per neuem Tag oder kubectl rollout restart ausrollen und CronJobs nicht vergessen.
Schritt 4: Nachweis zentral sammeln
Schreiben Sie das Ergebnis jeder Prüfung (Host, Version, Changelog-Treffer, Zeitpunkt) in eine zentrale Tabelle oder ins Monitoring. So beantworten Sie die Frage „Sind wir sicher?“ mit Daten statt mit Vermutungen, auch gegenüber Geschäftsführung, Kunden oder Prüfern. Wie sich solche Abläufe dauerhaft aufsetzen lassen, zeigt unsere Seite zur Automatisierung.
Wo helfen KI-Agenten beim Patchen und wo nicht?
KI-Agenten können Admins entlasten, vor allem bei Fleißarbeit mit vielen Datenquellen. Bei einer kritischen Lücke ist aber ebenso wichtig, was ein Agent nicht darf.
| Aufgabe | Geeignet? | Leitplanke |
|---|---|---|
| Inventarlisten aus CMDB, Cloud, Ansible und Kubernetes abgleichen | Ja | Nur Lesezugriff |
| Advisories zusammenfassen und mit eigenen Versionen vergleichen | Ja | Quellen verlinken, Versionen gegen php.net prüfen |
| Webserver-Logs auf auffällige POST-Anfragen, OOM-Fehler und 500er auswerten | Ja | Logs bleiben im eigenen Haus, idealerweise mit lokalem Modell |
| Patch-Bericht für Geschäftsführung erstellen | Ja | Zahlen aus der zentralen Nachweistabelle |
| Playbook-Entwurf schreiben | Mit Prüfung | Review durch Admin, Test auf Staging |
| Updates selbstständig auf Produktion ausrollen | Nein | Ausführung nur nach menschlicher Freigabe |
| Server-Zugangsdaten verwalten | Nein | Agent erhält keine Root-Rechte |
Ein wichtiger Punkt: Logs und Inventardaten enthalten IP-Adressen, Hostnamen und teils personenbezogene Daten. Sie sollten nicht unkontrolliert an externe KI-Dienste gehen. Ein auf eigenem Server betriebenes Modell ist für diese Aufgaben die datenschutzfreundlichere Wahl.
Was tun mit Systemen, die nicht sofort gepatcht werden können?
Die wirksamste Übergangslösung ist Isolation: VPN, Zero-Trust-Proxy oder IP-Allowlist vor jeder ungepatchten Anwendung. Das PHP-Projekt nennt zusätzlich Härtungen, die einzelne bekannte Angriffswege blockieren, aber ausdrücklich keine Sicherheit herstellen:
session.upload_progress.enabled=0in php.ini oder FPM-Pool, nicht perini_set()oder.user.ini, danach Worker neu starten.- Unter PHP 8.5 zusätzlich
fatal_error_backtraces=0. - Niedriges
post_max_size(8M ohne, 32M mit Uploads),upload_max_filesizedarunter. - Limits für Anfragegröße, Felder, Multipart-Teile und Header am Webserver oder Proxy, auch für Anfragen ohne Content-Length.
- Optional
memory_limit=-1nicht überschreibbar plus cgroup-Limit pro Worker. Keine Begrenzung überRLIMIT_ASoderRLIMIT_DATA.
Für PHP 8.1 und älter gibt es kein offizielles Release, nur Backports einiger Distributionen und minimale Quellcode-Patches des PHP-Teams für 7.4, 8.0 und 8.1. PHP 8.2 erreicht am 31.12.2026 sein Supportende.
Was Sie für die nächste kritische Lücke mitnehmen sollten
- Inventar als Code: Jede Anwendung mit Laufzeitversion ist automatisch abfragbar.
- Reproduzierbare Images: Basis-Images per Digest gepinnt, Rebuilds per Knopfdruck.
- Notfallprozess: Wer entscheidet bei CVSS 9+ über Patch oder Abschaltung, und in welcher Zeit?
- Segmentierung: Webanwendungen getrennt von Datenbanken, Wissensspeichern und KI-Plattformen.
- KI mit Rollen: Agenten lesen und berichten, Menschen geben frei.
Fazit
Die PHP2Shell-Lösung ist eindeutig: auf die gepatchten PHP-Versionen aktualisieren, alle Dienste neu starten, Container neu bauen und den Erfolg nachweisen. Wie schnell das gelingt, entscheidet sich vorher, bei Inventar, Automatisierung und klaren Zuständigkeiten. KI-Agenten beschleunigen dabei Analyse und Berichtswesen, wenn sie mit begrenzten Rechten und auf eigener Infrastruktur laufen.
Next Strategy AI entwickelt KI-Agenten und Automatisierungen, die direkt auf Ihrem Server laufen. Wenn Sie Patch- und Betriebsprozesse mit KI unterstützen möchten, ohne Daten aus der Hand zu geben, sprechen Sie mit uns.
Quellen
- PHP-Projekt: Security Advisory und Releases vom 21.10.2026, php.net
- CERT-EU: Security Advisory 2026-018, cert.europa.eu
- NCSC-NL: Liste betroffener Drittsoftware, github.com/NCSC-NL/php2shell
- it-daily.net: „Behörde warnt vor PHP-Beben“, 21.10.2026, it-daily.net
- heise online: „php2shell: Kritische Sicherheitslücken erlauben Codeeinschleusung in PHP“, heise.de
Alle Quellen abgerufen am 22. Oktober 2026.