Критические уязвимости в PHP (CVE-2026-109618 и CVE-2026-109619), известные как PHP2Shell
⚠️ Экстренное уведомление
21 октября 2026 года команда разработки PHP выпустила экстренное обновление безопасности, закрывающее две критические уязвимости в ядре интерпретатора — CVE-2026-109618 и CVE-2026-109619, получившие неофициальное название «PHP2Shell».
Обе уязвимости относятся к классу RCE (Remote Code Execution): при успешной атаке злоумышленник может выполнить произвольный код на сервере без какой-либо аутентификации. Оценка по шкале CVSS v4.0 — 9.2 из 10 ( «критический» уровень).
Инструмент для эксплуатации (PoC) уже находится в открытом доступе. По оценкам экспертов, массовые атаки могут начаться в течение нескольких часов после публикации патчей. Промедление с обновлением создаёт прямую угрозу компрометации вашего сайта.
Что произошло и чем это опасно
Уязвимости находятся не в 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).
Временная защита, если обновление невозможно прямо сейчас
Если вы не можете обновить PHP немедленно, используйте следующие меры предосторожности. Они основаны на данных об утёкшем PoC и рекомендациях исследователей.
Отключение механизма upload_progress в php.ini
Наиболее прямая временная мера — отключить функцию отслеживания прогресса загрузки, которая задействуется в цепочке эксплуатации:
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. Через панель управления
-
Перейдите в раздел «Конфигурация ПО».
-
На панели инструментов нажмите кнопку «Обновить».
-
Отметьте пункты «Обновить список доступного ПО» и «Обновить ПО», затем запустите обновление.
Способ 2. Через командную строку (SSH)
Выполните команду для вашей операционной системы:
Для Debian/Ubuntu (apt):
apt install isp-php83
Для RHEL/CentOS/AlmaLinux (yum/dnf):
где 83 — номер версии PHP. Пакеты имеют вид isp-php<версия> (например, isp-php82, isp-php84, isp-php85). Установите пакет для той версии, на которой должен работать ваш сайт.
После обновления: перезапустите службы
Чтобы изменения вступили в силу, перезапустите веб-сервер и PHP-FPM. Это можно сделать через панель Ispmanager: «Все разделы» → «Управление сервером» → «Службы» — или через командную строку:
Веб-сервер:
systemctl restart httpd httpd-isp*
# Для Debian-систем
systemctl restart apache2 apache2-isp
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