
Расширение Checkmk с плагином агента, который инвентаризирует бинарные файлы PHP и Apache mod_php на хостах Linux и сообщает статус PHP2Shell (CVE-2026-109618/109619), бэкпорты и устаревшие процессы.
Расширение для Checkmk, которое показывает для каждой установки PHP на Linux-хосте, затронута ли она уязвимостями PHP2Shell — удалённым выполнением кода до аутентификации CVE-2026-109618 и CVE-2026-109619, раскрытыми и исправленными 2026-10-21 в PHP 8.2.35, 8.3.36, 8.4.27 и 8.5.12.
Оно поставляется с небольшим агентом-плагином на POSIX shell, который только собирает факты (бинарники PHP, библиотеки PHP для Apache mod_php, NGINX Unit и FrankenPHP, версии, журналы изменений пакетов, настройки php.ini, процессы, всё ещё выполняющие заменённый бинарник). Является ли это «исправленным» или «уязвимым», решает check-плагин на сервере Checkmk, поэтому новая информация — ещё один исправленный релиз, новая CVE — требует лишь обновлённого .mkp, а не нового скрипта на каждом хосте.
Почему не просто сравнить номера версий: дистрибутивы переносят исправление обратно, не меняя upstream-версию. Ubuntu 24.04 поставляется с PHP 8.3.6, а AlmaLinux 9 — с 8.0.30 — обе исправлены, обе «уязвимы» по версии. Поэтому расширение также читает журнал изменений пакета, которому принадлежит каждый бинарник.
cmk_addons.plugins)./proc/<pid>/maps всех процессов). Обычный POSIX sh с инструментами GNU или busybox; журналы изменений пакетов читаются с помощью dpkg, rpm или apk. Протестировано на семействе Debian (Debian, Ubuntu), семействе Red Hat (RHEL, AlmaLinux, Rocky Linux, Oracle Linux, CentOS Stream, Fedora, Amazon Linux 2023, CentOS 7) и Alpine, см. ниже.| Образ Checkmk | Дата | Результат |
|---|---|---|
checkmk/check-mk-ultimate:2.5.0p17 | 2026-10-27 | OK (сборка, cmk-validate-plugins, smoke-тест, установка + обнаружение + проверка + agent bake) |
checkmk/check-mk-ultimate:3.0.0-2026.10.27 (daily) | 2026-10-27 | OK (сборка, cmk-validate-plugins, smoke-тест, установка + обнаружение + проверка + agent bake) |
Агент-плагин был запущен против собственных пакетов PHP дистрибутивов 2026-10-27 (scripts/test_agent_plugin.sh). Там, где цель запускает веб-SAPI (FPM, Apache mod_php, если дистрибутив всё ещё его поставляет, NGINX Unit, FrankenPHP), бинарник FPM и libphp впоследствии были заменены на диске, и обнаружение перезапуска сообщило о работающих процессах.
Семейство Debian и Alpine
| Дистрибутив | Пакеты PHP | Результат плагина |
|---|---|---|
| Ubuntu 24.04 | 8.3.6-0ubuntu0.24.04.13 (CLI, FPM, CGI, mod_php) | исправлено обратным переносом (в журнале изменений указаны обе CVE) |
| Debian 12 | 8.2.35-1~deb12u1 (CLI, FPM, mod_php) | исправлено по версии |
| Debian 12 + nginx | 8.2.35-1~deb12u1 (CLI, FPM за nginx) | исправлено по версии |
| Debian 13 | 8.4.27-1~deb13u1 (CLI, FPM) | исправлено по версии |
| Alpine 3.22 | php83 8.3.36-r0 (CLI, FPM, CGI) | исправлено по версии |
Семейство Red Hat
| Дистрибутив | Пакеты PHP | Результат для плагина |
|---|---|---|
| AlmaLinux 8.10 | 7.2.24-1.module_el8.10.0 (CLI, FPM, CGI, mod_php libphp7.so) | исправлено бэкпортом (в changelog указаны оба CVE) |
AlmaLinux 8.10, модуль php:8.2 | 8.2.35-1.module_el8.10.0 (CLI, FPM, CGI) | исправлено версией |
| 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) | исправлено бэкпортом (в changelog указаны оба CVE) |
AlmaLinux 9.8, модуль php:8.3 | 8.3.36-1.module_el9.8.0 (CLI, FPM, CGI) | исправлено версией |
| AlmaLinux 9.8 + Remi SCL | php74 7.4.33-31.el9.remi, php81 8.1.34-6.el9.remi (/opt/remi) | исправлено бэкпортом (в changelog указаны оба CVE) |
| AlmaLinux 10.2, CentOS Stream 10 | 8.3.36-1.el10 (CLI, FPM, CGI) | исправлено версией |
| Fedora 44 | 8.5.12-1.fc44 (CLI, FPM, CGI) | исправлено версией |
| Amazon Linux 2023 | php8.5 8.5.12-1.amzn2023.0.1 (CLI, FPM, CGI) | исправлено версией |
| CentOS 7 (end of life, vault) | 5.4.16-48.el7 (CLI, FPM, CGI) | уязвимо — нет бэкпорта для EL7 вне платной расширенной поддержки |
Официальные контейнерные образы и FrankenPHP
| Образ | PHP | Результат для плагина |
|---|---|---|
php:8.2.20-fpm | 8.2.20, собран из исходников | уязвим |
unit:php8.3 (NGINX Unit) | 8.3.26 (CLI, CGI, встроенный libphp) | уязвим |
dunglas/frankenphp:latest | 8.5.12 (CLI, CGI, встроенный libphp) | исправлено версией |
| Статический бинарник FrankenPHP (GitHub release) | 8.5.12 | исправлено версией |
Пока не запускался на продакшн-хосте вне контейнеров — в частности, не с включённым режимом SELinux enforcing (семейство RHEL); обычно агент работает там в неограниченном режиме (unconfined).
Скачайте .mkp из релиза (или соберите его самостоятельно, см.
Разработка).
Setup > Maintenance > Extension packages > Upload package, либо из командной строки внутри сайта:
mkp add php2shell-<version>.mkp
mkp enable php2shell <version>
Разверните плагин агента на хостах, которые вы хотите проверить:
Запустите обнаружение сервисов на хостах. Каждый бинарный файл PHP и модуль Apache PHP получает
собственный сервис, плюс один сервис PHP2Shell restart на хост.
Необязательно: настройте состояния в Setup > Services > Service monitoring rules > PHP2Shell (CVE-2026-109618 / CVE-2026-109619) и PHP2Shell restart.
Скопируйте package/agents/plugins/php2shell в подкаталог с интервалом кэширования каталога
плагинов агента и сделайте его исполняемым:
install -m 755 php2shell /usr/lib/check_mk_agent/plugins/3600/php2shell
Каталог 3600 заставляет агента запускать его в фоновом режиме раз в час и отдавать кэшированный результат в промежутках. Не помещайте его напрямую в plugins/: он запускает каждый PHP-бинарник и читает карту памяти каждого процесса, что слишком много для каждого запроса агента.
| Сервис | По одному на | Состояния (по умолчанию, настраиваемые) |
|---|---|---|
PHP2Shell <path> | PHP-бинарник или библиотеку, например PHP2Shell /usr/sbin/php-fpm8.3 | OK исправлено - CRIT уязвимый web SAPI - WARN уязвимый web SAPI со всеми промежуточными мерами защиты - WARN уязвимый CLI - UNKNOWN версия не определяется |
PHP2Shell restart | хост с PHP | OK - CRIT процессы всё ещё выполняют заменённый PHP-бинарник или libphp |