Попытки эксплуатации PHP2Shell усилились после утечки сведений об уязвимостях

PHP2shell

Сканирование и попытки эксплуатации двух критических уязвимостей PHP, получивших название PHP2Shell, начались до публикации исправлений и продолжились после неё. Уязвимости CVE-2026-109618 и CVE-2026-109619 позволяют выполнить удалённый код. За день до официального раскрытия, 20 октября, сведения о них просочились, и PHP подтвердила готовящийся выпуск исправлений вскоре после утечки. Исправления вышли в PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35; для PHP 8.1 и более старых версий патчи больше не выпускаются. Подтверждённых успешных компрометаций через эти уязвимости нет.

Описание

По данным VulnCheck, исследователи воспроизвели обе уязвимости вечером 20 октября. Эксплойт для CVE-2026-109618 работал на системах x86-64 с включённой рандомизацией адресного пространства (ASLR) и отключённым выводом ошибок. По состоянию на 22 октября он поддерживал PHP 8.4.10-8.4.26 без доработок. Эксплойт был доступен ограниченному кругу клиентов, а не в открытом доступе. На ARM64 утечка памяти срабатывала, но выполнение кода пока не работало; рандомизацию адресов на ARM64 можно обойти перебором.

В открытом доступе появились сотни прототипов эксплойтов, и исследователи продолжают проверять их по мере поступления. Часть прототипов могла появиться после утечки с помощью больших языковых моделей, но это не установлено. Как минимум один прототип обошёл рандомизацию адресного пространства на x86-64 для PHP 8.4.26 с конфигурацией кучи по умолчанию; в других условиях он не срабатывал. Точное число работоспособных прототипов неизвестно. Наличие запроса с характерной строкой в пользовательском агенте или обращение к сценарию PHP само по себе не доказывает эксплуатацию: такие признаки могут появляться при обычном сканировании.

Сканирующая активность с двух адресов использовала в пользовательском агенте строку, содержащую название PHP2Shell и номер CVE-2026-109618, и отправляла составные POST-запросы с файлами на сценарии PHP. Сканирование охватило несколько облачных провайдеров и регионов. На попытку задействовать путь CVE-2026-109618 через механизм отслеживания прогресса загрузки файлов в сессии указывают запросы. В одном случае сканер загрузил два файла, но исчерпать память за один запрос не удалось. Один источник сканирования подключился к 188 хостам-приманкам, второй - к 26 хостам; ещё три источника обратились каждый к одному хосту.

Отдельная попытка, предположительно из Китая, касалась внедрения веб-шелла через файл сессии. Запросы пытались прочитать файл через обработчик раскрытия файлов, но путь не существовал, и сервер вернул ответ об отсутствии файла. Это подтверждённая неудачная попытка, а не успешное срабатывание.

Число попыток росло: за несколько часов до раскрытия сведений об уязвимостях оно достигало тысяч обращений, а вскоре после публикации - сотен тысяч обращений, а позже появились сообщения о миллионах попыток. 17 октября системы-приманки отметили первые попытки эксплуатации, за три дня до появления CVE-идентификаторов, а 21 октября активность усилилась за двенадцать часов до выхода исправлений. Осведомлённость о готовящемся выпуске предположительно объясняет раннюю активность, но её источник не установлен. В строгих условиях - только HTTP, стандартная конфигурация PHP и страница без вызовов сессии - обход рандомизации адресного пространства оставался незавершённым по состоянию на 21 октября. Для обхода требовалась утечка адресов или частичная перезапись указателей, а подходящего способа копирования строк без порчи соседних байтов найти не удалось.

Остаётся неизвестным, использовали ли злоумышленники рабочий эксплойт исследовательской компании или только публичные прототипы; наблюдения этого не разделяют. Подтверждённых успешных срабатываний через PHP2Shell нет, поэтому описанные запросы и прототипы указывают на попытки, а не на состоявшуюся компрометацию. Данные сканирования не показывают, какие именно версии PHP были на целях, и не позволяют отличить проверку уязвимости от попытки эксплуатации. Описанные признаки могут давать ложные срабатывания при совпадении строки пользовательского агента.

Индикаторы компрометации

Комментарии: 0