
Уязвимости 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 проверка входа в приложение и ограничения, реализованные в его коде, не перекрывают этот путь. При успешной атаке злоумышленник получает права веб-процесса, но не автоматически права администратора всего сервера.
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 устраняет уязвимое поведение.