Обе уязвимости дают выполнить код на сервере по сети, без учётных данных и без действий пользователя; исправления вышли в четырёх ветках PHP.
Описание
Две уязвимости PHP, получившие имя PHP2Shell, опубликованы 21 октября 2026 года. Обе ведут к удалённому выполнению кода и обе получили 9.2 по шкале CVSS 4.0. Код эксплойта быстро оказался в открытом доступе. Вскоре после раскрытия на сетевых ловушках (honeypot) заметили попытки эксплуатации. Сведений об успешных компрометациях за пределами ловушек в исходных данных нет. Записи дважды обновили, 28 и 29 октября.
Первая проблема, CVE-2026-109618, связана с исчерпанием памяти. Она срабатывает при обработке загрузки, которую передают составной формой (multipart) в HTTP-запросе. Дойдя до лимита из конфигурации, PHP прерывает обработку запроса. Часть внутренних структур остаётся неинициализированной. При очистке интерпретатор читает такую память и принимает по ней решения. Несколько способов исчерпать память стабильно ведут к повреждению памяти и выполнению кода.
Вторая, CVE-2026-109619, относится к классу "использование после освобождения" (use-after-free). Глобальное состояние PHP временно указывает на память запроса. Если запрос прерван, память освобождают, а указатели не сбрасывают. Тогда следующие запросы читают устаревшее состояние до полной инициализации. Условия у обеих одинаковые: атака идёт по сети, вход в систему не нужен, участие пользователя не требуется.
Уязвимы все сборки ветки 8.2 вплоть до 8.2.34, а также 8.3.35, 8.4.26 и 8.5.11. По данным Stormshield, исправления вышли в версиях 8.2.35, 8.3.36, 8.4.27 и 8.5.12. В записях CVE исправленная версия не указана, там только диапазоны уязвимых сборок.
Слабости в обеих записях перечислены одинаковые: использование после освобождения, неверная обработка исключительных ситуаций, обращение к неинициализированному указателю. Для эксплуатации достаточно, чтобы сервер принимал загружаемые файлы.
Обходных мер, которые закрывают проблему целиком, нет. Производитель называет два послабления. Первое - отключить в конфигурации функцию отображения прогресса загрузки; индикаторы прогресса на сайте после этого работать перестанут. Второе - отсекать составные запросы с файлами до попадания в PHP, на обратном прокси или на межсетевом экране уровня веб-приложений (WAF). Проверить, не сломает ли это легитимные сценарии, придётся до внедрения.
Настройки такого рода снижают поверхность, но не мешают PHP обработать вредоносный запрос. Через два дня после раскрытия появилась сигнатура для системы предотвращения вторжений (IPS), её выпустили для межсетевых экранов Stormshield Network Security. Правило ищет попытки выполнения кода PHP в составных загрузках. Оно опирается на разбор HTTP-трафика, поэтому требует расшифровки TLS, то есть инспекции SSL. Сигнатура закрывает основные пути из тех, что отмечали в реальных попытках, а не все возможные.
PHP стоит за заметной частью публичных сайтов; в материалах приводится около 70%. Патч должен дойти до хостингов, панелей управления и контейнерных образов, а там версию меняют не мгновенно. В авторах записей - исследователи Wiz и OpenAI вместе с сопровождающими PHP.
После разбора патчей вероятны новые варианты эксплуатации. Пока сигнатуры и правила WAF закрывают лишь те пути, которые уже отмечали в попытках против ловушек. Сколько сайтов успеет обновиться до первых подтверждённых компрометаций, зависит от хостингов, а не от самой PHP.