21 октября 2026 года сообщество разработчиков и специалистов по безопасности обратило внимание на две критические уязвимости удаленного выполнения кода (RCE) в языке программирования PHP, получившие общее название PHP2Shell. Уязвимости с идентификаторами CVE-2026-109618 и CVE-2026-109619 были оценены экспертами по шкале CVSS v4.0 в 9,2 балла. Эксплуатация позволяет злоумышленникам выполнять произвольный код на сервере без необходимости аутентификации. Разработчики PHP оперативно выпустили исправления для поддерживаемых веток: 8.2.35, 8.3.36, 8.4.27 и 8.5.12. При этом для устаревших версий, включая PHP 5.6, официальных патчей не предусмотрено.
Механизм работы атак базируется на особенностях работы интерпретатора Zend Engine. Уязвимость CVE-2026-109618 связана с обращением к неинициализированным указателям при исчерпании лимита памяти (memory_limit). Если запрос превышает установленный порог, система аварийно прерывает выполнение через функцию longjmp(), оставляя структуры парсера в некорректном состоянии. Последующая очистка памяти может привести к выполнению кода атакующего. Вторая уязвимость, CVE-2026-109619, эксплуатирует сохранение глобального состояния после фатальных ошибок или таймаутов. В частности, механизм отслеживания загрузки файлов (session.upload_progress), который включен по умолчанию в PHP 5.6, позволяет сохранить «грязные» указатели в памяти, которые используются в следующем запросе.
Наибольший риск несут конфигурации, использующие модуль mod_php в связке с веб-сервером Apache. Исследователи отмечают, что в таких сценариях атака может срабатывать еще до выполнения кода приложения. Дополнительный фактор риска создает настройка параметра MaxConnectionsPerChild в Apache. Если этот параметр установлен на стандартное значение (например, 1000), один и тот же процесс веб-сервера обрабатывает множество запросов подряд. Ошибка в одном запросе оставляет следы в памяти процесса, которые могут быть использованы для атаки в последующих 999 запросах.
После публикации информации о брешах эксперты «Лаборатории Касперского» и разработчики PHP рекомендовали владельцам инфраструктуры незамедлительно обновлять системы. Под угрозой находятся все непропатченные версии, включая PHP-FPM, Apache с mod_php, php-cgi и другие среды выполнения. Для систем, работающих на устаревших версиях, таких как PHP 5.6, которые часто используются в высоконагруженных энтерпрайз-проектах, полный переход на новые версии может быть невозможен из-за архитектурных ограничений или отсутствия бэкпортов. В таких случаях рекомендуется применять временные меры защиты.
Одним из примеров защиты легаси-систем является эшелонированная оборона на уровне инфраструктуры. В сценариях, где обновление кода невозможно, специалисты используют промежуточные слои для фильтрации вредоносного трафика. Например, в связке Varnish, Apache и Docker можно настроить ограничения на уровне контейнеров и групп управления ресурсами (cgroups). Также критически важно пересмотреть настройки веб-сервера: отключение директивы session.upload_progress, увеличение лимитов памяти или их жесткое ограничение, а также снижение значения MaxConnectionsPerChild для изоляции процессов. Эти меры позволяют снизить вероятность успешной эксплуатации уязвимостей, даже если сам интерпретатор PHP остается незащищенным от новых векторов атаки.