CISA добавила в KEV-каталог уязвимость в WordPress Core, допускающую выполнение кода без аутентификации

Cybersecurity and Infrastructure Security Agency, CISA

Агентство по кибербезопасности и защите инфраструктуры США (CISA) внесло в каталог Known Exploited Vulnerabilities (KEV) уязвимость CVE-2026-87902 в ядре WordPress. KEV - перечень проблем, которые уже используют в реальных атаках; попадание в него опирается на подтверждённые свидетельства эксплуатации. Значит, речь идёт не о теоретическом риске, а о работающем приёме. Проблема затрагивает выпуски платформы ниже 7.1.2. Неаутентифицированный посетитель сайта может повлиять на выбор шаблона страницы так, что движок подключит выбранный PHP-файл за пределами каталогов активной темы. Если совпадут дополнительные условия, это приводит к выполнению кода на сервере. Ни учётные данные, ни действия пользователя злоумышленнику не требуются. Практический вывод для владельцев сайтов прост: обновление ставят сразу, а не откладывают до планового обслуживания.

Уязвимость CVE-2026-87902

Механика связана с выбором шаблона. WordPress решает, какой файл темы отрисует запрошенную страницу. Механизм перебирает нескольких кандидатов и подключает первый подходящий. Ошибка в этой логике позволяет выйти за пределы каталогов темы и указать на файл в другом месте файловой системы. В записи CVE проблему относят к классу удалённого включения файлов (CWE-98). По сути это обход пути, который заканчивается включением файла. Сервер исполняет подключённый PHP-сценарий как код, поэтому злоумышленник получает права учётной записи веб-сервера. Дальше всё зависит от того, какие файлы лежат на диске и что в них записано. Отсутствие аутентификации меняет масштаб. Атаку запускают автоматически, списком адресов, без подготовки и без слежки за конкретной жертвой.

Условий для срабатывания два. Первое касается темы: у активной родительской или дочерней темы должен быть каталог верхнего уровня, название которого начинается со слова page. Под описание попадают штатные Twenty Twelve и Twenty Fourteen, а также сторонние темы Neve, Hestia и Sydney. Второе условие относится к серверу: на нём нужен доступный для чтения PHP-файл, который подойдёт под атаку. Подходящую цель находят с помощью давно известного перехода от пакетного менеджера PEAR к выполнению кода. Приём работает, когда PHP передаёт сценариям аргументы командной строки. Именно так настроен официальный образ php для Docker. Конфигурация cPanel по умолчанию даёт тот же результат на PHP версий до 8.5. Собственный файл из интернета атакующий подгрузить не может. Он выбирает из того, что уже есть на диске и читается веб-сервером. Чем больше служебных и библиотечных файлов оставили установочные пакеты, тем шире выбор.

Уязвимость нашёл исследователь Роберт Рессл и передал сведения разработчикам по правилам ответственного раскрытия. В уведомлении GitHub Security Advisory проблему пометили как критическую. Запись CVE опубликовали 22 сентября. Ценность ошибки для атакующих объясняется массовостью платформы: сайты на WordPress составляют заметную долю интернета, а владельцы часто откладывают обновления на месяцы. Условие с каталогом в теме снижает число уязвимых установок. Зато проверяется оно одной попыткой: неподходящая структура темы ничего не даст, а подходящая даст результат без интерактива и без предварительного доступа. Дальнейшие шаги зависят от окружения. Обычно возможностей хватает, чтобы разместить на сайте чужой код, увести посетителей на сторонние страницы или добраться до служебных файлов с настройками. Для интернет-магазина это риск утечки заказов и данных клиентов, для корпоративного сайта - площадка для фишинга на доверенном домене.

Среди потенциальных целей - сайты на общем хостинге, интернет-магазины, корпоративные блоги и ресурсы небольших агентств. Все они часто живут на популярных темах, а часть - на устаревших выпусках ядра, которые не обновляли годами. Агентствам федерального правительства США добавление в KEV предписывает закрыть уязвимость в установленный срок. Частным владельцам никто сроков не ставит, но затягивать нет причин: уязвимость с таким набором условий интересна и массовым сканерам, и точечным атакам.

Исправление вышло в WordPress 7.1.2. Разработчики перенесли заплат во все поддерживаемые ветки вплоть до 4.7 - на такую работу идут ради старых сайтов, которые годами живут без обновлений ядра. Владельцам достаточно обновить ядро до последнего выпуска своей ветки. Тем, кто отстал на несколько поколений, разумнее перейти на актуальную версию. Тема заслуживает отдельной проверки: если в ней есть каталоги с именами на page, обновление ядра закрывает ошибку, а смена темы на поддерживаемую сокращает число потенциальных целей. Хостингам полезно проверить, какие версии PHP они предлагают клиентам, и напомнить о них.

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

Ссылки

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