CVE-2026-109618
PHP2Shell: критические RCE в PHP CVE-2026-109618 и CVE-2026-109619
Две критические ошибки в PHP позволяют удалённое выполнение кода без учётной записи при определённых условиях обработки запросов и состояния worker-процесса. Проверьте именно версию PHP веб-сайта, а не только CLI, обновитесь до исправленной ветки и учтите подтверждённые попытки эксплуатации до публичного раскрытия.
Кому нужно проверить
Владельцам сайтов и системным администраторам, использующим PHP-FPM, Apache mod_php, FrankenPHP или другие worker-based PHP-развёртывания; администраторам WordPress, 1С-Битрикс и Joomla; технической поддержке российских хостинг-провайдеров. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Успешная эксплуатация может дать удалённое выполнение кода с полномочиями PHP-процесса, что создаёт риск изменения файлов сайта, чтения доступных веб-процессу данных и последующего закрепления. AWS сообщила о наблюдении попытки эксплуатации 17 октября 2026 года, до публичного раскрытия, и о росте активности после публикации; телеметрия отдельных компаний описывает их собственные датчики и не является оценкой доли заражённых сайтов. Публичное раскрытие также сопровождалось фальшивыми PoC и вредоносными репозиториями.
Затронутые версии
Официальные advisories PHP указывают уязвимые версии ниже 8.2.35, 8.3.36, 8.4.27 и 8.5.12 в соответствующих ветках: PHP 8.2.x < 8.2.35, 8.3.x < 8.3.36, 8.4.x < 8.4.27 и 8.5.x < 8.5.12. Эксплуатация зависит от конкретного сценария: обработки multipart-запросов, состояния worker между запросами и достижимости условий повреждения памяти; для распространённого сценария PHP2Shell исследователи отмечают включённый по умолчанию session.upload_progress.enabled и приём multipart-загрузок. Не делайте вывод только по CMS: дефект находится в PHP, поэтому затрагивает сайты на WordPress, 1С-Битрикс, Joomla и других приложениях, использующих уязвимый PHP SAPI. PHP ниже 8.2 не входит в опубликованные исправленные ветки и должен рассматриваться как неподдерживаемый/неисправленный, если поставщик ОС или хостинга не подтверждает применимый backport.
Исправленные версии
Обновитесь минимум до PHP 8.2.35, 8.3.36, 8.4.27 или 8.5.12 в соответствующей ветке; PHP 8.5.12 опубликован PHP 22 октября 2026 года. Предпочтительна актуальная поддерживаемая версия. На российских shared-хостингах переключите PHP отдельно для каждого сайта/домена в панели и убедитесь, что web SAPI действительно использует исправленный runtime. Для пакетных сборок и VPS проверьте advisory дистрибутива: backport может исправлять пакет без изменения ожидаемого upstream-номера версии.
Что сделать
- 1Определите версию именно веб-PHP для каждого виртуального хоста: проверьте настройки PHP-FPM pool/Apache, панель хостинга и путь к runtime. CLI-команда php -v может показывать другую версию. Не оставляйте публичный phpinfo(); удалите временный диагностический файл после проверки.
- 2Сверьте ветку с официальным advisory и установите исправленный релиз: 8.2.35, 8.3.36, 8.4.27 или 8.5.12 и новее в поддерживаемой ветке. На shared-хостинге запросите у провайдера подтверждение версии для конкретного домена; на VPS обновите PHP-пакеты и перезапустите все соответствующие FPM/Apache/FrankenPHP workers.
- 3Если обновление немедленно невозможно, временно отключите multipart-загрузки на reverse proxy или уровне приложения только после оценки влияния на формы и загрузки. Для конкретных путей advisories указывают конфигурационные меры, но они частичные: session.upload_progress.enabled=Off и, для PHP 8.5, fatal_error_backtraces=Off; изменения применяйте административно и перезапускайте workers. Не считайте отдельную директиву полноценной заменой обновлению.
- 4Для PHP-FPM дополнительно рассмотрите pm.max_requests=1 как временное снижение риска межзапросного состояния, если это приемлемо по производительности; контролируйте перезапуски и нагрузку. Не применяйте memory_limit=-1 как универсальное смягчение: это убирает защиту от исчерпания памяти. Следуйте точным условиям advisory и сначала тестируйте конфигурацию.
- 5Перед изменением runtime сделайте резервную копию и проверьте обновление на staging: протестируйте WordPress/плагины, обмены 1С-Битрикс, расширения Joomla, формы, загрузки, cron и Composer CLI. Подготовьте откат на исправленную поддерживаемую сборку, а не на заведомо уязвимую версию.
- 6Проверьте журналы веб-сервера и приложения на неожиданные multipart POST с PHP_SESSION_UPLOAD_PROGRESS, а также процессы, новые или изменённые файлы и обращения к чувствительным каталогам. Учитывайте, что найденные исследователями IP могут быть shared-анонимизаторами: используйте их как контекст расследования, не блокируйте без проверки. При признаках компрометации изолируйте узел, сохраните доказательства, смените доступные PHP-процессу секреты и восстановите сайт из доверенной копии.
- 7Сканер php2shell-checker от OpenAI может дать предварительную подсказку по версии, видимой в HTTP-заголовках, либо локальному php -v, но результат OK не доказывает наличие исправления, а UNKNOWN не означает безопасность. Он не заменяет проверку фактического SAPI, advisory поставщика и состояния пакетов. WAF или BotProtection могут быть только дополнительным фильтром трафика и не исправляют PHP.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
- PHP: официальный changelog PHP 8 и выпуск 8.5.12
- PHP source: advisory GHSA-w8hw-w9fx-j79w / CVE-2026-109618
- PHP source: advisory GHSA-6wmf-4rv5-p3rp / CVE-2026-109619
- AWS Threat Intelligence: наблюдение эксплуатации до раскрытия
- JFrog Security Research: условия эксплуатации и версии
- OpenAI php2shell-checker: назначение и ограничения проверки версии
- NVD: CVE-2026-109618
- NVD: CVE-2026-109619
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.