21 октября в 14:00 UTC команда PHP выпустила внеплановые релизы 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Накануне проект предупредил администраторов, что исправляет две критические уязвимости, каждая с оценкой CVSS 4.0 9.2. Цепочку уже называют PHP2Shell.
Что исправлено
- CVE-2026-109618 — повреждение памяти при нехватке памяти (OOM): обработка OOM может прервать PHP, когда данные запроса инициализированы лишь частично, и при очистке они считаются валидными.
- CVE-2026-109619 — «залежавшееся» глобальное состояние: внутренние данные запроса переживают освобождение памяти, и следующий запрос в том же воркере может их использовать.
Обе ошибки позволяют выполнить код удалённо без аутентификации.
Кто затронут
Любая установка, обслуживающая веб-запросы: PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP, LiteSpeed. Наибольший риск — у mod_php: продемонстрирован эксплойт, срабатывающий до выполнения кода приложения. Ветки 8.1 и старше официальных релизов не получат, для 7.4–8.1 опубликованы минимальные бэкпорты.
Что делать
- Обновить сам рантайм PHP и перезапустить все воркеры. Дистрибутивы и LTS-вендоры получили патчи заранее.
- Если обновиться сразу нельзя:
session.upload_progress.enabled = 0в php.ini или конфиге пула, жёсткие лимиты размера запросов на прокси. PHP подчёркивает, что эти меры лишь снижают риск.
Cloudflare включил правила WAF против PHP2Shell для всех клиентов, включая бесплатный план, ещё за несколько часов до публикации.
On October 21 at 14:00 UTC the PHP team shipped out-of-band releases 8.5.12, 8.4.27, 8.3.36 and 8.2.35. A day earlier the project had warned admins that it was fixing two critical flaws, each rated CVSS 4.0 9.2. The chain is already being called PHP2Shell.
What was fixed
- CVE-2026-109618 — corruption via out-of-memory handling: OOM handling can interrupt PHP while request data is only partially initialized, and cleanup then treats it as valid.
- CVE-2026-109619 — stale global state: request-owned internal state survives after its memory is freed, and a later request on the same worker may use it.
Both allow unauthenticated remote code execution.
Who is affected
Any installation serving web requests: PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. mod_php is the highest-risk case — there is a demonstrated exploit that fires before any application code runs. Branches 8.1 and older get no official release; minimal backports were published for 7.4 through 8.1.
What to do
- Update the PHP runtime itself and restart every worker. Distributions and LTS vendors received patches in advance.
- If you can’t update right away: set
session.upload_progress.enabled = 0in php.ini or the pool config and enforce strict request-size limits at the proxy. PHP stresses these only reduce exposure.
Cloudflare enabled WAF rules against PHP2Shell for all customers, Free plan included, several hours before disclosure.