PHP2Shell: критические RCE-уязвимости закрыты экстренным патчем
PHP выпустил экстренные патчи для двух критических RCE-уязвимостей CVE-2026-109618 и CVE-2026-109619. Обновитесь до PHP 8.5.12, 8.4.27, 8.3.36 или 8.2.35 немедленно.
21 октября 2026 года PHP Foundation выпустил экстренные обновления безопасности для четырёх активных веток языка. Два критических бага — CVE-2026-109618 и CVE-2026-109619 — позволяют неаутентифицированному злоумышленнику выполнить произвольный код на сервере, причём в случае Apache с mod_php атака срабатывает до запуска кода самого приложения. Если вы используете PHP, патч нужно поставить прямо сейчас.
Что случилось
Команда разработки PHP выпустила экстренные обновления безопасности, устраняющие PHP2Shell — две критические уязвимости (CVE-2026-109618 и CVE-2026-109619), которые позволяют злоумышленникам выполнять код удалённо на веб-серверах без какой-либо аутентификации.
21 октября, чуть раньше объявленного времени 14:00 UTC, вышли релизы PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35, закрывающие две уязвимости с рейтингом CVSS v4.0 9.2.
Технические детали уязвимостей
CVE-2026-109618 — RCE через OOM corruption
OOM (out-of-memory — исчерпание памяти): обработка ситуации нехватки памяти может прервать PHP в момент, когда внутренние данные запроса инициализированы лишь частично. Очистка после запроса может затем обращаться к невалидным данным как к корректным.
Проще говоря: если запрос достигает лимита memory_limit в «неправильный» момент, PHP оставляет частично инициализированные структуры в памяти и позже работает с ними как с нормальными, что ведёт к повреждению памяти и RCE (Remote Code Execution — удалённое выполнение кода).
CVE-2026-109619 — RCE через stale global state
Use-after-free — обращение к уже освобождённой памяти: внутреннее состояние запроса может сохраняться после того, как его память освобождена. Последующий запрос, обрабатываемый тем же воркером, может использовать это устаревшее состояние до того, как нормальная инициализация сбросит его.
PHP указывает, что под угрозой находятся все установки PHP, обслуживающие веб-запросы, включая PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP и LiteSpeed.
Таблица затронутых версий
| Ветка PHP | Исправлено в |
|---|---|
| 8.5 | 8.5.12 |
| 8.4 | 8.4.27 |
| 8.3 | 8.3.36 |
| 8.2 | 8.2.35 |
| 8.1 и старше | Официального патча нет — версии достигли конца поддержки |
Как уязвимости нашли: ИИ против PHP
История обнаружения уязвимостей показательна с точки зрения роли ИИ в современной кибербезопасности.
PHP Foundation фиксирует: компания Calif начала аудит 30 июля 2026 года, и уже 11 августа 2026 года исследователь Ryan A из Calif сообщил о безусловном удалённом выполнении кода. OpenAI независимо сообщила о той же первопричине в тот же день.
Wiz сообщает об обнаружении первой уязвимости 19 августа 2026 года с использованием Wiz Atlas, Gemini 4 Argon и GPT-5.6 Sol. Уже 20 августа было подтверждено выполнение кода против Drupal, 21 августа — против WordPress.
timeline
title Хронология обнаружения и закрытия PHP2Shell
2024 : Первый внешний аудит PHP (Quarkslab)
: Обнаружены первые признаки OOM-проблемы
30 июл 2026 : Calif начинает аудит в рамках Patch the Planet
11 авг 2026 : Calif и OpenAI независимо сообщают об RCE
24 авг 2026 : Wiz сообщает о дополнительных векторах атаки
18 сен 2026 : OpenAI сообщает о новых векторах
20 окт 2026 : CVE-IDs утекают в сеть — дата релиза перенесена
21 окт 2026 : Выход PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35
Провал координированного раскрытия и утечка
Координированное раскрытие информации (coordinated disclosure) прошло гладко — до последнего момента.
20 октября в ~15:00 UTC идентификаторы CVE начали распространяться на форумах и в социальных сетях с некорректным рейтингом CVSS 10.0 (реальный — 9.2) и неверным временем релиза. PHP Foundation был вынужден опубликовать предварительное уведомление досрочно и перенести релиз с 22 на 21 октября.
Команда PHP security мониторила появляющиеся PoC-эксплойты и не выявила функциональных рабочих эксплойтов на момент публичного раскрытия.
PHP Foundation сообщила: proof-of-concept код циркулировал после утечки, но команда безопасности PHP «не выявила функциональных эксплойтов на момент релиза/публичного раскрытия».
Структурный сбой и новая организация безопасности
Фонд открыто признал проблемы с процессом принятия решений: первые признаки OOM-уязвимости были обнаружены ещё в 2024 году в ходе аудита Quarkslab, но исправление откладывалось месяцами из-за разногласий внутри команды по поводу обратной совместимости и возможных побочных эффектов.
Конкурирующие варианты исправлений грозили нарушить совместимость, открыть векторы DoS-атак или потребовать изменений в сторонних расширениях, а небольшая команда не могла договориться — работа над патчем тормозила месяцами. PHP Foundation назвал задержку «структурным провалом» своего процесса принятия решений и нехватки ресурсов.
В ответ PHP Foundation существенно реорганизовал работу с безопасностью:
- Май 2026 — создана Ecosystem Security Team
- Июль 2026 — Alexandre Daubois присоединился для работы с отчётами об уязвимостях
- Сентябрь 2026 — Daniel Scherzer взял на себя работу по hardening (укреплению безопасности)
- Добавлены инструменты: OpenAI Daybreak Red для валидации отчётов, sanitizer builds и среды воспроизведения
Если немедленное обновление невозможно:
- Для CVE-2026-109618: установите
memory_limit=-1, чтобы приложения не могли его переопределить, держитеpost_max_sizeнизким и ограничьте размер запросов на уровне веб-сервера или прокси. - Для CVE-2026-109619: установите
session.upload_progress.enabled=0и перезапустите все воркеры; на PHP 8.5 также установитеfatal_error_backtraces=0. - Перезапустите Apache, PHP-FPM или другой PHP-сервер после внесения изменений.
Почему это важно для всей отрасли
PHP обслуживает Wikipedia, WordPress-сайты, магазины WooCommerce, сайты на Drupal и витрины Adobe Commerce. По различным оценкам, PHP работает на большей части веба — масштаб проблемы колоссальный.
Эта история важна по двум причинам. Во-первых, она наглядно показывает, как ИИ-инструменты (Gemini, GPT-5.6, Claude) становятся полноценными участниками процесса поиска уязвимостей в production-коде. Во-вторых, она демонстрирует, насколько критичны прозрачность и ресурсы в работе команд безопасности open-source проектов: без финансирования PHP Foundation у нескольких разработчиков физически не было бы возможности работать над патчем в полную силу.
Действие одно: обновитесь до PHP 8.5.12, 8.4.27, 8.3.36 или 8.2.35 прямо сейчас.