Уязвимости PHP2Shell дают злоумышленникам полный контроль над сервером одним запросом
В ядре PHP обнаружены две критические уязвимости, позволяющие злоумышленникам захватить управление сервером одним специальным запросом. Для защиты от удаленного выполнения кода необходимо срочно обновить интерпретатор до последних стабильных сборок, так как сетевые фильтры не заменяют исправление ошибки в самом коде.
В ядре языка программирования PHP обнаружены две серьезные ошибки, получившие общее название PHP2Shell. Злоумышленники могут использовать их для удаленного выполнения кода (RCE) на веб-сервере. По оценке CVSS 4.0, обе уязвимости имеют максимальный балл 9,2 из 10, что указывает на высокий уровень риска. Для атаки не требуются учетные данные или действия жертвы: достаточно отправить один специально сформированный запрос формата multipart/form-data.
Как работают ошибки
Уязвимости затрагивают механизм обработки памяти в PHP. Они влияют на все системы, где PHP обрабатывает веб-запросы, включая серверы PHP-FPM, модуль Apache mod_php и php-cgi.
- CVE-2026-109618: Связана с обработкой памяти при нехватке ресурсов. Если обработка сложного запроса прерывается из-за исчерпания лимита оперативной памяти (OOM), часть данных остается неинициализированной. Атакующий может обратиться к этой области памяти и выполнить собственный код.
- CVE-2026-109619: Ошибка типа «use-after-free» (использование освобожденной памяти). После завершения запроса PHP продолжает ссылаться на уже выделенную, но затем освобожденную область памяти. Это можно эксплуатировать через модуль
session.upload_progress, который включен по умолчанию в большинстве конфигураций.
Эксплуатация CVE-2026-109619 через стандартный модуль сессий означает, что уязвимы даже минимально настроенные веб-приложения, которые не используют нестандартные плагины или внешние сервисы для управления состоянием пользователя.
Какие версии под угрозой и как обновиться
Все версии PHP ниже указанных в списке содержат эти ошибки. Администраторам необходимо срочно обновить интерпретатор до последних стабильных сборок:
- PHP 8.5: требуется версия 8.5.12 или новее;
- PHP 8.4: требуется версия 8.4.27 или новее;
- PHP 8.3: требуется версия 8.3.36 или новее;
- PHP 8.2: требуется версия 8.2.35 или новее.
Для пользователей оборудования «Континент» предусмотрены дополнительные меры защиты на уровне сетевого периметра:
- В продукте «Континент Web» необходимо обновить базу данных сигнатур до версии 2.7.1.101 или выше.
- В NGFW «Континент 4» следует активировать сигнатуры с идентификаторами: 4007678, 4007679, 4007680, 4007684, 4007685, 4007686, 4007687.
Важно понимать, что фильтрация трафика на границе сети не заменяет патч в самом ядре PHP. Обновление интерпретатора остается обязательным шагом.
Признаки успешной атаки
Если сервер уже подвергался атаке, следы можно найти в логах и файловой системе. Отдельные признаки могут быть ложными срабатываниями, поэтому их нужно оценивать комплексно:
- Аномалии в журналах: Рядом по времени появляются сообщения об исчерпании памяти (
Allowed memory size exhausted), превышении времени выполнения (Maximum execution time exceeded) или сбоях сегментации (segfault,SIGSEGV). За ними часто следуют повторные запросы от того же источника. - Необычные HTTP-запросы: В логах веб-сервера фиксируются POST-запросы с аномально большим количеством заголовков, пустыми файловыми полями или вложенными именами полей (nested field names).
- Изменения в файловой системе: В каталогах сайтов, CMS, директориях загрузок, кэша и сессий появляются новые или измененные файлы. Важно проверять не только файлы с расширением
.php, но и другие типы. Сравнение с эталонной копией той же версии поможет выявить чужеродные объекты. - Подмена конфигураций: В файлах
.htaccess,.user.ini,php.iniили настройках PHP-FPM обнаруживаются подозрительные изменения, особенно в директивахauto_prepend_fileиauto_append_file. Эти параметры позволяют автоматически загружать вредоносный код при каждом запросе. - Трассировка доступа: Появление новых администраторов CMS, неизвестных SSH-ключей, заданий cron или системных таймеров (
systemd) указывает на попытку закрепиться в системе (persistence).
При подозрении на компрометацию начинать расследование стоит с анализа процессов, файлов и сетевых соединений пользователя, от имени которого работает PHP (для PHP-FPM — это пользователь пула), а затем проверить наличие признаков повышения привилегий.
Подтверждение: securitycode.ru