
Checkmk-Erweiterung mit einem Agent-Plug-in, das PHP-Binärdateien und Apache mod_php auf Linux-Hosts inventarisiert und den Status von PHP2Shell (CVE-2026-109618/109619), Backports und veraltete Prozesse meldet.
Eine Checkmk-Erweiterung, die für jede PHP-Installation auf einem Linux-Host anzeigt, ob sie von PHP2Shell betroffen ist – den Pre-Authentication-Remote-Code-Execution-Schwachstellen CVE-2026-109618 und CVE-2026-109619, die am 2026-10-21 in PHP 8.2.35, 8.3.36, 8.4.27 und 8.5.12 offengelegt und behoben wurden.
Sie enthält ein kleines POSIX-Shell-Agent-Plug-in, das ausschließlich Fakten sammelt (PHP-Binaries, PHP-Bibliotheken von Apache mod_php, NGINX Unit und FrankenPHP, Versionen, Paket-Changelogs, php.ini-Einstellungen, Prozesse, die noch ein ersetztes Binary ausführen). Ob das „behoben" oder „verwundbar" bedeutet, entscheidet das Check-Plug-in auf dem Checkmk-Server, sodass neue Informationen – ein weiteres behobenes Release, eine neue CVE – nur ein aktualisiertes .mkp benötigen, nicht ein neues Skript auf jedem Host.
Warum nicht einfach Versionsnummern vergleichen: Distributionen backporten den Fix, ohne die Upstream-Version zu ändern. Ubuntu 24.04 liefert PHP 8.3.6 und AlmaLinux 9 liefert 8.0.30 – beide behoben, beide laut Version „verwundbar". Die Erweiterung liest daher zusätzlich den Changelog des Pakets, dem jedes Binary gehört.
cmk_addons.plugins-Plugin-API)./proc/<pid>/maps aller Prozesse). Reines POSIX sh mit GNU- oder busybox-Werkzeugen; Paket-Changelogs werden mit dpkg, rpm oder apk gelesen. Getestet auf der Debian-Familie (Debian, Ubuntu), der Red-Hat-Familie (RHEL, AlmaLinux, Rocky Linux, Oracle Linux, CentOS Stream, Fedora, Amazon Linux 2023, CentOS 7) und Alpine, siehe unten.| Checkmk-Image | Datum | Ergebnis |
|---|---|---|
checkmk/check-mk-ultimate:2.5.0p17 | 2026-10-27 | OK (Build, cmk-validate-plugins, Smoke-Test, Installation + Discovery + Check + Agent-Bake) |
checkmk/check-mk-ultimate:3.0.0-2026.10.27 (daily) | 2026-10-27 | OK (Build, cmk-validate-plugins, Smoke-Test, Installation + Discovery + Check + Agent-Bake) |
Das Agent-Plug-in wurde am 2026-10-27 gegen die PHP-Pakete der Distributionen selbst ausgeführt (scripts/test_agent_plugin.sh). Wo ein Ziel die Web-SAPIs startet (FPM, Apache mod_php, wo die Distribution es noch liefert, NGINX Unit, FrankenPHP), wurden das FPM-Binary und libphp anschließend auf der Festplatte ersetzt, und die Neustart-Erkennung meldete die laufenden Prozesse.
Debian-Familie und Alpine
| Distribution | PHP-Pakete | Plug-in-Ergebnis |
|---|---|---|
| Ubuntu 24.04 | 8.3.6-0ubuntu0.24.04.13 (CLI, FPM, CGI, mod_php) | behoben durch Backport (Changelog nennt beide CVEs) |
| Debian 12 | 8.2.35-1~deb12u1 (CLI, FPM, mod_php) | behoben durch Version |
| Debian 12 + nginx | 8.2.35-1~deb12u1 (CLI, FPM hinter nginx) | behoben durch Version |
| Debian 13 | 8.4.27-1~deb13u1 (CLI, FPM) | behoben durch Version |
| Alpine 3.22 | php83 8.3.36-r0 (CLI, FPM, CGI) | behoben durch Version |
Red-Hat-Familie
| Distribution | PHP-Pakete | Plug-in-Ergebnis |
|---|---|---|
| AlmaLinux 8.10 | 7.2.24-1.module_el8.10.0 (CLI, FPM, CGI, mod_php libphp7.so) | behoben durch Backport (Changelog nennt beide CVEs) |
AlmaLinux 8.10, Modul php:8.2 | 8.2.35-1.module_el8.10.0 (CLI, FPM, CGI) | behoben durch Version |
| RHEL 9.8 (UBI), AlmaLinux 9.8, Rocky Linux 9.8, Oracle Linux 9.8 | 8.0.30-8.el9_8.1 (CLI, FPM, CGI) | behoben durch Backport (Changelog nennt beide CVEs) |
AlmaLinux 9.8, Modul php:8.3 | 8.3.36-1.module_el9.8.0 (CLI, FPM, CGI) | behoben durch Version |
| AlmaLinux 9.8 + Remi SCL | php74 7.4.33-31.el9.remi, php81 8.1.34-6.el9.remi (/opt/remi) | behoben durch Backport (Changelog nennt beide CVEs) |
| AlmaLinux 10.2, CentOS Stream 10 | 8.3.36-1.el10 (CLI, FPM, CGI) | behoben durch Version |
| Fedora 44 | 8.5.12-1.fc44 (CLI, FPM, CGI) | behoben durch Version |
| Amazon Linux 2023 | php8.5 8.5.12-1.amzn2023.0.1 (CLI, FPM, CGI) | behoben durch Version |
| CentOS 7 (End of Life, Vault) | 5.4.16-48.el7 (CLI, FPM, CGI) | anfällig – kein Backport für EL7 außerhalb des kostenpflichtigen erweiterten Supports |
Offizielle Container-Images und FrankenPHP
| Image | PHP | Plug-in-Ergebnis |
|---|---|---|
php:8.2.20-fpm | 8.2.20, aus dem Quellcode gebaut | anfällig |
unit:php8.3 (NGINX Unit) | 8.3.26 (CLI, CGI, eingebettetes libphp) | anfällig |
dunglas/frankenphp:latest | 8.5.12 (CLI, CGI, eingebettetes libphp) | behoben durch Version |
| FrankenPHP statisches Binary (GitHub-Release) | 8.5.12 | behoben durch Version |
Es wurde noch nicht auf einem Produktionshost außerhalb von Containern ausgeführt – insbesondere nicht mit durchsetzendem SELinux (RHEL-Familie); der Agent läuft dort normalerweise unconfined.
Laden Sie das .mkp aus einem Release herunter (oder bauen Sie es selbst, siehe
Entwicklung).
Setup > Wartung > Erweiterungspakete > Paket hochladen, oder auf der Kommandozeile innerhalb der Site:
mkp add php2shell-<version>.mkp
mkp enable php2shell <version>
Stellen Sie das Agent-Plug-in auf den Hosts bereit, die Sie prüfen möchten:
Führen Sie eine Service-Discovery auf den Hosts durch. Jede PHP-Binary und jedes Apache-PHP-Modul erhält
einen eigenen Service, plus einen PHP2Shell restart-Service pro Host.
Optional: Passen Sie die Zustände in Setup > Services > Service monitoring rules > PHP2Shell (CVE-2026-109618 / CVE-2026-109619) und PHP2Shell restart an.
Kopieren Sie package/agents/plugins/php2shell in ein Cache-Intervall-Unterverzeichnis des Plug-in-Verzeichnisses des Agents
und machen Sie es ausführbar:
install -m 755 php2shell /usr/lib/check_mk_agent/plugins/3600/php2shell
Das Verzeichnis 3600 sorgt dafür, dass der Agent es stündlich im Hintergrund ausführt und zwischenzeitlich das zwischengespeicherte Ergebnis ausliefert. Legen Sie es nicht direkt in plugins/ ab: Es führt jede PHP-Binary aus und liest die Speicherkarte jedes Prozesses, was für jede Agent-Abfrage zu viel ist.
| Dienst | Einmal pro | Zustände (Standard, konfigurierbar) |
|---|---|---|
PHP2Shell <path> | PHP-Binary oder -Bibliothek, z. B. PHP2Shell /usr/sbin/php-fpm8.3 | OK behoben - CRIT anfällige Web-SAPI - WARN anfällige Web-SAPI mit allen vorläufigen Gegenmaßnahmen - WARN anfällige CLI - UNKNOWN Version nicht ermittelbar |
PHP2Shell restart | Host mit PHP | OK - CRIT Prozesse führen noch eine ersetzte PHP-Binary oder libphp aus |