Уязвимость в ядре WordPress CVE-2026-87902: атаки начались в день выхода патча 7.1.2

Коротко о главном
CVE-2026-87902 — критическая уязвимость в самом ядре WordPress, а не в плагине. Она затрагивает версии с 4.7.0 по 7.1.1 и позволяет без авторизации подключить чужой PHP-файл с сервера. 25 сентября 2026 года CISA внесла её в каталог активно эксплуатируемых (KEV). Обновите сайт до 7.1.2 или до исправленного релиза своей ветки сегодня.
WordPress выпустил исправление 22 сентября, и в тот же день, по данным Patchstack, начались первые попытки атак: злоумышленники восстановили эксплойт по диффу патча. Если ваш сайт на WordPress не обновляется автоматически, он уже в зоне риска. Отключённые автообновления на коммерческих проектах — частая история, и именно такие сайты сейчас сканируют первыми.
Оценка по CVSS — 9,2 из 10. Удалённое выполнение кода возможно не везде, а только при сочетании нескольких условий на сервере, но само подключение файла работает на любом уязвимом сайте. Проверка занимает несколько минут, если за площадкой есть регулярная техническая поддержка.
Где ошибка в коде WordPress
Проблема сидит в функции get_page_template(), которая выбирает шаблон темы для отображения страницы. Параметр pagename из URL попадает в имя файла без проверки validate_file(), хотя соседний участок кода эту проверку делает. Вызов urldecode() превращает закодированную строку в обход каталогов, и WordPress подключает PHP-файл за пределами папок темы. Об этом пишет Security Affairs со ссылкой на разбор исследователя.
Уязвимость нашёл Роберт Ресль (Robert Ressl) и передал её через программу WordPress на HackerOne в июле. В исправлении команда WordPress добавила пропущенную проверку и отдельную функцию _wp_is_template_path_allowed(), которая валидирует пути шаблонов во всей системе.
Когда подключение файла превращается в RCE
Для выполнения произвольного кода нужно сразу несколько условий:
- в активной теме есть папка верхнего уровня, имя которой начинается с
page-(например,page-templates/); - на сервере лежит
pearcmd.phpиз PEAR; - в PHP включён
register_argc_argv.
Такое сочетание не редкость. По данным исследователей, оно встречается по умолчанию в официальных Docker-образах PHP и на хостингах с cPanel на PHP ниже 8.5. Атакующий через pearcmd.php записывает PHP-файл в /tmp и затем подключает его той же уязвимостью.
Как развивались атаки
Patchstack зафиксировал первые запросы в 11:49 UTC 22 сентября — в день релиза. Сначала атакующие проверяли, срабатывает ли подключение безобидных файлов ядра вроде wp-links-opml.php. На следующий день в оборот попали публичные шаблоны для сканера Nuclei, объём атак вырос более чем в десять раз, начались попытки записи файлов через pearcmd.php. 25 сентября CISA подтвердила эксплуатацию и добавила CVE в KEV.
Какие версии исправлены
WordPress выпустил исправление во всех ветках, начиная с 4.7. По данным Patchstack, безопасные версии такие:
- 7.1.x — 7.1.2;
- 7.0.x — 7.0.6;
- 6.9.x — 6.9.9;
- 6.8.x — 6.8.10;
- старые ветки — вплоть до 4.7.37.
Сайты с включёнными фоновыми обновлениями получили патч автоматически. Официально поддерживается только последняя версия, так что для старых веток это разовая мера, а не повод на них оставаться.
Что делать владельцу сайта прямо сейчас
- Обновить ядро. Проверьте версию в «Консоли → Обновления» на всех сайтах, включая тестовые стенды и забытые лендинги.
- Если обновить нельзя сразу. Заблокируйте на WAF или веб-сервере последовательности обхода (
%2e%2e,%252e%252e) в параметреpagenameи отключитеregister_argc_argvв PHP — это рвёт цепочку через PEAR. - Проверить логи. Признаки атаки —
pagenameвместе сpage_idна главной или/index.php, строкиpearcmd,config-show,config-create, User-Agentcve-2026-87902-poc/1.0иnuclei-cve-2026-87902/1.0. - Проверить сервер. Неожиданные
.php-файлы в/tmpи/var/tmpозначают, что взлом, скорее всего, уже состоялся: нужен разбор инцидента, смена паролей и ключей. - Убрать лишнее. Удалите PEAR с веб-серверов, где он не нужен, и запретите запись PHP-файлов во временные каталоги.
Часто задаваемые вопросы
Это уязвимость плагина? Нет, ошибка в ядре WordPress. Поэтому затронут практически любой сайт на версиях 4.7.0–7.1.1, независимо от набора плагинов.
Если в моей теме нет папки page-, я в безопасности? От полного RCE по описанной цепочке — скорее да, но подключение файла всё равно работает. Обновляться нужно в любом случае.
Хватит ли одного обновления? Если сайт был открыт и не обновлён после 22 сентября, патч закрывает дыру, но не удаляет то, что могли записать атакующие. Проверьте /tmp и логи.
Нас касается решение CISA? Срок из KEV обязателен только для федеральных ведомств США. Но попадание в каталог означает подтверждённые атаки, и это сигнал для всех.
Источники
- WordPress.org — «WordPress 7.1.2 Release», 22 сентября 2026 (первоисточник)
- CISA — «CISA Adds One Known Exploited Vulnerability to Catalog», 25 сентября 2026
- Security Affairs — «CVE-2026-87902: how close is your WordPress to remote code execution?», сентябрь 2026
- Patchstack — «CVE-2026-87902: Attackers Started Probing WordPress Sites Hours After the Patch», сентябрь 2026
- Help Net Security — «WordPress 7.1.2 fixes critical unauthenticated path traversal vulnerability», 23 сентября 2026
Обновим и проверим ваш сайт на WordPress
Поставим исправленную версию ядра, проверим тему на папки page-, настройки PHP и следы записи файлов в /tmp. Возьмём сайт на регулярную поддержку, чтобы следующий критический патч встал в день выхода.