PHP закрыла 2 критические уязвимости, позволяющие запускать код на сервере

Команда PHP выпустила обновления безопасности для установок, обслуживающих веб-запросы. Наибольший риск — для Apache с mod_php; исправления вышли 21 октября.

Логотип PHP на фоне сети узлов и соединений

Исправления вошли в PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Обе уязвимости получили оценку 9,2 балла по шкале CVSS 4.0. В публикациях об этих ошибках используют общее название PHP2Shell. Затронуты установки с PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP и LiteSpeed, если они обслуживают веб-запросы.

Для mod_php команда PHP продемонстрировала сценарий, в котором запрос без авторизации запускает атаку ещё до выполнения кода приложения. Уязвимость CVE-2026-109618 связана с обработкой нехватки памяти: запрос может прерваться, когда внутренние данные инициализированы лишь частично, а последующая очистка примет некорректные данные за допустимые. При CVE-2026-109619 внутреннее состояние запроса может сохраниться после освобождения выделенной под него памяти. Следующий запрос, который обслужит тот же рабочий процесс, способен обратиться к этому состоянию до обычной инициализации.

Обновление PHP и временные меры

Команда PHP призывает немедленно установить исправленные версии: временные настройки снижают риск лишь для отдельных путей атаки. Дистрибутивы Linux и поставщики версий с длительной поддержкой получили исправления заранее. Пользователям их пакетов следует проверить наличие обновлений у поставщика. Исходный код, а также исходники и готовые сборки для Windows размещены на странице загрузок PHP.

Логотип PHP, критические уязвимости, серверная безопасность
Источник изображения: bleepingcomputer

PHP 8.1 и более ранние версии больше не получают обновлений от команды проекта. Для PHP 7.4, 8.0 и 8.1 она подготовила минимальные исправления исходного кода. Они предназначены в том числе для тех, кто собирает PHP самостоятельно или не имеет доступа к поставщику с длительной поддержкой. Некоторые такие поставщики выпускают исправления для старых версий самостоятельно. Сопровождаемый добровольцами репозиторий rpms.remirepo.net не получит обновление в день релиза.

Код PHP с синтаксисом и комментариями
Источник изображения: bleepingcomputer

Если сервер нельзя обновить сразу, для CVE-2026-109618 разработчики советуют установить memory_limit=-1 так, чтобы приложение не могло переопределить настройку. Для приложений без загрузки файлов они предлагают post_max_size=8M, а для приложений с загрузкой файлов — post_max_size=32M; значение upload_max_filesize должно оставаться ниже. Эти меры не исключают сбоя выделения памяти по другим причинам, который тоже может привести к уязвимому сценарию.

Для CVE-2026-109619 команда PHP рекомендует отключить session.upload_progress.enabled и перезапустить все рабочие процессы. На PHP 8.5 она также советует установить fatal_error_backtraces=0 и снова перезапустить процессы. Обе настройки перекрывают только подтверждённые пути атаки. Изменение через ini_set() или настройки FPM в .user.ini не подходит для отключения отслеживания загрузки: параметр должен действовать до разбора запроса.

Команда PHP предупредила о предстоящем выпуске исправлений 20 октября и назначила релиз на следующий день. Для ветки PHP 8.2 нынешнее обновление вышло незадолго до завершения её поддержки: после 31 декабря 2026 года проект больше не будет выпускать для неё исправления безопасности.

Марта Баринова
Редактор новостного отдела, специализирующийся на аналитике программного обеспечения, стриминговых сервисов и изменениях в политике глобальных технологических платформ. В своих материалах Марта подробно освещает обновления Windows, функциональные изменения в Spotify и Google, а также исследует вопросы антимонопольного регулирования магазинов приложений. Автор более 140 публикаций, помогающих пользователям ориентироваться в быстро меняющемся ландшафте цифровых сервисов.

    Оставить комментарий