PHP выпустила экстренные исправления двух уязвимостей PHP2Shell
Уязвимости PHP2Shell позволяют атаковать сервер без авторизации и выполнить код с правами процесса, который обслуживает запросы.

Команда PHP 21 октября выпустила экстренные обновления. Уязвимость находится в самом PHP, поэтому обновление сайта или его плагинов не заменяет установку исправленной версии среды исполнения.
Уязвимости получили обозначения CVE-2026-109618 и CVE-2026-109619, вместе их называют PHP2Shell. Оценка каждой по шкале CVSS 4.0 составляет 9,2 балла. Под угрозой находятся установки PHP, которые принимают веб-запросы через Apache mod_php, PHP-FPM, php-cgi, FrankenPHP и LiteSpeed. Подтверждённые способы атаки зависят от конфигурации сервера, но проверять и обновлять нужно все затронутые установки.
Одна из показанных атак срабатывает ещё до запуска кода сайта. В Apache mod_php проверка входа в приложение и ограничения, реализованные в его коде, не перекрывают этот путь. При успешной атаке злоумышленник получает права веб-процесса, но не автоматически права администратора всего сервера.

Как работают уязвимости PHP2Shell
CVE-2026-109618 связана с нехваткой памяти во время обработки запроса. PHP может прервать работу, когда внутренние структуры запроса ещё не подготовлены полностью. Затем процедура завершения обращается к некорректному состоянию. Для подтверждённой атаки исследователи использовали разбор составных форм: большое число заголовков, пустые поля загрузки файлов и вложенные имена полей увеличивают расход памяти при обработке.
В Apache mod_php выполнение кода через эту уязвимость подтвердили при стандартных ограничениях PHP на ввод и память. Анализ кода указывает, что PHP-FPM тоже затронут, однако полноценную атаку тем же способом для него не продемонстрировали. При ошибке на ранней стадии PHP-FPM завершает дочерний процесс и иначе проходит последовательность, использованную в атаке на mod_php. PHP-FPM всё равно нужно обновить.
CVE-2026-109619 устроена иначе. Долго работающий процесс PHP может сохранить ссылку на память уже завершённого запроса. Если следующий запрос попадёт в тот же процесс до сброса этого состояния, обращение к старой ссылке может привести к раскрытию данных из памяти или выполнению кода. Подтверждены сценарии для mod_php и PHP-FPM, хотя показанная атака на PHP-FPM требует подходящего действия со стороны приложения.

Среди подтверждённых способов эксплуатации второй уязвимости — обработка сведений о фатальной ошибке в PHP 8.5 и механизм отслеживания загрузки файлов через сессию. Последний включён по умолчанию и не требует, чтобы приложение вызывало session_start(). Возможность атаки зависит от настроек PHP, расширений, поведения приложения и того, обработает ли нужные запросы один процесс.
Исправленные версии и проверка серверов
Администраторов предупредили о критическом выпуске 20 октября, а 21 октября исправления вышли для всех поддерживаемых веток PHP. Если сервер использует пакет от дистрибутива или поставщика с длительной поддержкой, наличие исправления нужно проверять по его уведомлению: номер версии такого пакета может отличаться от номера выпуска проекта PHP.
| Ветка PHP | Исправленная версия |
|---|---|
| 8.2 | 8.2.35 |
| 8.3 | 8.3.36 |
| 8.4 | 8.4.27 |
| 8.5 | 8.5.12 |
Проект уже не выпускает обычные обновления для PHP 8.1 и более старых веток. Для PHP 7.4, 8.0 и 8.1 подготовлены минимальные исправления исходного кода. Владельцам таких установок нужно проверить наличие исправлений у поставщика, собрать доступное исправление из исходников либо перейти на поддерживаемую версию.

Проверьте PHP, который действительно обслуживает веб-трафик. Он может входить в состав панели хостинга, стороннего продукта или старого приложения и отсутствовать в привычном списке компонентов сайта. Обновление пакета PHP для командной строки само по себе не подтверждает, что обновились отдельная служба PHP-FPM или модуль Apache. После установки исправления нужно перезапустить рабочие процессы и убедиться, что все службы, принимающие запросы, используют обновлённый PHP.
Для тех, кто не может обновиться сразу, описаны временные меры. Административная настройка memory_limit=-1 убирает предсказуемый предел памяти, использованный в показанной атаке на CVE-2026-109618, но не исключает другие ошибки выделения памяти. Ограничения размера запросов и составных форм на стороне принимающего сервера тоже снижают риск, но не устраняют уязвимость. Для CVE-2026-109619 можно отключить отслеживание загрузки файлов через сессию, а в PHP 8.5 также fatal_error_backtraces; после изменения настроек рабочие процессы необходимо перезапустить.
Настройки не заменяют обновление. Cloudflare сообщила о ранней активности атакующих и развернула правила веб-экрана для известных способов эксплуатации. Компания watchTowr наблюдала попытки атак, но на момент своего сообщения не видела успешных атак. Правила веб-экрана блокируют известные запросы, а исправленный PHP устраняет уязвимое поведение.


