CVE-2026-109619: воркер PHP помнит чужой запрос
Вторая критическая ошибка того же октябрьского релиза: глобальное состояние запроса переживает освобождение памяти, и следующий запрос на том же воркере его читает. Исправление в тех же версиях, что и для CVE-2026-109618.
CVE-2026-109619 вышла в один день с ошибкой про нехватку памяти, и их легко склеить в одну новость. Это разные поломки. Здесь PHP не падает по лимиту. Он освобождает память запроса, но оставляет указатели на неё в глобальных переменных. Следующий HTTP-запрос, который попал на тот же воркер, начинает работу с чужими данными, ещё до того как интерпретатор заново всё проинициализирует.
Простыми словами
Представьте официанта, который не убрал со стола счёт предыдущего гостя и несёт его следующему. Гость может дописать в этот счёт что угодно. Воркер PHP обслуживает запросы один за другим. Если после фатальной ошибки в глобальных переменных остался «счёт», новый запрос его подхватывает. Подтверждено выполнение кода без входа: на mod_php - через путь с фатальной ошибкой и распечаткой стека, на mod_php и FPM - через жизненный цикл сессии. Оценка в бюллетене PHP - 9.2.
Что именно сломано
Часть состояния запроса живёт в глобальных переменных процесса, а не в памяти, которая гарантированно сбрасывается между запросами. После освобождения эта память уже не принадлежит запросу, но указатель ещё стоит. Это классическая ошибка использования после освобождения, только на уровне служебных структур PHP, а не вашего кода на сайте. Поэтому «у нас нет опасных функций в проекте» здесь не аргумент: до вашего проекта выполнение не доходит.
Исправление в тех же сборках: 8.5.12, 8.4.27, 8.3.36, 8.2.35. Пока воркер не перезапущен, он продолжает работать со старым кодом. PHP 8.1 и старше снова без релиза. Отдельный нюанс: даже после этого патча остаётся CVE-2026-115560, если включён прогресс загрузки в сессии. Обновление 21 октября её не закрывает.
Что сделать
- Поставить сборку от 21 октября и убедиться, что php-fpm или Apache реально перечитались. Дата файла пакета и вывод php -v должны совпасть.
- Выключить session.upload_progress.enabled, пока нет отдельного исправления третьей ошибки. Это рекомендация самого PHP, не костыль из чата.
- Если на сервере уже были странные файлы или процессы до обновления, патч их не удаляет. Это уже разбор инцидента, а не «поставили и забыли».
Связанные услуги Lexora
Нужно понять, жив ли ещё старый воркер
Панель хостинга часто показывает «обновлено», пока процесс ещё старый. Проверим версию и следы, которые патч сам не стирает.