Новая критическая уязвимость в PHP (CVE-2026-109618, CVE-2026-109619) успеш-но детектируется продуктами ПМ
Уязвимости получили идентификаторы CVE-2026-109618 и CVE-2026-109619 и общее название php2shell. Обе эксплуатируют один и тот же дефект обработки аварийных состояний в ядре интерпретатора и имеют одинаковую оценку. Система AML Web Protection с версией модели 23-09-2026_10 успешно детектирует попытки эксплуатации данных уязвимостей.
Обнаружение
Идентификаторы CVE попали в публичное пространство 20 октября 2026 года — за день до официального раскрытия, после чего производитель перенёс релиз исправлений на 21 октября. Уже 21 октября системой AML Web Protection зафиксированы первые попытки сканирования защищаемых ресурсов на наличие уязвимостей.
Отдельно стоит отметить, что по данным Amazon Threat Intelligence первая попытка эксплуатации зафиксирована ещё 17 октября — за четыре дня до публичного раскрытия. При разборе инцидентов журналы следует проверять, начиная с этой даты.
Описание уязвимости
Обе уязвимости относятся к классу ошибок работы с памятью и возникают при аварийном завершении запроса, но механизмы эксплуатации различаются. В CVE-2026-109618 прерывание по ошибке нехватки памяти через longjmp() не даёт полностью инициализировать структуры запроса, и последующая очистка обрабатывает полуинициализированную память как корректную. В CVE-2026-109619 часть глобального состояния рабочего процесса после уничтожения кучи запроса сохраняет указатели на освобождённую память, а следующий запрос принимает их за валидные и работает с уже освобождённой областью, которой может управлять нарушитель.
CVE-2026-109618 — use-after-free в десериализаторе обработчика прогресса загрузки файлов (session.upload_progress). CVE-2026-109619 — use-after-free при сохранении трейса последней фатальной ошибки и конфликт типов в общем сегменте OPcache, который выводит эксплуатацию за пределы одного рабочего процесса.
Обе уязвимости получили оценку CVSS v4.0 — 9.2.
Уязвимость позволяет нарушителю:
- выполнить произвольный код с правами учётной записи, под которой работает интерпретатор PHP, не проходя аутентификацию;
- прочитать содержимое памяти рабочего процесса, включая пароли, токены, ключи API;
- обойти настройки безопасности PHP, поскольку эксплуатируется механизм самого интерпретатора, а не код приложения.
Настраивать эксплуатацию под конкретное приложение не требуется: работающий эксплойт подтверждён для WordPress, MediaWiki, phpBB, Magento, Joomla!, Laravel, Symfony, Drupal и WHMCS, на которых работает множество современных веб-сайтов.
Кто подвержен
Уязвимость затрагивает все версии PHP с 5.4 по 8.5.11 включительно и любые конфигурации, обслуживающие веб-запросы: PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP, LiteSpeed, а также продукты и устройства, в состав которых входит интерпретатор. Наиболее высокий риск производитель отмечает для Apache с mod_php: эксплуатация возможна одним неаутентифицированным запросом до передачи управления коду приложения.
Масштаб определяется распространённостью языка: по данным W3Techs, PHP используют 69,1 % сайтов, у которых известен серверный язык. Значительная часть из них работает на версиях, снятых с поддержки, и исправлений не получит.
Наличие официальных исправлений и рекомендаций
Производитель выпустил официальные патчи 21 октября 2026 года:
- для ветки 8.5.* — версия 8.5.12
- для ветки 8.4.* — версия 8.4.27
- для ветки 8.3.* — версия 8.3.36
- для ветки 8.2.* — версия 8.2.35
Для веток 7.4–8.1 официальных релизов не будет: производитель опубликовал минимальные патчи исходного кода для самостоятельной сборки. Версии 5.4–7.3 сняты с поддержки и исправлений не получат.
Индикаторы в журналах веб-сервера
Детект потенциальной атаки php2shell (CVE-2026-109618 и CVE-2026-109619) по логам веб-сервера выглядит следующим образом (в виде чтения php файлов через GET запросы):
1) 185.14.*.* - - [21/Oct/2026:22:57:05 +0300] "GET / HTTP/1.1" 200 16726 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
2) 185.14.*.* - - [21/Oct/2026:22:57:05 +0300] "GET /index.php HTTP/1.1" 200 16726 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
3) 185.14.*.* - - [21/Oct/2026:22:57:05 +0300] "GET /home.php HTTP/1.1" 404 15826 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
4) 185.14.*.* - - [21/Oct/2026:22:57:06 +0300] "GET /main.php HTTP/1.1" 404 15826 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
5) 185.14.*.* - - [21/Oct/2026:22:57:06 +0300] "GET /default.php HTTP/1.1" 404 15826 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
6) 185.14.*.* - - [21/Oct/2026:22:57:06 +0300] "GET /?page=/tmp/sess_6529270bc3fbd640b5997387183f139b&c=id HTTP/1.1" 200 16726 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
Либо через последовательность POST и GET запросов в корневой index.php файл. Обратим ваше внимание, что AML не имеет доступа к телу POST запросов, но по-прежнему может обнаруживать атаки на основании всего поведения в целом.
1) 77.90.*.*- - [22/Oct/2026:21:53:49 +0000] "POST /index.php HTTP/1.1" 499 0 "" "-" -
2) 77.90.*.* - - [22/Oct/2026:21:53:50 +0000] "GET /index.php?page=/tmp/sess_LxzcaMI5Iwgl8FSxbeGMHRP3MZZ8S4gw HTTP/1.1" 302 100 "" "-" -
3) 77.90.*.* - - [22/Oct/2026:21:53:53 +0000] "POST /index.php HTTP/1.1" 400 0 "" "-" -
4) 77.90.*.* - - [22/Oct/2026:21:53:54 +0000] "GET /index.php?page=/tmp/sess_P8UZ3Au8OynWPmHjSctVRE9neMNmyIER HTTP/1.1" 302 100 "" "-" -
5) 77.90.*.* - - [22/Oct/2026:21:53:56 +0000] "POST /index.php HTTP/1.1" 400 0 "" "-" -
6) 77.90.*.* - - [22/Oct/2026:21:53:56 +0000] "GET /index.php?page=/tmp/sess_EPj9rRksz8Zso5LSQL02y2a2zbv7nDM0 HTTP/1.1" 302 100 "" "-" -
Пользователям AML Web Protection
Система AML Web Protection с версией модели 23-09-2026_10 и более поздними успешно детектирует как работу сканеров этой уязвимости, так и использование полноценных эксплойтов. Выявленные атакующие сессии имеют длительность всего несколько секунд. При включённой блокировке в AML атака на уязвимость PHP будет остановлена автоматически средствами самого веб-сервера.
Владельцам уязвимых веб-ресурсов
Всем пользователям с уязвимой версией PHP рекомендуются следующие меры:
- обновить PHP до версий 8.5.12, 8.4.27, 8.3.36 или 8.2.35 и перезапустить рабочие процессы PHP и веб-сервера;
- до обновления отключить обработчик прогресса загрузки: session.upload_progress.enabled = 0, а на ветке 8.5 дополнительно fatal_error_backtraces = 0 (потребуется перезапуск всех воркеров);
- задать memory_limit = -1 способом, который приложение не может переопределить, что закрывает путь эксплуатации через нехватку памяти (например, через php_admin_value в пуле FPM);
- ограничить память рабочих процессов на уровне cgroup или контейнера;
- задать низкий post_max_size. Например, 8М для приложений, которые не требуют загрузки файлов). Для приложений, которые используют загрузку, подойдет значение 32М.
Для проверки возможной эксплуатации уязвимостей следует выполнить следующие действия:
- проверить ошибки чтения/записи сессий и аварийные завершения PHP;
- в access.log и error.log Nginx/Apache, журнале PHP-FPM и системном журнале искать рядом по времени: Allowed memory size ... exhausted, Maximum execution time ... exceeded, segfault / SIGSEGV;
- в access.log веб-сервера и реверс-прокси проверить обращения к посторонним скриптам, особенно появившимся незадолго до этих запросов, по всем адресам приложения, а не только к страницам php;
- проверить новых администраторов CMS, изменения прав и входы в панель управления сайтом, системные учетные записи и добавленные SSH-ключи в .ssh/authorized_keys, задания cron пользователей и системы, службы и таймеры systemd, планировщик CMS;
- отдельно проверить .htaccess, .user.ini, php.ini и параметры PHP-FPM на несогласованные изменения, особенно подключения посторонних файлов через auto_prepend_file и auto_append_file;
- перед перезапуском снять дамп памяти рабочих процессов на хостах с признаками сканирования: перезапуск уничтожает эти данные безвозвратно.
Специалисты ПМ готовы помочь в анализе журналов веб-сервера. Вы можете отправить нам запрос через форму обратной связи.
Заключение
Уязвимости CVE-2026-109618 и CVE-2026-109619 несут критический риск для веб-ресурсов на базе PHP. Уязвимый код находится в самом интерпретаторе, поэтому качество кода приложения риск не снижает: достаточно любой доступной страницы. Отсутствие необходимости аутентификации, полная автоматизация атаки и большое количество доступных из интернета хостов создают все условия для массовых атак.
Также данные по угрозе доступны на веб-сервисе AM Threat Intelligence Portal:
Специалисты ПМ разработали сигнатурные правила для детектирования атак на данные уязвимости, в описании которых представлена информация о причинах появления уязвимости.