Команда разработчиков PHP только что выпустила PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35 для устранения двух критических уязвимостей, которые могут позволить неавторизованным злоумышленникам выполнить удаленный код. Команда настоятельно рекомендует всем немедленно обновиться и заявляет, что полных обходных путей (митигаций) не существует.

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

 Примечание: Это развивающаяся история, и мы будем обновлять материал по мере поступления новой информации.

#Уязвимости

Команда PHP оценивает риски как наивысшие для mod_php, где у них есть рабочий эксплойт, срабатывающий по неавторизованному запросу до запуска какого-либо кода приложения. Вот эти два CVE:

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

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

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

Из-за высокой степени серьезности команда безопасности PHP также опубликовала минимальные бэкпорты исходного кода для PHP 7.4, PHP 8.0 и PHP 8.1 для тех, кто собирает PHP из исходного кода без помощи LTS-вендора.

#Laravel Cloud, Forge, Vapor и Envoyer

Laravel публикует статус для каждой из своих платформ в разделе обновлений о реакции на критическую уязвимость PHP. По состоянию на 23:26 UTC 21 октября:

#Laravel Cloud

Laravel пропатчил все запущенные на Cloud приложения прямо на месте с помощью обновлений безопасности PHP и Node.js. Теперь приложения работают на PHP 8.5.12, 8.4.27, 8.3.36 или 8.2.35, в зависимости от используемой ими версии. Повторный деплой не требуется, развертывания возобновлены, а новые деплои используют обновленные базовые образы.

#Laravel Forge

Серверы в Forge требуют ручного обновления:

  • На PHP 8.2, 8.3, 8.4 или 8.5 откройте каждый сервер в Forge и нажмите  Update PHP. В Laravel отмечают, что из-за высокого спроса обновление может занять больше времени, чем обычно.
  • Если это не помогло, обновите PHP по протоколу SSH, следуя руководству Forge. Запустите  php -v  на сервере, чтобы убедиться, что он пропатчен.
  • Серверы под управлением Ubuntu 20.04 или более старых версий не могут получить это обновление. Создайте новый сервер на поддерживаемой версии Ubuntu и перенесите на него свои сайты. Laravel рекомендует выключить старый сервер до завершения миграции.
  • В Forge нет патчей для PHP 8.0 или 8.1. Обновитесь до PHP 8.2 или новее.
  • Forge не обновляет Node.js автоматически, поэтому вам нужно обновить его на каждом сервере, где он используется.

#Laravel Vapor

Пропатченные рантаймы PHP уже доступны на Vapor, но вам потребуется самостоятельно развернуть приложения:

  • Приложениям на нативном рантайме с PHP 8.2 или выше требуется повторный деплой.
  • Приложениям на кастомном рантайме или рантайме с Docker-образом требуется полноценный новый деплой (а не просто повторное развертывание).
  • На Vapor нет патчей для PHP 8.0 или 8.1. Обновитесь до PHP 8.2 или новее.

#Laravel Envoyer

Envoyer снова в сети, деплои выполняются. Проверки работоспособности (Health checks) пока не восстановлены. В Laravel говорят, что для этого требуется дополнительное обновление PHP, с которым они разберутся отдельно.

#Если вы не можете обновиться прямо сейчас

Обновление — единственное полноценное исправление. В рекомендациях по безопасности перечислены настройки, снижающие риски для конкретных векторов атак, однако команда PHP четко дает понять, что они не делают систему полностью защищенной.

Для CVE-2026-109618 (повреждение памяти при OOM):

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

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

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

#Если у вас старая версия Laravel

Уже более десяти лет Laravel Shift является надежным сервисом в сообществе Laravel. Это самый быстрый и тщательный способ обновить ваше приложение на Laravel.

#Дополнительные материалы

Все подробности приведены в бюллетене безопасности PHP и двух упомянутых выше бюллетенях на GitHub. Обновите свои серверы как можно скорее.