php2shell (CVE-2026-109618 / 109619) не определить через php -v: где номера версий расходятся в FPM, Docker и дистрибутивах
Версии CLI и FPM, теги Docker, бэкпорты дистрибутивов и что проверить на виртуальном хостинге

Эта страница переведена ИИ с японского оригинала. При расхождениях приоритет имеет японская версия: 日本語
Если PHP, который обрабатывает веб-запросы (PHP-FPM, mod_php в Apache, php-cgi, FrankenPHP, LiteSpeed), старше 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12, он подвержен уязвимостям CVE-2026-109618 и CVE-2026-109619, известным как php2shell. Исправление — обновиться до одной из этих версий (а для пакетов дистрибутива — до исправленного пакета) и перезапустить процессы. Проверять нужно не локальный php -v, а «PHP, который реально обслуживает веб» и «версию установленного пакета».
В статье разобраны четыре места, где суждение только по номеру версии приводит к неверному выводу. Все цифры и статусы приведены по состоянию на 2026-10-22, источники по каждому пункту перечислены в конце.
Что известно на 2026-10-22
| Параметр | Сведения |
|---|---|
| CVE | CVE-2026-109618 (GHSA-w8hw-w9fx-j79w) / CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp) |
| Критичность | Обе уязвимости оценены в бюллетене PHP как CVSS v4.0 9.2 (Critical) |
| Исправленные версии | 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 (выпущены 2026-10-21) |
| Затронутые версии | Версии до указанных выше исправленных (по данным бюллетеней GitHub) |
| Область действия | Любой PHP, обрабатывающий веб-запросы. В бюллетене названы PHP-FPM, mod_php, php-cgi, FrankenPHP и LiteSpeed, причём риск для mod_php описан как наивысший. В бюллетенях GitHub эксплуатация продемонстрирована для mod_php, а FPM и FrankenPHP отмечены как «не продемонстрировано» или «при условии». «Не продемонстрировано» не значит «безопасно», поэтому обновляйтесь до исправленной версии при любом способе запуска PHP |
| 8.1 и старше | Обновлений от проекта PHP нет. Для 7.4 / 8.0 / 8.1 опубликованы минимальные бэкпорты в исходниках, а некоторые дистрибутивы и LTS-вендоры могут выпускать исправления |
| 8.2 | Окончание поддержки 2026-12-31 (согласно примечаниям к выпуску 8.2.35) |
В бюллетене PHP сказано, что «единственное полное исправление — обновление». Меры смягчения на период до обновления описаны ниже.
Ловушка 1: php -v и веб-PHP могут быть разными
php -v, набранный по SSH, показывает версию PHP для CLI. Веб-запросы обрабатывают процессы PHP-FPM или mod_php, загруженный в Apache, — это отдельные бинарные файлы и отдельные пакеты. Если новый PHP установлен только для CLI, если рядом стоит несколько версий или пул FPM указывает на другую версию, веб-сторона может остаться старой, даже когда php -v показывает исправленную версию.
Увидеть реальную версию на веб-стороне можно несколькими способами.
# FPM в Debian / Ubuntu (имя зависит от версии)
php-fpm8.3 -v
# FPM в семействе RHEL
php-fpm -v
# Проверить, загружен ли mod_php в Apache
apachectl -M | grep -i php
Надёжнее всего заставить PHP, который реально выполняется через веб, сообщить свою версию. Разместите временный файл с трудно угадываемым именем и удалите его сразу после проверки.
<?php echo PHP_VERSION, ' ', PHP_SAPI;
Если PHP_SAPI равен fpm-fcgi, PHP работает под FPM; apache2handler означает mod_php; cgi-fcgi — CGI. Не оставляйте phpinfo() открытым: это само по себе раскрывает информацию.
Перезапуск — ещё один легко упускаемый шаг. Даже после замены пакета уже запущенные процессы php-fpm или Apache могут продолжать работать на старом коде. В одних конфигурациях перезапуск при обновлении пакета происходит автоматически, в других — нет. После обновления перезапустите FPM / Apache и ещё раз проверьте версию на веб-стороне описанными выше способами.
Ловушка 2: в Docker по названию тега судить нельзя
У официального образа php есть «плавающие теги», например 8.3 и 8.3-fpm, содержимое которых заменяется, и закреплённые теги, например 8.3.30, фиксирующие версию.
- Даже если плавающий тег на Docker Hub переключён на исправленную версию, ваша локальная копия остаётся старым образом, пока вы не сделаете pull заново. Запущенные контейнеры тоже продолжают работать на старом образе, пока их не пересоздадут.
DockerfileсFROM php:8.3-fpmпо-прежнему соберётся на старой базе, если она осталась в кеше сборки. - Закреплённый тег остаётся старым навсегда, пока вы сами не поменяете номер.
Опубликованы ли теги с исправленными версиями, можно проверить через API Docker Hub.
curl -s "https://hub.docker.com/v2/repositories/library/php/tags?name=8.3.36&page_size=100"
Результаты запроса по четырём линейкам релизов на 2026-10-22 (время в UTC).
| Исправленная версия | Найдено тегов | Когда появились теги на основе Debian (-fpm, -apache и др.) | Теги на основе Alpine |
|---|---|---|---|
| 8.5.12 | 54 (включая RC1) | 2026-10-21 18:59–22:13 | 2026-10-21 22:12–10-22 01:05 |
| 8.4.27 | 54 (включая RC1) | 2026-10-21 22:09–22:11 | 2026-10-21 22:09–10-22 03:58 |
| 8.3.36 | 27 | 2026-10-21 22:04–22:06 | 2026-10-21 22:04–10-22 03:56 |
| 8.2.35 | 27 | 2026-10-21 21:59–22:01 | 2026-10-21 22:00–10-22 00:58 |
Эта проверка выявила три места, где суждение по номерам может ввести в заблуждение.
- «Недавно обновлён» не значит «исправлен». Закреплённый тег
8.3.35был пересобран в течение 2026-10-21, ноPHP_VERSIONвнутри по-прежнему был 8.3.35. Смотрите на версию внутри образа, а не на время обновления. - Разные digest могут скрывать одинаковое содержимое. У
8.3и8.3.36были разные digest тегов (значение мультиархитектурного индекса), но образ для amd64 был идентичным, и в обоих былоPHP_VERSION=8.3.36. Так же для8.3-fpm/8.3.36-fpm,8.4-apache/8.4.27-apache,latest/8.5.12,8.5-fpmи8.2-fpmзначениеPHP_VERSIONв образе amd64 было исправленным. - Исправленных официальных образов для 8.1 и старше нет. Последнее обновление
8.1-fpm— 2025-12-31.
Проверка локальных образов и запущенных контейнеров:
# Версия PHP в локально загруженном образе
docker image inspect php:8.3-fpm --format '{{range .Config.Env}}{{println .}}{{end}}' | grep PHP_VERSION
# Загрузить заново и пересоздать контейнеры
docker compose pull
docker compose up -d
# Если вы собираете свой образ, обновите базовый образ и затем выполните сборку
docker compose build --pull
# Версия внутри запущенного контейнера
docker compose exec app php -r 'echo PHP_VERSION, PHP_EOL;'
Замените app в последней команде на имя своего сервиса. Каждый официальный образ собирается с единственным PHP_VERSION, поэтому версия CLI внутри контейнера совпадает с версией FPM / Apache в этом контейнере (ловушка 1 относится к случаю, когда PHP установлен прямо на хосте).
FrankenPHP встраивает PHP, поэтому версия FrankenPHP и версия встроенного PHP — это разные номера. В примечаниях к выпуску FrankenPHP 1.13.2 от 2026-10-21 сказано, что образы Docker собраны с PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12, а статические бинарные файлы — с PHP 8.5.12.
Ловушка 3: пакеты дистрибутивов «исправлены под старыми номерами»
Ubuntu и RHEL переносят в старые версии только исправления (бэкпорты). Номер, который показывает php -v, остаётся старым, поэтому числовая проверка вроде «меньше 8.3.36, значит уязвим» пометит уже исправленную систему как уязвимую. И наоборот, успокаиваться по номеру тоже нельзя. Выводы делайте по версии пакета и трекеру безопасности своего дистрибутива.
Исправленные пакеты, указанные в трекерах по состоянию на 2026-10-22 (одинаково для обоих CVE):
| Дистрибутив | Пакет | Исправленная версия | Источник |
|---|---|---|---|
| Ubuntu 22.04 (jammy) | php8.1 | 8.1.2-1ubuntu2.28 | USN-8948-1 |
| Ubuntu 24.04 (noble) | php8.3 | 8.3.6-0ubuntu0.24.04.13 | USN-8948-1 |
| Ubuntu 26.04 (resolute) | php8.5 | 8.5.4-0ubuntu1.5 | USN-8948-1 |
| Ubuntu (stonking) | php8.5 | 8.5.9-0ubuntu2.1 | USN-8948-1 |
| Ubuntu 14.04 / 16.04 / 18.04 / 20.04 | php5 / php7.0 / php7.2 / php7.4 | Доступно через Ubuntu Pro (включая Legacy Support) | USN-8948-2 |
| Debian 12 (bookworm) | php8.2 | 8.2.35-1~deb12u1 | DLA-4848-1 |
| Debian 13 (trixie) | php8.4 | 8.4.27-1~deb13u1 | DSA-6574-1 |
| RHEL 10 | php / php8.4 | 8.3.36-1.el10_2 / 8.4.27-1.el10_2 | Red Hat |
| RHEL 9 | php (по умолчанию) | 8.0.30-8.el9_8.1 | Red Hat |
| RHEL 9 | модуль php 8.2 / 8.3 | 8.2.35-1.module+el9.8.0… / 8.3.36-1.module+el9.8.0… | Red Hat |
| RHEL 8 | модуль php 7.4 / 8.2 | 7.4.33-8.module+el8.10.0… / 8.2.35-1.module+el8.10.0… | Red Hat |
Эта таблица прямо показывает, почему одних номеров недостаточно. Исправленный PHP в Ubuntu 24.04 — это версия, начинающаяся с 8.3.6, намного ниже апстримной 8.3.36. PHP по умолчанию в RHEL 9 исправлен, оставаясь на 8.0.30, хотя апстрим больше не выпускает исправления для 8.0. Debian перешёл на те же номера, что и апстрим (8.2.35 / 8.4.27).
Некоторые пакеты ещё не исправлены (по состоянию на 2026-10-22).
- Модуль php 8.4 в RHEL 9 помечен как «затронут, исправления нет».
- В Debian forky (testing) php8.4 8.4.26-1 помечен как «vulnerable». php8.4 в sid (unstable) — 8.4.27-1, он исправлен.
Примеры команд для проверки собственного сервера:
# Debian / Ubuntu: установленная и доступная версии
apt-cache policy php8.3-fpm libapache2-mod-php8.3
# Ubuntu: исправлена ли эта CVE на данном сервере
pro fix CVE-2026-109618
pro fix CVE-2026-109619
# Семейство RHEL: есть ли обновление, исправляющее эту CVE, и установленная версия
dnf updateinfo list --cve CVE-2026-109618
rpm -q php-fpm php-cli
Подставьте имя пакета (php8.3-fpm и т. д.) под свою среду. Сравните показанную версию с «исправленной версией» в таблице выше или в трекере; если она такая же или выше, исправление установлено. Затем выполните перезапуск и проверку веб-стороны, описанные в ловушке 1.
Если вы устанавливаете PHP не из пакетов самого дистрибутива, а из стороннего репозитория, нужно следить за обновлениями этого репозитория. В бюллетене PHP отмечено, что в репозитории rpms.remirepo.net, который ведут волонтёры, обновлений в день раскрытия информации не будет, и рекомендуется перейти на пакеты дистрибутива или собственные сборки.
Ловушка 4: на виртуальном хостинге и в управляемых средах PHP самому не обновить
На виртуальном хостинге и в управляемых средах PHP среду выполнения PHP заменяет провайдер. И здесь одного номера недостаточно: если провайдер собирает PHP сам или делает бэкпорты исправлений, номер версии может остаться старым.
Самостоятельно можно сделать три вещи.
- Проверьте версию на веб-стороне. С помощью временного файла из ловушки 1 выведите
PHP_VERSIONиPHP_SAPI, затем сразу удалите его. Если в панели управления есть выбор версии PHP, отметьте и выбранную там версию. - Прочитайте уведомление провайдера, а если его нет — спросите. Вопрос: «Для каких версий PHP на моём тарифе и когда будут применены (или уже применены) исправления CVE-2026-109618 и CVE-2026-109619?» Если спрашивать по номеру CVE, а не по номеру версии, ответ учтёт и бэкпорты.
- Если выбрана версия без поддержки, обновитесь. Проект PHP не выпускает исправлений для 8.1 и старше, а поддержка 8.2 заканчивается 2026-12-31. Если провайдер не сделал бэкпорты исправлений, надёжный путь — сменить версию.
Статус по хостинг-провайдерам (на 2026-10-22)
На виртуальном хостинге среду выполнения PHP обычно обновляет провайдер, и во многих уведомлениях сказано, что «действий от пользователей не требуется». Пользователю нужно сделать две вещи: проверить официальное уведомление своего провайдера и, если в панели управления выбрана старая версия PHP, решить, переключаться ли на версию, которую рекомендует уведомление (ту, для которой есть исправленный выпуск).
В таблице ниже приведено только то, что написано на официальных страницах провайдеров (объявления и информация о техработах), с пересказом формулировок уведомлений. Уведомления обновляются по ходу работ, поэтому фактический статус всегда сверяйте на указанной официальной странице.
| Провайдер / сервис | Основное в официальном уведомлении | Дата и время уведомления | Источник |
|---|---|---|---|
| エックスサーバー | «Для PHP 8.2–8.5 применение исправляющего патча на всех затронутых серверах завершено». Для более старых версий в уведомлении сказано: «исправляющие патчи готовы для некоторых версий и будут применяться последовательно по мере завершения проверки», и что работа ведётся и по другим старым версиям | По состоянию на 10/22 6:45 (страница обновлялась до 13:15) | メンテナンスの進捗状況 |
| シン・レンタルサーバー | На странице объявлений приведён тот же «ход технических работ», что и у Xserver, но заявления, прямо касающегося статуса PHP в Shin Rental Server, я не нашёл (уточните в поддержке) | - | お知らせ |
| ConoHa WING | «Мы применяем патчи безопасности, сохраняя используемую вами сейчас версию PHP». В уведомлении сказано, что менять версию пользователям, как правило, не нужно, но для PHP 5.x и 7.x изменение может потребоваться. Файловый менеджер и веб-почта временно отключены в качестве меры предосторожности; отображение сайтов и отправка и получение почты работают в штатном режиме | 10/22 | 【重要】PHPの脆弱性への弊社対応について |
| さくらのレンタルサーバ | «Мы завершили устранение уязвимости для всех версий PHP, доступных для выбора в нашей панели управления». Сказано, что «срочных действий от клиентов не требуется», и рекомендуется в дальнейшем перейти на последнюю поддерживаемую версию. В уведомлении указано, что веб-почта исправлена 10/22 в 13:45, а работа над phpMyAdmin ещё идёт | 10/22 (обновлено в 13:45) | PHPの脆弱性(CVE-2026-109618、CVE-2026-109619)への対応状況について |
| ロリポップ! | Уведомление о профилактических работах перед выходом исправленных версий (сайт сервиса, страницы пользователей и т. д. будут поочерёдно отключаться; сайты могут быть отключены или ограничены без предварительного уведомления). На 10/22 я не нашёл уведомления о завершении исправления PHP (уточните в поддержке) | 10/21 | 【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ |
| ヘテムル | «Для PHP 8.x и PHP 7.4 мы применили официальные исправленные версии»; для остальных версий — «мы внесли собственные исправления на основе официального». Поскольку «часть функциональности (session.upload_progress) отключена во всех версиях», пользователей просят проверить работу своих сайтов. Так как для старых версий дальнейших исправлений может не быть, в уведомлении рекомендуется перейти на более новую версию | Опубликовано 10/21 19:44; обновлено 10/22 12:18 и 13:20 | 【一部完了】【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ |
| mixhost | «Применение пакетов с исправлением PHP было завершено примерно в 10:18 22 октября 2026 года». «Применено без изменения номера версии PHP»; «от клиентов не требуется никаких действий». Пользователям версий ниже PHP 8.2 в уведомлении рекомендуется использовать поддерживаемую версию (8.2 или новее) | 10/22 | 【完了】PHPの重大な脆弱性への対応について |
| KAGOYA | Для сервиса аренды серверов PHP 8.2–8.5 будут обновляться последовательно после проверки исправленных версий (целевые версии ещё уточняются). Для управляемых выделенных, общих и специализированных WordPress-серверов постоянное исправление ещё планируется; в качестве временных мер в уведомлении предлагается рассмотреть отключение сайтов или ограничение доступа | Опубликовано 10/21 18:20; обновлено 10/22 10:35 | PHPの脆弱性に関する当社サービスへの影響について |
| Zenlogic(IDCフロンティア) | Исправления применяются во время экстренных работ (10/21 22:00–10/22 18:00; время окончания может измениться). PHP 5.3 будет обновлён до последней версии, и вернуть его нельзя; 7.4 и 8.1 могут быть обновлены. В уведомлении сказано, что если после обновления возникнут проблемы с отображением или работой, исправлять придётся приложение | 10/21 | 【ホスティング】緊急メンテナンス作業のお知らせ |
| ColorfulBox | «Мы завершили на стороне сервера обновление до исправленных версий, сохранив используемую вами сейчас версию PHP». В уведомлении сказано, что «клиентам не нужно самим менять или переключать версии PHP» | 10/22 | 【重要】PHPの脆弱性に対するセキュリティアップデート完了のお知らせ |
| お名前.com レンタルサーバー | «Мы применяем патчи безопасности, сохраняя используемую вами сейчас версию PHP». В уведомлении сказано, что смена версии, как правило, не нужна, но для PHP 5.x и 7.x может потребоваться. Файловый менеджер и веб-почта временно отключены в качестве меры предосторожности | 10/22 | 【重要】PHPの脆弱性への弊社対応について |
| CORESERVER(V2) | «Мы завершили устранение уязвимости для всех предоставляемых нами версий PHP»; «со стороны клиента не требуется никаких действий, например смены версии PHP». Техработы шли 10/22 0:00–11:13, указано, что они завершены | Опубликовано 10/21 (завершено 10/22) | PHP脆弱性の対応(CORESERVER V2)【完了】 |
| XREA | «Мы завершили устранение уязвимости для PHP 7.4 и новее (7.4 / 8.0 / 8.1 / 8.2 / 8.3 / 8.4 / 8.5)». Пользователям этих версий менять версию не нужно. О версиях ниже 7.4 в уведомлении ничего не сказано | Опубликовано 10/21 (завершено 10/22 0:50) | PHP脆弱性の対応(XREA)【完了】 |
| バリューサーバー | «Мы завершили устранение уязвимости для PHP 7.4 и новее». В уведомлении сказано, что пользователям этих версий менять версию не нужно | Опубликовано 10/21 (завершено 10/22 0:50) | PHP脆弱性の対応(VALUESERVER)【完了】 |
| ABLENET | «В отношении двух выявленных в PHP уязвимостей мы выполнили первичные обновления безопасности для нашей среды арендуемых серверов». В уведомлении не указано, какие версии охвачены и нужно ли пользователям что-либо делать | 10/22 13:04 | PHPの脆弱性に関するセキュリティアップデートの対応について |
| WebARENA(レンタルサーバー) | На 10/22 официального уведомления я не нашёл (уточните в поддержке) | - | WebARENA お知らせ(2026年) |
Там, где я не смог найти или открыть официальное уведомление, в таблице написано «не удалось подтвердить» или «не нашёл». Отсутствие информации там не означает, что провайдер не отреагировал. Уточняйте напрямую в объявлениях и поддержке своего провайдера.
Меры смягчения, пока нельзя сразу обновиться
В бюллетене PHP перечислены настройки, уменьшающие поверхность атаки до обновления. Однако сам бюллетень прямо указывает, что они «не делают вас защищёнными». Основные из них:
- Для CVE-2026-109619: задайте
session.upload_progress.enabled=0в php.ini, в пуле FPM или в конфигурации сервера и перезапустите все рабочие процессы (ini_set()и.user.iniв FPM для этого не работают). В PHP 8.5 также задайтеfatal_error_backtraces=0. - Для CVE-2026-109618: задайте
memory_limit=-1так, чтобы приложение не могло это переопределить, и уменьшитеpost_max_size(8M, если загрузок нет, и 32M, если есть). Не используйтеRLIMIT_AS/RLIMIT_DATAвместо этого.
Британский NCSC рекомендует рассмотреть отключение от сети любой системы, которую нельзя сразу обновить или защитить мерами смягчения, и проверить наличие признаков компрометации до обновления или применения мер.
Источники (проверено 2026-10-22)
- php.net: Security advisory: Critical remote code execution vulnerabilities, update now (2026-10-21)
- php.net: Upcoming Critical PHP Security Release (2026-10-20)
- php.net: анонсы выпусков PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35
- GitHub: GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
- GitHub: GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
- Docker Hub: официальный образ php
- Примечания к выпуску FrankenPHP 1.13.2
- Debian Security Tracker: CVE-2026-109618 / CVE-2026-109619
- Ubuntu: CVE-2026-109618 / CVE-2026-109619 / USN-8948-1 / USN-8948-2
- Red Hat: CVE-2026-109618 / CVE-2026-109619 (версии исправленных пакетов — из данных VEX Red Hat)
- NCSC: Critical security issue affecting PHP
Часто задаваемые вопросы
Если php -v показывает исправленную версию, защищён ли я от php2shell (CVE-2026-109618 / 109619)?
Не обязательно. php -v показывает только версию PHP для CLI. PHP-FPM или mod_php в Apache, которые обрабатывают веб-запросы, могут быть отдельным бинарным файлом и отдельным пакетом. Версию FPM можно посмотреть командой php-fpm8.3 -v (в семействе RHEL — php-fpm -v). Другой способ — открыть через веб временный файл, который выводит PHP_VERSION и PHP_SAPI, и удалить его сразу после проверки. Если после обновления вы не перезапускали FPM или Apache, они могут продолжать работать на старом коде.
Если я использую php:8.3-fpm из Docker, исправлена ли уязвимость php2shell?
По состоянию на 2026-10-22 тег php:8.3-fpm на Docker Hub переключён на PHP 8.3.36. Однако ваш локальный образ остаётся старым, пока вы не выполните pull заново, а запущенные контейнеры продолжают работать на старом образе, пока их не пересоздадут. Выполните docker compose pull и docker compose up -d (или docker compose build --pull, если вы собираете свой образ). Затем выполните внутри контейнера php -r 'echo PHP_VERSION;' и убедитесь, что версия 8.3.36 или выше. Закреплённые теги, например 8.3.30, остаются старыми, пока вы сами не поменяете номер.
В Ubuntu и RHEL по-прежнему PHP 8.3.6 или 8.0.30. Затронуты ли они php2shell?
По одному номеру версии этого не определить. Ubuntu и RHEL переносят исправления в старые версии (бэкпорты), поэтому пакет может быть исправлен, а его номер остаётся старым. По состоянию на 2026-10-22 исправление есть в php8.3 8.3.6-0ubuntu0.24.04.13 в Ubuntu 24.04 и в php 8.0.30-8.el9_8.1 в RHEL 9. Сравните версию установленного пакета (apt-cache policy или rpm -q) с исправленной версией в трекере безопасности вашего дистрибутива. Можно также проверить командой pro fix CVE-2026-109618 в Ubuntu или dnf updateinfo list --cve CVE-2026-109618 в семействе RHEL.