Notebookcheck Logo

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

Исходный код PHP на тёмном экране
ⓘ Pixabay / Pexels
Две критические уязвимости в интерпретаторе PHP позволяют выполнять код без аутентификации. В PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35 они исправлены.
PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35 устраняют две критические уязвимости, позволяющие выполнять код без аутентификации, а в некоторых конфигурациях — ещё до запуска кода приложения. Разбираем, что идёт не так в интерпретаторе, какие SAPI наиболее уязвимы и какие временные меры защиты рекомендует 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 поставляет ваш провайдер.

Google LogoAdd as a preferred source on Google
Mail Logo
'
> Обзоры Ноутбуков, Смартфонов, Планшетов. Тесты и Новости > Новости > Архив новостей > Архив новостей за 2026 год, 10 месяц > PHP2Shell: критические уязвимости PHP сильнее всего затрагивают серверы с mod_php
Steffen Zahn, 2026-10-22 (Update: 2026-10-22)