PHP2Shell: критические уязвимости PHP сильнее всего затрагивают серверы с mod_php

PHP перенесла выпуск обновлений безопасности на среду, 21 октября, 14:00 UTC после того, как днем ранее сведения о двух уязвимостях попали на Hacker News. Исправления включены в PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Обе ошибки находятся в самом интерпретаторе, а не в CMS. В бюллетенях PHP для CVE-2026-109618 и CVE-2026-109619 каждая уязвимость получила оценку 9,2 по CVSS 4.0; подтверждено удаленное выполнение кода без аутентификации с привилегиями рабочего процесса веб-сервера.
Обработка нехватки памяти оставляет память частично инициализированной
Первая уязвимость связана с тем, как PHP обрабатывает ошибки нехватки памяти. При OOM интерпретатор использует longjmp() для выхода из текущего контекста, даже если память запроса в этот момент инициализирована лишь частично. Затем процедура завершения работы считывает это состояние как корректное. Злоумышленник может вызвать OOM с помощью multipart-запроса, не превышающего post_max_size, например за счет неограниченного числа заголовков в каждой части, пустых файловых полей, которые не учитываются в max_file_uploads, или вложенных имен полей. Исправление заменяет longjmp() на мягкую обработку OOM в ближайшей безопасной точке виртуальной машины и жесткий вызов _exit() при превышении второго, более высокого порога.
Вторая уязвимость связана с глобальным состоянием, которое сохраняется после завершения запроса. Если фатальная ошибка прерывает операцию до сброса ее состояния, глобальное поле продолжает указывать на освобожденную память в куче. Когда следующий запрос в том же рабочем процессе считывает это значение до штатной инициализации, происходит обращение к освобожденной памяти. PHP указывает два подтвержденных пути эксплуатации: настройка fatal_error_backtraces в PHP 8.5 и механизм отслеживания хода загрузки файлов через сессии, который включен по умолчанию и не требует вызова session_start() в приложении.
Почему mod_php наиболее уязвим
Apache с mod_php вызывает процедуру завершения запроса, даже если запуск обработки запроса уже завершился сбоем. Достаточно нехватки памяти при разборе тела запроса в PHP, и никакой код приложения при этом выполнять не требуется. PHP подтвердила полноценное выполнение кода при использовании mod_php со стандартными ограничениями памяти и входных данных. PHP-FPM завершает дочерний процесс при сбое запуска обработки запроса, что блокирует прямой путь эксплуатации. Для второй уязвимости PHP все же подтвердила возможность эксплуатации в обычном пуле FPM, хотя она зависит от наличия подходящей операции в приложении. Анализ исходного кода позволяет предположить, что FrankenPHP ведет себя как mod_php, а LSAPI потенциально уязвим при определенных условиях. Высокая сложность атаки в векторе CVSS отражает влияние сборки PHP и структуры кучи на надежность эксплуатации.
Попытки эксплуатации и роль ИИ
watchTowr сообщает, что наблюдает активные попытки эксплуатации обеих уязвимостей, а Cloudflare рассказала The Hacker News, что зафиксировала первые атаки еще до выхода исправлений. Пока ни одного успешного взлома не подтверждено. Тем не менее государственные сервисы Нидерландов, включая DigiD и MijnOverheid, были отключены в качестве меры предосторожности, а британский NCSC рекомендует отключать от сети системы без исправлений, если других вариантов нет.
Wiz Research обнаружила ошибки и сообщила о них 24 августа. По данным Wiz, Gemini 4 Argon и GPT-5.6 Sol помогали в поиске уязвимостей, разработке эксплойтов и проверке исправлений, особенно в адаптации эксплойта под каждую цель. Wiz также отмечает помощь OpenAI и Calif в обнаружении уязвимостей и координации работы. Это согласуется с тем, что Anthropic недавно писала о самокопирующемся ИИ, атакующем дешевые ТВ-приставки, где модели также снижают порог для проведения атак.
Что администраторам следует сделать сейчас
Обновление — единственный способ полностью устранить уязвимости. Разработчики дистрибутивов Linux и поставщики LTS-версий получили исправления заранее и часто переносят их в пакеты со старыми номерами версий, поэтому ищите идентификаторы CVE в журнале изменений, а не ориентируйтесь на строку версии. Для неподдерживаемых веток 7.4, 8.0 и 8.1 доступны лишь минимальные исправления, перенесенные в исходный код. Если вы не можете обновиться немедленно, PHP рекомендует на уровне администрирования установить memory_limit=-1, поскольку именно предсказуемый лимит памяти на запрос делает подтвержденный OOM-эксплойт работоспособным. Добавьте session.upload_progress.enabled=0, а в PHP 8.5 — fatal_error_backtraces=0, затем перезапустите все рабочие процессы. Если ваше приложение не использует multipart-формы, блокируйте их на фронтенде. Ни одна из этих настроек не устраняет уязвимости полностью. Если вы используете виртуальный хостинг или NAS с веб-сервером, проверьте, какую версию PHP поставляет ваш провайдер.
Источник(и)
Бюллетень безопасности PHP: RCE через повреждение памяти при OOM (CVE-2026-109618)
Бюллетень безопасности PHP: RCE через устаревшее глобальное состояние (CVE-2026-109619)
Wiz Research: PHP2Shell — ИИ обнаруживает критические уязвимости RCE
NCSC: Критическая проблема безопасности в PHP
watchTowr: Попытки эксплуатации PHP2Shell
The Hacker News: PHP выпускает экстренные исправления двух критических уязвимостей






