Срочное обновление безопасности

PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35 исправляют две критические уязвимости, позволяющие выполнить несанкционированный удалённый код без аутентификации. Всем пользователям PHP настоятельно рекомендуется немедленно обновиться.

Кто в зоне риска: все инсталляции PHP, обслуживающие веб-запросы, включая PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP и LiteSpeed. Наибольший риск представляет mod_php, где подтверждена возможность использования уязвимости через несанкционированный запрос, срабатывающей до запуска любого кода приложения.

Описание уязвимостей

  • RCE через повреждение памяти при истощении, CVE-2026-109618 (GHSA-w8hw-w9fx-j79w): обработка нехватки памяти может прервать PHP, пока внутренние данные запроса инициализированы лишь частично. При последующей очистке запроса некорректные данные могут быть обработаны как валидные.
  • RCE через устаревшее глобальное состояние, CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): состояние, принадлежащее запросу, может сохраниться после освобождения подлежащей ему памяти. При обработке последующего запроса тем же worker-ом может использоваться это устаревшее состояние до его нормального сброса при инициализации.

Как обновиться

  • Обновитесь до PHP 8.5.12, 8.4.27, 8.3.36 или 8.2.35. Исходные коды доступны на странице загрузок. Исходники и бинарники для Windows находятся там же.
  • Дистрибутивы Linux и поставщики LTS получили патчи заранее, поэтому проверьте наличие обновленных пакетов у вашего поставщика.
  • PHP 8.1 и старше больше не получают обновления от проекта PHP. Некоторые дистрибутивы и поставщики LTS предоставляют обратно перенесённые исправления, поэтому свяжитесь с поставщиком или обновитесь до поддерживаемой версии.
  • С учётом серьёзности уязвимостей команда безопасности PHP предоставила минимальные обратно перенесённые патчи для PHP 7.4, PHP 8.0 и PHP 8.1 для помощи тем, кто собирает из исходников или не имеет доступа к поставщику LTS.

Если обновление невозможно немедленно

Обновление — единственное полное решение, но следующие меры снижают уязвимость к конкретным векторам атак (хотя не делают инсталляцию безопасной):

Для CVE-2026-109618 (RCE через истощение памяти):

  • Установите memory_limit=-1, желательно способом, который приложения не смогут переопределить, например php_admin_value в конфиге FPM pool или Apache, и проверьте, чтобы ни один pool, директива или параметр приложения не устанавливали конечный лимит. Это исключит управляемый отказ памяти PHP, но ошибка выделения памяти может всё ещё привести к уязвимому пути.
  • Установите низкий post_max_size. Для приложений без загрузки файлов задайте post_max_size = 8M. Если загрузка необходима, установите post_max_size = 32M. Держите upload_max_filesize ниже post_max_size. Рассмотрите возможность установления лимитов на уровне веб-сервера или прокси для размера декодированного запроса, числа полей ввода, частей multipart, заголовков и глубины вложенности. Эти лимиты должны также охватывать запросы без корректного Content-Length.
  • Используйте лимит контейнера или cgroup в качестве границы доступности, желательно с политикой, убивающей только затронутый worker. Не заменяйте RLIMIT_AS или RLIMIT_DATA, так как они могут привести к уязвимому отказу в выделении памяти.

Для CVE-2026-109619 (RCE через устаревшее глобальное состояние):

  • Установите session.upload_progress.enabled=0 и перезагрузите все worker-ы. Используйте php.ini, конфиг FPM pool или конфиг сервера, который применяется до парсинга запроса. Не полагайтесь на ini_set() или FPM .user.ini. Это блокирует подтверждённые пути сессии, но не другие варианты.
  • На PHP 8.5 установите fatal_error_backtraces=0 и перезагрузите все worker-ы. Это блокирует только подтверждённый путь backtrace при фатальной ошибке.
  • Удалите некорректные или устаревшие параметры, применяемые для каждого запроса, которые выдают диагностику перед инициализацией. Скрытие диагностики через error_reporting, display_errors или @ не помогает.
  • Исправьте достижимые атакующим фатальные ошибки и тайм-ауты выполнения, включая ошибки в callback-ах, обработке загрузок и импорте, а также при очистке.

Полные технические детали содержатся в размещённых выше рекомендациях по безопасности.