PHP выпустила экстренные исправления двух уязвимостей PHP2Shell

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.28.2.35
8.38.3.36
8.48.4.27
8.58.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 устраняет уязвимое поведение.

Опубликовано:
Марта Баринова