Aktuelle Lage: PHP2Shell. Zwei kritische PHP-Lücken (CVSS 9.2) erlauben Schadcode ohne Anmeldung. Patches seit 21.10.2026.Was jetzt zu tun ist →

Apache mit mod_php absichern

Das PHP-Team stuft das Risiko bei mod_php am höchsten ein. So erkennen Sie die Betriebsart, patchen richtig, starten Apache neu und planen den Wechsel zu PHP-FPM.

Stand 5 Min. LesezeitServer & Hosting

Kurz gesagt: Bei Apache mit mod_php läuft PHP direkt im Webserver. Das PHP-Team stuft das Risiko durch PHP2Shell genau in dieser Betriebsart am höchsten ein, weil ein Exploit gezeigt wurde, bevor überhaupt Anwendungscode läuft. Patchen Sie sofort, starten Sie Apache vollständig neu und planen Sie danach den Umstieg auf PHP-FPM.

Was mod_php ist und warum es jetzt zählt

Bei mod_php lädt Apache PHP als Modul in jeden eigenen Arbeitsprozess. Jede Anfrage an eine PHP-Datei wird direkt in diesem Prozess ausgeführt. Das war lange der Standard und ist einfach einzurichten. Es bedeutet aber auch: Alle Websites auf dem Server laufen mit demselben Benutzer, und PHP teilt sich den Prozess mit dem Webserver.

PHP2Shell umfasst die Lücken CVE-2026-109618 und CVE-2026-109619, beide mit CVSS v4.0 9.2. Bei der zweiten kann interner Zustand einer Anfrage nach dem Freigeben des Speichers bestehen bleiben und von einer späteren Anfrage im selben Prozess genutzt werden. Für mod_php hat das PHP-Team das höchste Risiko festgestellt. Hintergrund und Einordnung stehen unter Warum mod_php das höchste Risiko trägt.

Apache mod_php erkennen und Version prüfen

Prüfen Sie zuerst, ob Ihr Apache überhaupt mod_php nutzt. Die folgenden Befehle lesen nur. Befehls- und Paketnamen unterscheiden sich je Distribution und sind Beispiele.

# Debian/Ubuntu: geladene Module
apache2ctl -M 2>/dev/null | grep -i php

# RHEL-Familie
httpd -M 2>/dev/null | grep -i php

# Welches MPM ist aktiv? mod_php setzt prefork voraus
apache2ctl -V 2>/dev/null | grep -i mpm

# Paketstand des Moduls (Beispiele)
dpkg -l | grep libapache2-mod-php
rpm -qa | grep -E '^php(-[0-9.]+)?$|^php-common'

Erscheint ein Modul wie php_module, läuft mod_php. Die angezeigte PHP-Version allein ist kein Beleg für den Patch, weil Distributionen Fixes oft als Backport einspielen. Behobene Versionen des PHP-Projekts sind 8.5.12, 8.4.27, 8.3.36 und 8.2.35. Bei Distributionspaketen zählt das Änderungsprotokoll mit den CVE-Nummern.

Patchen und Apache vollständig neu starten

Spielen Sie das Update über die Paketverwaltung ein. Weil PHP im Apache-Prozess steckt, muss danach der ganze Dienst neu starten. Ein Neuladen der Konfiguration ist hier nicht der sichere Weg.

# Debian/Ubuntu
systemctl restart apache2

# RHEL-Familie
systemctl restart httpd

# Kontrolle: Startzeit aller Apache-Prozesse
ps -eo pid,lstart,cmd | grep -E 'apache2|httpd' | grep -v grep

Alle Apache-Prozesse müssen eine Startzeit nach dem Update zeigen. Läuft auf demselben Server zusätzlich PHP-FPM oder php-cgi, starten Sie auch diese Dienste neu.

Sofort handeln

Ist für Ihre PHP-Version noch kein Patch verfügbar, empfiehlt das BSI, den Webserver vorübergehend vom Netz zu nehmen. Bei mod_php wiegt das besonders schwer, weil der Angriff vor dem Anwendungscode greifen kann.

Übergangsmaßnahmen in der Apache-Konfiguration

php.net nennt Übergangsmaßnahmen, die das Risiko senken, aber keinen vollständigen Schutz bieten. Bei mod_php setzen Sie die Werte mit php_admin_value beziehungsweise php_admin_flag in der Apache-Konfiguration, damit .htaccess und Anwendungen sie nicht überschreiben können.

# Beispiel: in der VirtualHost- oder serverweiten Konfiguration
<IfModule php_module>
    php_admin_flag  session.upload_progress.enabled off
    php_admin_value post_max_size 8M
    php_admin_value upload_max_filesize 6M
</IfModule>

Mit Upload-Funktion nennt php.net post_max_size = 32M, upload_max_filesize darunter. Auf PHP 8.5 kommt fatal_error_backtraces=0 hinzu. Den Hinweis zu memory_limit=-1 setzen Sie nur zusammen mit einer Speichergrenze für den Dienst über cgroups um, etwa per MemoryMax in einer systemd-Ergänzung, nicht über RLIMIT_AS oder RLIMIT_DATA. Danach Apache vollständig neu starten. Alle Maßnahmen im Überblick: Sofortmaßnahmen ohne Patch.

Der Weg weg von mod_php

Nach dem akuten Patch lohnt der Umstieg auf PHP-FPM. Dabei läuft PHP in eigenen Prozessen, getrennt vom Webserver. Jede Website kann einen eigenen Pool mit eigenem Benutzer erhalten, Grenzen lassen sich je Pool setzen, und Neustarts betreffen nur PHP. Apache bindet PHP-FPM über mod_proxy_fcgi an und kann dann statt prefork ein moderneres MPM wie event nutzen.

Planen Sie den Wechsel in einer Testumgebung: Pools je Website anlegen, Dateirechte an die neuen Benutzer anpassen, .htaccess-Einträge mit php_value in Pool-Einstellungen überführen, Lasttests fahren. Wie ein sauberer Aufbau aussieht, zeigt Nginx mit PHP-FPM absichern; die Grundsätze gelten für Apache mit PHP-FPM ebenso.

Unabhängig von der Betriebsart gilt: Ein Patch entfernt keine bereits eingeschleuste Schadsoftware. Bewahren Sie die Logs ab dem 20.10.2026 auf und prüfen Sie den Server auf Spuren.

Bei der Spurensuche auf mod_php-Servern lohnt ein Blick auf den gemeinsamen Benutzer. Weil alle Websites unter dem Apache-Benutzer laufen, etwa www-data oder apache, kann ein Angreifer, der eine Website übernommen hat, in der Regel auch die Dateien der anderen lesen und verändern. Prüfen Sie deshalb nicht nur die Website, die Ihnen auffällig erscheint, sondern alle Document-Roots auf dem Server. Achten Sie besonders auf PHP-Dateien mit jungem Änderungsdatum in Upload- und Cache-Verzeichnissen, auf Programmcode, der dem Apache-Benutzer gehört, und auf unbekannte Einträge in der Crontab dieses Benutzers. Finden Sie etwas, sichern Sie zuerst den Zustand und löschen Sie nicht vorschnell, damit die Ursache später nachvollziehbar bleibt.

Wie hilft PHP SOS konkret?

  • Wir prüfen Betriebsart, MPM und Paketstand und bewerten, ob Ihr Server tatsächlich gepatcht ist.
  • Über den PHP-Patch-Service spielen wir das Update ein, starten Apache vollständig neu und dokumentieren den Nachweis.
  • Bis zum Patch setzen wir die Übergangsmaßnahmen nicht überschreibbar und begrenzen den Speicher auf Dienstebene.
  • Im Rahmen der Server-Härtung planen und testen wir den Umstieg auf PHP-FPM mit getrennten Pools.

Häufige Fragen

Wie erkenne ich, ob mein Server mod_php nutzt?

Wenn Apache ein PHP-Modul geladen hat, erscheint es in der Modulliste als php_module oder mit Versionsnummer im Namen. Zusätzlich zeigt eine phpinfo-Ausgabe unter Server API den Eintrag Apache 2.0 Handler. Löschen Sie eine solche Testdatei sofort wieder.

Warum ist mod_php bei PHP2Shell besonders kritisch?

Laut PHP-Team ist das Risiko dort am höchsten; es wurde ein Exploit gezeigt, bevor überhaupt Anwendungscode läuft. Damit schützt auch eine gut gepflegte Anwendung nicht. Ein schnelles Update hat deshalb höchste Priorität.

Reicht ein Reload von Apache nach dem Update?

Sicher ist ein vollständiger Neustart des Dienstes, weil PHP als Modul in den Apache-Prozessen steckt. Prüfen Sie danach die Startzeit aller Apache-Prozesse. Ältere Prozesse als das Update dürfen nicht übrig bleiben.

Ist der Wechsel auf PHP-FPM aufwendig?

Meist ist er gut planbar: PHP-FPM installieren, Pools anlegen, Apache auf proxy_fcgi umstellen und von prefork auf ein anderes MPM wechseln. Testen Sie das vorher in einer Kopie der Umgebung.

Quellen

Sofort-Kontakt

Jede Stunde zählt. Schreiben Sie uns jetzt.

Schildern Sie kurz System, PHP-Version und Beobachtung. Wir melden uns, klären die Lage und arbeiten remote, bis der Vorfall abgeschlossen und dokumentiert ist.

Sofort-Hilfe