Критические уязвимости в PHP (CVE-2026-109618 и CVE-2026-109619), известные как PHP2Shell

Что произошло и чем это опасно

Уязвимости находятся не в CMS, плагине или шаблоне, а в самом интерпретаторе PHP. Это значит, что под угрозой находятся любые сайты и приложения на PHP: HostCMS, WordPress, WooCommerce, Drupal, самописные проекты.

Согласно данным из открытых источников, уязвимости связаны с обработкой запросов multipart/form-data и механизмом отслеживания прогресса загрузки файлов (session.upload_progress) в ядре PHP. Это ошибки классов use-after-free и повреждения памяти, поэтому их нельзя исправить на уровне кода приложения — единственное полное решение — обновить PHP на сервере.

Атака работает без аутентификации: злоумышленнику достаточно сетевого доступа к PHP-приложению, чтобы выполнить произвольный код от имени процесса PHP. В утёкшем демонстрационном видео эксплойт показан в действии на серверах под управлением WordPress, MediaWiki, phpBB, Magento, Joomla, Laravel, Symfony, Drupal и WHMCS.

Какие версии PHP уязвимы, а какие — безопасны

Официальные исправления выпущены для поддерживаемых веток PHP. Проверьте, какая версия используется на вашем сервере, и сравните с таблицей ниже.

Ветка PHP Уязвимые версии Исправленная версия Статус поддержки
PHP 5.x Все версии — Не исправлено
PHP 7.3 и старше Все версии — Не исправлено
PHP 7.4 Все версии до патча Патчи в исходниках (backport) EOL, патч в исходниках
PHP 8.0 Все версии до патча Патчи в исходниках (backport) EOL, патч в исходниках
PHP 8.1 Все версии до патча Патчи в исходниках (backport) EOL, патч в исходниках
PHP 8.2 8.2.0 – 8.2.34 8.2.35 Поддерживается
PHP 8.3 8.3.0 – 8.3.35 8.3.36 Поддерживается
PHP 8.4 8.4.0 – 8.4.26 8.4.27 Поддерживается
PHP 8.5 8.5.0 – 8.5.11 8.5.12 Поддерживается

Для PHP 7.4, 8.0 и 8.1 выпущены минимальные патчи в исходных кодах (backport), однако эти ветки уже сняты с официальной поддержки и не получают регулярных обновлений безопасности. Для PHP 7.3 и более старых версий исправлений нет — они остаются уязвимыми.

Что делать: обновите PHP и HostCMS

1. Обновите HostCMS до версии 7.1.7

Уязвимости в PHP затрагивают все PHP-приложения, но для корректной и безопасной работы на современных версиях PHP необходима актуальная версия CMS. HostCMS 7.1.7 официально поддерживает PHP 8.5. Обновление HostCMS до последней версии обеспечит совместимость с исправленным PHP и позволит использовать все актуальные механизмы безопасности.

Если ваш сайт работает на старой версии HostCMS, настоятельно рекомендуем выполнить обновление до 7.1.7. Это не только вопрос безопасности PHP, но и гарантия стабильной работы сайта на поддерживаемой ветке интерпретатора. Если поддержка для лицензии истекла, продлите ее в своем личном кабинете.

2. Проверьте версию PHP

Узнайте, какая версия PHP используется на вашем сайте, информация выводится на главной странице центра администрирования HostCMS в правом нижнем углу в блоке «Системные характеристики», например Версия PHP: 8.4.27. Там же должно быть указано Версия HostCMS: 7.1.7.

3. Обновите PHP до исправленной версии

Установите последнюю версию PHP в рамках вашей ветки: 8.2.35, 8.3.36, 8.4.27 или 8.5.12. Если вы используете PHP 8.1 или более старую версию, запланируйте переход на поддерживаемую ветку (минимум PHP 8.2, рекомендуется PHP 8.4 или 8.5).

Для пользователей Ispmanager: обновлённые сборки PHP уже подготовлены для версий 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 и 8.5. Рекомендуем обновиться как можно скорее.

Временная защита, если обновление невозможно прямо сейчас

Важно: временные меры не устраняют уязвимость, а лишь снижают риск эксплуатации до момента установки патча. Единственное полное решение — обновление PHP.

Если вы не можете обновить PHP немедленно, используйте следующие меры предосторожности. Они основаны на данных об утёкшем PoC и рекомендациях исследователей.

Отключение механизма upload_progress в php.ini

Наиболее прямая временная мера — отключить функцию отслеживания прогресса загрузки, которая задействуется в цепочке эксплуатации:

; В файле php.ini (для всех версий PHP)
session.upload_progress.enabled = Off
session.use_strict_mode = 1

После изменения php.ini обязательно перезапустите PHP-FPM и веб-сервер (Nginx/Apache). Учтите, что директива session.upload_progress.enabled имеет тип PHP_INI_PERDIR и не может быть изменена через ini_set() во время выполнения — только через php.ini, конфигурацию пула FPM или настройки сервера.

Блокировка multipart-запросов на уровне Nginx или Apache

Можно ограничить приём multipart/form-data на веб-сервере для тех маршрутов, где загрузка файлов не требуется. Это создаёт дополнительный барьер, хотя и не является полноценной заменой патчу.

Пример для Nginx (блокировка multipart POST на уровне location):

# В блоке server { ... }
if ($http_content_type ~* "^multipart") {
    return 403;
}

Пример для Apache (.htaccess):

# Блокировка multipart POST/PUT/PATCH
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(POST|PUT|PATCH)$
RewriteCond %{CONTENT_TYPE} ^multipart/form-data [NC]
RewriteRule ^ - [F,L]

Внимание: эти правила заблокируют легитимные загрузки файлов и отправку форм с файлами. Применяйте их только к разделам, где загрузка не нужна, и обязательно тестируйте на тестовой копии сайта. Для сложных случаев можно использовать ModSecurity с правилом, блокирующим поле PHP_SESSION_UPLOAD_PROGRESS.

Обновление PHP через Ispmanager 6

Если ваш сервер управляется панелью Ispmanager 6, вы можете обновить PHP как через веб-интерфейс, так и через командную строку.

Способ 1. Через панель управления
  1. Перейдите в раздел «Конфигурация ПО».
  2. На панели инструментов нажмите кнопку «Обновить».
  3. Отметьте пункты «Обновить список доступного ПО» и «Обновить ПО», затем запустите обновление.
Способ 2. Через командную строку (SSH)

Выполните команду для вашей операционной системы:

Для Debian/Ubuntu (apt):

apt update
apt install isp-php83

Для RHEL/CentOS/AlmaLinux (yum/dnf):

yum install isp-php83

где 83 — номер версии PHP. Пакеты имеют вид isp-php<версия> (например, isp-php82, isp-php84, isp-php85). Установите пакет для той версии, на которой должен работать ваш сайт.

После обновления: перезапустите службы

Чтобы изменения вступили в силу, перезапустите веб-сервер и PHP-FPM. Это можно сделать через панель Ispmanager: «Все разделы» → «Управление сервером» → «Службы» — или через командную строку:

Веб-сервер:

# Для RHEL-систем
systemctl restart httpd httpd-isp*

# Для Debian-систем
systemctl restart apache2 apache2-isp

PHP-FPM:

systemctl restart php-fpm php-fpm* php<версия>-fpm

Если сайт работает на PHP 7.3, 5.6 или более старой версии, исправлений для них пока нет — они сняты с поддержки и остаются уязвимыми. На период до выхода патчей рекомендуется по возможности изолировать такие сайты от публичного интернета (VPN, WAF) или как можно скорее перевести их на поддерживаемую ветку PHP.

Краткий чек-лист

Сделайте немедленно
  • Проверьте версию PHP на сервере.
  • Обновите HostCMS до 7.1.7 (поддержка PHP 8.5).
  • Обновите PHP до 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12.
  • Обновите пакеты Ispmanager и перезапустите службы.
Если обновление откладывается
  • Отключите session.upload_progress.enabled в php.ini.
  • Заблокируйте multipart-запросы на Nginx/Apache там, где они не нужны.
  • Тестируйте временные меры на копии сайта — они могут нарушить загрузку файлов.
  • Не откладывайте обновление PHP: только патч устраняет уязвимость полностью.

22.10.2026