Neue Funktion

Meistern Sie Ihre E-Mail-Zustellung mit dem Mail Delivery CenterNeu: Mail Delivery Center für intelligentere E-Mail-Zustellung Mehr erfahren >

PHP2Shell (CVE-2026-109618 & CVE-2026-109619): Was dahintersteckt und wie Sie Ihren Server patchen

Zwei kritische PHP-Lücken ermöglichen es Angreifern, mit einer einzigen nicht authentifizierten Anfrage einen Server zu übernehmen. Das Hosting von WebGee ist bereits gepatcht. So sichern Sie Ihren eigenen Server ab.

Zusammenfassen mit
PHP2Shell (CVE-2026-109618 & CVE-2026-109619): Was dahintersteckt und wie Sie Ihren Server patchen

Am 21. Oktober 2026 hat das PHP-Projekt Notfall-Releases für zwei kritische Lücken veröffentlicht: CVE-2026-109618 und CVE-2026-109619, inzwischen bekannt als PHP2Shell. In Kombination erlauben sie es einem Angreifer, mit einer einzigen präparierten HTTP-Anfrage Code auf einem Server auszuführen. Dafür braucht er weder ein Login noch ein verwundbares Plugin oder eine Fehlkonfiguration. Wenn PHP auf Ihrem Server Web-Anfragen beantwortet, ist er angreifbar, bis er aktualisiert ist.

Angreifer haben die Lücke schon Tage vor dem Fix getestet, und die massenhafte Ausnutzung begann wenige Stunden nach dem Release. Sicherheitsforscher schätzen, dass 1,3 bis 1,9 Millionen aus dem Internet erreichbare Hosts betroffen waren. Diese Anleitung erklärt, worum es bei den Schwachstellen geht, welche Versionen gefixt sind, wie Sie einen eigenen Server Schritt für Schritt patchen und wie Sie prüfen, ob jemand schneller war als Sie.

Das Wichtigste

  1. PHP2Shell besteht aus zwei kritischen PHP-Fehlern (CVSS 9.2), die eine Remote-Code-Ausführung ohne Authentifizierung mit einer einzigen HTTP-Anfrage ermöglichen.
  2. Betroffen ist jede PHP-Version ab 5.4, sofern sie Web-Traffic verarbeitet: mod_php, PHP-FPM, CGI, FrankenPHP und LiteSpeed.
  3. Die gefixten Versionen sind 8.2.35, 8.3.36, 8.4.27 und 8.5.12. Starten Sie nach dem Update alle PHP-Worker neu.
  4. Alle cPanel- und Managed-WordPress-Server von WebGee sind bereits gepatcht; Kunden müssen nichts unternehmen.
  5. Die Ausnutzung begann schon vor dem Fix. Prüfen Sie daher auch nach dem Patchen Ihre Logs und Dateien auf Anzeichen einer Kompromittierung.

WebGee-Kunden: Sie sind bereits geschützt Unsere Techniker haben alle cPanel-Shared- und Reseller-Server sowie alle Server für Managed WordPress Hosting von WebGee auf die gefixten PHP-Builds aktualisiert und anschließend sämtliche PHP-Worker neu gestartet. Sie müssen nichts tun. Diese Anleitung richtet sich an Server, die Sie selbst verwalten, etwa einen VPS, einen Dedicated-Server oder einen Cloud-Server mit Root-Zugriff.

Was ist PHP2Shell?

PHP2Shell bezeichnet zwei Speichersicherheitsfehler in der zentralen Request-Verarbeitung von PHP. Beide stecken in Code, der ausgeführt wird, bevor Ihre Anwendung (WordPress, Laravel, Magento oder etwas anderes) die Anfrage überhaupt zu sehen bekommt. Deshalb schützt es Sie hier nicht, Ihr CMS und Ihre Plugins aktuell zu halten.

CVE-2026-109618: Speicherbeschädigung bei Speichermangel während des Request-Parsings

Wenn PHP einen multipart/form-data-Body verarbeitet (das Format für Formulare und Datei-Uploads) und dabei mittendrin der Speicher ausgeht, bleiben interne Strukturen nur halb initialisiert. Der Aufräumcode von PHP behandelt diesen defekten Zustand anschließend als gültig. Eine präparierte Anfrage kann diese Situation selbst auf Servern mit normalen Speicherlimits herbeiführen.

CVE-2026-109619: veralteter globaler Zustand und Use-after-free

PHP behandelt fatale Fehler mit longjmp(), das aus dem fehlerhaften Code herausspringt, ohne ihn ordentlich abzuwickeln. Nach dem oben beschriebenen Speicherfehler kann globaler, an die Anfrage gebundener Zustand auf Speicher verweisen, der bereits freigegeben wurde. Die nächste Anfrage, die derselbe PHP-Worker bearbeitet, kann diesen Speicher dann verwenden. Forscher haben sowohl das Auslesen von Speicherinhalten als auch eine vollständige Remote-Code-Ausführung bestätigt.

Zusammen machen die beiden Fehler aus einer einzigen fehlerhaften POST-Anfrage eine Shell, die unter dem Benutzer Ihres Webservers läuft (www-data, apache oder nobody). Von dort aus kann ein Angreifer Ihre wp-config.php und Ihre Datenbank-Zugangsdaten auslesen, Hintertüren einschleusen, Spam versenden oder tiefer in Ihr Netzwerk vordringen.

Diagramm der PHP2Shell-Angriffskette: Eine präparierte Multipart-Anfrage erschöpft den Speicher, hinterlässt beschädigten Zustand im PHP-Worker und endet in einer Remote-Shell
Eine einzige nicht authentifizierte Anfrage genügt. Die Lücke wird ausgelöst, bevor überhaupt Anwendungscode läuft.

Wie gefährlich ist die Lücke?

  • Schweregrad: Beide CVEs sind mit CVSS v4.0 9.2 (Kritisch) bewertet. In frühen Sicherheitshinweisen kursierte eine Bewertung von 10.0.
  • Authentifizierung: nicht erforderlich. Die Lücke ist über jede URL erreichbar, die PHP verarbeitet.
  • Ausnutzung: in freier Wildbahn bestätigt; öffentlicher Proof-of-Concept-Code ist im Umlauf.
  • Anwendungen: Code-Ausführung vor der Authentifizierung wurde bei WordPress, Drupal, Joomla und Magento demonstriert.
  • Alter: Der verwundbare Codepfad reicht bis PHP 5.4.0 zurück, sodass auch sehr alte Server betroffen sind.
Zeitleiste von PHP2Shell im Oktober 2026: erster Exploit-Versuch am 17. Oktober, Bekanntwerden der CVEs am 20. Oktober, gefixte Releases am 21. Oktober, massenhafte Ausnutzung vom 21. bis 22. Oktober, CloudLinux-Backports am 22. Oktober
Vom ersten Honeypot-Treffer bis zur massenhaften Ausnutzung in weniger als einer Woche.

Wer ist betroffen?

Jede PHP-Installation, die Web-Traffic verarbeitet, unabhängig von der verwendeten Server-API:

  • Apache mit mod_php: das höchste Risiko, weil das verwundbare Parsing direkt im Apache-Worker läuft.
  • PHP-FPM hinter nginx, Apache oder Caddy.
  • php-cgi, FrankenPHP und LiteSpeed (LSAPI).

Reines Kommandozeilen-PHP (Cronjobs, Worker, die nie HTTP-Bodys verarbeiten) ist nicht direkt erreichbar, aber in der Regel ist dasselbe Binary auch für das Web installiert. Aktualisieren Sie alles.

Gefixte PHP-Versionen

Aktualisieren Sie mindestens auf das folgende Release Ihres Zweigs:

  • PHP 8.5: 8.5.12 oder neuer
  • PHP 8.4: 8.4.27 oder neuer
  • PHP 8.3: 8.3.36 oder neuer
  • PHP 8.2: 8.2.35 oder neuer
  • PHP 7.4 bis 8.1: kein offizielles Release. Fixes gibt es nur als Backports im Quellcode und über Anbieter wie CloudLinux (alt-php) sowie einige Linux-Distributionen.
  • PHP 5.4 bis 7.3: End of Life, kein Fix verfügbar. Führen Sie ein Upgrade durch oder nehmen Sie die Website vom öffentlichen Internet.
Tabelle der gefixten PHP-Versionen: 8.5.12, 8.4.27, 8.3.36 und 8.2.35; 7.4 bis 8.1 nur über Backports; für 5.4 bis 7.3 gibt es keinen Fix
Ist Ihr Zweig nicht grün, planen Sie jetzt ein Upgrade.

Schritt 1: Prüfen Sie, welche PHP-Version auf Ihrem Server läuft

Prüfen Sie sowohl das Kommandozeilen-Binary als auch die Version, die Ihr Webserver tatsächlich verwendet. Die beiden unterscheiden sich häufig.

# Command-line PHP
php -v

# Every PHP binary installed on the server
ls /usr/bin/php* /usr/sbin/php-fpm* /opt/cpanel/ea-php*/root/usr/bin/php /opt/alt/php*/usr/bin/php 2>/dev/null

# The version your web server serves: drop a temporary file, fetch it, then delete it
echo '<?php echo PHP_VERSION;' | sudo tee /var/www/html/v.php >/dev/null
curl -s https://your-domain.com/v.php; echo
sudo rm /var/www/html/v.php

Lassen Sie keine phpinfo()-Dateien liegen Wenn Sie zur Prüfung eine phpinfo()- oder Versionsdatei verwenden, löschen Sie sie unmittelbar danach. Angreifer suchen gezielt nach solchen Dateien, um verwundbare Server zu identifizieren.

Schritt 2: PHP auf Ihrem Server patchen

Wählen Sie den Abschnitt für Ihre Plattform. Nach dem Update müssen Sie jeden PHP-Prozess neu starten. Alte Worker führen den verwundbaren Code weiter aus, bis sie ersetzt werden.

Ubuntu und Debian

sudo apt update
sudo apt install --only-upgrade 'php*-common' 'php*-cli' 'php*-fpm' 'libapache2-mod-php*'

# Restart PHP-FPM (repeat for each installed version)
sudo systemctl restart php8.3-fpm

# Using mod_php? Restart Apache instead
sudo systemctl restart apache2

# Confirm
php -v

Wenn Sie PHP aus dem PPA ondrej/php oder einem ähnlichen Drittanbieter-Repository installieren, vergewissern Sie sich, dass dieses Repository die gefixten Builds bereits veröffentlicht hat, bevor Sie davon ausgehen, gepatcht zu sein.

AlmaLinux, Rocky Linux und RHEL

sudo dnf clean all
sudo dnf upgrade 'php*'

# Restart PHP-FPM and the web server
sudo systemctl restart php-fpm
sudo systemctl restart httpd   # or nginx

php -v

cPanel- und WHM-Server (EasyApache ea-php)

cPanel liefert PHP als ea-php-Pakete aus. Aktualisieren Sie alle auf einmal:

# CloudLinux / CentOS 7
yum clean all && yum update "ea-php*"

# AlmaLinux / CloudLinux 8, 9 and 10
dnf clean all && dnf upgrade "ea-php*"

# Restart PHP-FPM for all accounts, then Apache or LiteSpeed
/scripts/restartsrv_apache_php_fpm
/scripts/restartsrv_httpd

# Check each installed version
for p in /opt/cpanel/ea-php*/root/usr/bin/php; do echo -n "$p: "; $p -r 'echo PHP_VERSION, PHP_EOL;'; done

CloudLinux alt-php (PHP Selector)

CloudLinux portiert den Fix in jeden alt-php-Zweig zurück, auch in End-of-Life-Versionen wie 5.6 und 7.4. Die Versionsnummer ändert sich dabei nicht. Prüfen Sie daher das Changelog des Pakets statt php -v:

yum clean all && yum update 'alt-php*' 'ea-php*' -y

# Confirm the fix is in the installed package (example: alt-php 7.4)
rpm -q --changelog alt-php74 | grep -m1 -i 'CVE-2026-109618'

Docker und Container

Container aktualisieren sich nicht von selbst. Laden Sie das gepatchte offizielle Image herunter, bauen Sie neu und deployen Sie erneut:

# Pin to a fixed release (or newer)
FROM php:8.3.36-fpm

# ...your existing build steps
docker pull php:8.3.36-fpm
docker compose build --pull
docker compose up -d

# Confirm inside the running container
docker compose exec app php -v

Schritt 3: Übergangsmaßnahmen, falls Sie heute nicht patchen können

Diese Einstellungen verringern die Angriffsfläche, beheben die Lücke aber nicht. Nutzen Sie sie nur, um Zeit zu gewinnen, bis das Upgrade erfolgt, zum Beispiel unter PHP 7.3 oder älter, wo es keinen Fix gibt.

php.ini härten

Der Exploit setzt voraus, dass während des Parsings das PHP-eigene Speicherlimit erreicht wird. Wenn Sie dieses Limit auf PHP-Ebene deaktivieren (und an anderer Stelle eine harte Grenze erzwingen, siehe unten), schließen Sie den wichtigsten Auslöser. Auch die Fortschrittsverfolgung für Uploads ist ein Weg in den verwundbaren Code.

; /etc/php/8.3/fpm/conf.d/99-php2shell.ini  (adjust the path to your version)
; Interim mitigation for CVE-2026-109618 / CVE-2026-109619

memory_limit = -1
session.upload_progress.enabled = 0
post_max_size = 1M

; PHP 8.5 only
fatal_error_backtraces = 0

Anwendungen wie WordPress erhöhen memory_limit zur Laufzeit selbst. Fixieren Sie die Werte im PHP-FPM-Pool, damit Code sie nicht überschreiben kann:

; /etc/php/8.3/fpm/pool.d/www.conf
php_admin_value[memory_limit] = -1
php_admin_flag[session.upload_progress.enabled] = off

Kombinieren Sie memory_limit = -1 immer mit einer harten Grenze Ohne PHP-Speicherlimit kann ein einziges außer Kontrolle geratenes Skript den gesamten Arbeitsspeicher des Servers belegen. Begrenzen Sie den Speicher stattdessen auf Prozessebene, mit MemoryMax von systemd für den PHP-FPM-Dienst oder einem Speicherlimit für den Container, sodass der Kernel einen ausufernden Worker stoppt statt PHP.

# Cap PHP-FPM memory with systemd
sudo systemctl edit php8.3-fpm
#   [Service]
#   MemoryMax=2G

# Or, for Docker:
docker update --memory 2g --memory-swap 2g <container>

Größe des Request-Bodys am Webserver begrenzen

Weisen Sie übergroße Bodys ab, bevor PHP sie überhaupt zu sehen bekommt. Das blockiert die großen präparierten Payloads aus öffentlichen Exploits, allerdings auch legitime große Uploads. Heben Sie das Limit daher nur für die Pfade an, die es benötigen.

# nginx: inside http {} or server {}
client_max_body_size 1m;

# Allow bigger uploads only where needed, e.g. the WordPress media uploader
location = /wp-admin/async-upload.php {
    client_max_body_size 64m;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
# Apache: in the vhost or .htaccess (bytes)
LimitRequestBody 1048576

Starten Sie anschließend alle PHP-Worker neu, damit keiner mehr beschädigten Zustand im Speicher hält:

sudo systemctl restart php8.3-fpm
sudo systemctl reload nginx   # or: sudo systemctl restart apache2

Wenn Ihre Website hinter Cloudflare liegt, aktivieren Sie die verwalteten WAF-Regeln für diese Schwachstelle; Cloudflare stellt den Schutz auch im kostenlosen Tarif bereit. Betrachten Sie eine WAF jedoch als zusätzliche Schutzschicht, nicht als Ersatz für das Patchen. CERT-EU empfiehlt außerdem, aus dem Internet erreichbare PHP-Anwendungen zu isolieren, die sich nicht sofort patchen lassen.

Schritt 4: Prüfen, ob Sie bereits kompromittiert wurden

Die Ausnutzung begann, bevor die meisten patchen konnten. Mit dem Update ist die Arbeit also noch nicht erledigt. Achten Sie auf die folgenden Anzeichen.

Speicherfehler in Zeile 0

Fehlgeschlagene wie erfolgreiche Versuche hinterlassen einen fatalen Speicherfehler ohne echte Datei oder Zeile, meist neben einer ungewöhnlich großen POST-Anfrage:

sudo grep -R "Allowed memory size of .* exhausted .* in Unknown on line 0" \
  /var/log/php*-fpm.log /var/log/apache2/error.log /var/log/httpd/error_log \
  /var/log/nginx/error.log 2>/dev/null | tail -n 50

Abstürze von Workern

# Apache children dying with segfaults
sudo grep -R "AH00052: child pid .* exit signal Segmentation fault" /var/log/apache2/ /var/log/httpd/ 2>/dev/null

# PHP-FPM workers killed by signals
sudo grep -R "exited on signal" /var/log/php*-fpm.log 2>/dev/null

Vom Webserver-Benutzer gestartete Shells

# A shell running under apache, www-data or php-fpm is a red flag
ps aux | grep -E "(apache|www-data|php-fpm|nobody)" | grep -E "\b(sh|bash|dash)\b" | grep -v grep

# Unexpected outbound connections from the web user
sudo ss -tunp | grep -E "php|apache|httpd|nginx"

Hintertüren und Persistenz

# PHP files changed in the last 7 days
sudo find /var/www -type f -name "*.php" -mtime -7 -printf "%TY-%Tm-%Td %TH:%TM  %p\n" | sort -r | head -n 50

# PHP files in upload folders (they should never be there)
sudo find /var/www -path "*uploads*" -name "*.php"

# Cron jobs added for the web user
sudo crontab -u www-data -l 2>/dev/null; sudo crontab -u apache -l 2>/dev/null

Suchen Sie in Ihren Access-Logs nach POST-Anfragen mit riesigen Formularfeldnamen (über 1 MB), Binär- oder Null-Bytes im Body oder einer Struktur wie =[binary]&a=1&[long field][x]=1.

Ein erfolgreicher Exploit führt nicht immer zu einem Absturz. Ein sauberes Log beweist also nicht, dass Sie sicher sind. Wenn Sie eines dieser Anzeichen finden, gehen Sie von einer Kompromittierung aus:

  • Nehmen Sie die Website offline oder schalten Sie den Wartungsmodus ein.
  • Erneuern Sie Datenbank-Passwörter, API-Schlüssel und WordPress-Salts.
  • Spielen Sie ein Backup ein, das vor dem 17. Oktober 2026 erstellt wurde.
  • Patchen Sie, bevor Sie die Website wieder online nehmen.

Checkliste für die Reaktion auf PHP2Shell

  • Alle PHP-Versionen auf dem Server ermitteln, CLI und Web
  • Auf 8.2.35, 8.3.36, 8.4.27, 8.5.12 oder einen Backport des Anbieters aktualisieren
  • PHP-FPM, Apache oder LiteSpeed neu starten, damit keine alten Worker übrig bleiben
  • Container aus gepatchten Images neu bauen und deployen
  • Vorläufige php.ini-Einstellungen und Body-Größenlimits auf allem anwenden, was sich noch nicht patchen lässt
  • Logs nach Speicherfehlern in Zeile 0 und Segfaults durchsuchen
  • Nach Shells des Webbenutzers, neuen PHP-Dateien und neuen Cronjobs suchen
  • Zugangsdaten erneuern, falls etwas verdächtig wirkt

Warum so etwas immer wieder passiert und wie Managed Hosting hilft

PHP2Shell ging in weniger als einer Woche vom ersten Honeypot-Treffer zur massenhaften Ausnutzung über, und das meiste davon geschah, bevor es überhaupt einen Fix gab. Für ein Unternehmen mit eigenem Server bedeutet die Abwehr, dass jemand rund um die Uhr Sicherheitsmeldungen verfolgt, Updates testet und sie sofort nach Erscheinen auf jede PHP-Version und jeden Worker ausrollt. Oft muss das um 2 Uhr nachts oder am Wochenende geschehen, während öffentliche Exploits bereits eingesetzt werden.

Genau das übernimmt unser Team für WebGee-Kunden. Bei PHP2Shell haben unsere Techniker:

  • die gefixten PHP-Builds auf allen cPanel-Shared- und Reseller-Servern eingespielt;
  • alle Server für Managed WordPress Hosting auf das neueste gepatchte PHP aktualisiert;
  • jeden PHP-Worker neu gestartet, damit kein verwundbarer Prozess weiterläuft;
  • all das erledigt, ohne dass Kunden etwas tun mussten.

Zusätzlich zum Patchen umfasst das Hosting von WebGee Malware-Scans auf Serverebene, eine Web Application Firewall und tägliche Backups. Sollte ein Angriff doch einmal irgendwo durchkommen, haben Sie einen sauberen Wiederherstellungspunkt.

Wenn Sie WordPress, WooCommerce oder eine andere PHP-Anwendung auf einem Server betreiben, den Sie selbst patchen müssen, überlegen Sie, uns diese Aufgabe zu überlassen. Wir ziehen Ihre Website kostenlos und ohne Ausfallzeit um.

Überlassen Sie uns das nächste PHP2ShellManaged WordPress- und cPanel-Hosting, von unseren Technikern gepatcht, bevor Sie überhaupt von der nächsten Schwachstelle hören. Inklusive kostenloser Migration.
Kostenlos zu WebGee wechseln

Sie möchten lieber Ihren eigenen Server behalten?

Wenn Sie Root-Zugriff benötigen, bietet Ihnen ein Cloud-Server von WebGee volle Kontrolle, und unsere Support-Techniker helfen Ihnen beim Patchen, Härten und Überwachen. Für Websites, die einfach schnell und sicher bleiben sollen, halten Managed WordPress Hosting und cPanel-Cloud-Hosting PHP für Sie aktuell. Sie sind unsicher, was am besten passt? Sprechen Sie mit unserem Team.

Häufige Fragen

Meine Website wird bei WebGee gehostet. Muss ich etwas tun?

Nein. Wir haben alle cPanel-Shared- und Reseller-Server sowie alle Server für Managed WordPress Hosting von WebGee auf die gefixten PHP-Builds aktualisiert und jeden PHP-Worker neu gestartet. Wenn Sie einen eigenen Cloud- oder Dedicated-Server mit Root-Zugriff betreiben, folgen Sie den Schritten in dieser Anleitung oder wenden Sie sich an unser Support-Team.

Behebt ein Update von WordPress oder meinen Plugins PHP2Shell?

Nein. Die Schwachstellen liegen in PHP selbst und werden ausgelöst, bevor WordPress oder anderer Anwendungscode ausgeführt wird. Sie müssen die PHP-Pakete auf dem Server aktualisieren und PHP neu starten.

Welche PHP-Versionen beheben CVE-2026-109618 und CVE-2026-109619?

PHP 8.2.35, 8.3.36, 8.4.27 und 8.5.12 sowie alle neueren Releases. Für PHP 7.4 bis 8.1 gibt es nur Backports im Quellcode und Hersteller-Builds wie CloudLinux alt-php. Für PHP 5.4 bis 7.3 gibt es keinen Fix.

Ich nutze eine alte PHP-Version, für die es keinen Fix gibt. Was soll ich tun?

Wechseln Sie so schnell wie möglich auf einen unterstützten PHP-Zweig. Bis dahin sollten Sie die vorläufigen php.ini-Einstellungen und Größenlimits für Anfragen aus dieser Anleitung anwenden, die Website hinter eine WAF stellen oder sie vom öffentlichen Internet trennen. CloudLinux alt-php enthält außerdem zurückportierte Fixes für viele End-of-Life-Versionen.

Reicht eine Web Application Firewall aus?

Nein. Eine WAF kann bekannte Exploit-Muster blockieren und verschafft Ihnen Zeit, aber Angreifer passen ihre Payloads an. Die einzige echte Lösung ist, PHP zu patchen.

Wie erkenne ich, ob mein Server gehackt wurde?

Achten Sie auf Fehlermeldungen wie „Allowed memory size ... in Unknown on line 0“, abstürzende Worker (Segfaults), Shells, die unter dem Benutzer des Webservers laufen, kürzlich geänderte PHP-Dateien, PHP-Dateien in Upload-Ordnern und neue Cronjobs. Ein erfolgreicher Angriff hinterlässt unter Umständen keinen Absturz. Im Zweifel sollten Sie daher Zugangsdaten erneuern und ein Backup einspielen, das vor dem 17. Oktober 2026 erstellt wurde.

  • PHP
  • CVE-2026-109618
  • CVE-2026-109619
  • PHP2Shell
  • Serversicherheit
  • cPanel
  • WordPress-Sicherheit
Über den AutorCloud & Infra Expert bei WebGeeFachlich geprüft von Rickey Shanahan, Sr. Support Engineer
WebGee als bevorzugte Quelle bei Google hinzufügen
PHP2Shell (CVE-2026-109618 & CVE-2026-109619): Was dahintersteckt und wie Sie Ihren Server patchen | WebGee