CVE: CVE-2026-87902
Продукт: Ubuntu
Дата публикации: 22.09.2026
Критичность: HIGH
CVSS: 8.1 (3.1)
EPSS: 18,17%; процентиль 97,11%
CISA KEV: да
Краткое описание
В Ubuntu затронут пакет wordpress во всех указанных LTS-релизах. Ошибка находится в функции get_page_template() ядра WordPress: при разрешении page-template атакующий может указать читаемый локальный .php-файл вне каталогов активной темы. При совпадении условий на стороне сервера и активной темы это приводит к удалённому выполнению кода без аутентификации.
Основные характеристики
WordPress разрешает подстановку произвольного локального PHP-файла в механизм page-template, что даёт прямой путь к исполнению кода на сервере без входа в админку.
- Тип ошибки: CWE-98 — Remote File Inclusion.
- CVSS 3.1:
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H, оценка 8.1, severity HIGH.
- Условия атаки: доступ к HTTP-интерфейсу WordPress, наличие читаемого .php-файла вне активной темы и соответствующая конфигурация сервера.
- Факт эксплуатации: CVE-2026-87902 включён в CISA KEV; attackers started probing WordPress sites hours after the patch according to Patchstack.
- EPSS: 18,17% (percentile 97,11%).
Какие продукты и версии затронуты
В Ubuntu затронуты пакеты wordpress и связанные темы во всех указанных дистрибутивных версиях. Версии указаны в формате Debian/Ubuntu с дебьюном.
- Ubuntu 16.04 LTS: wordpress 4.4.2+dfsg-1ubuntu1, wordpress-l10n 4.4.2+dfsg-1ubuntu1, wordpress-theme-twentyfifteen 4.4.2+dfsg-1ubuntu1, wordpress-theme-twentyfourteen 4.4.2+dfsg-1ubuntu1, wordpress-theme-twentysixteen 4.4.2+dfsg-1ubuntu1.
- Ubuntu 18.04 LTS: wordpress 4.9.5+dfsg1-1, wordpress-l10n 4.9.5+dfsg1-1, wordpress-theme-twentyfifteen 4.9.5+dfsg1-1, wordpress-theme-twentyseventeen 4.9.5+dfsg1-1, wordpress-theme-twentysixteen 4.9.5+dfsg1-1.
- Ubuntu 20.04 LTS: wordpress 5.3.2+dfsg1-1ubuntu1, wordpress-l10n 5.3.2+dfsg1-1ubuntu1, wordpress-theme-twentynineteen 5.3.2+dfsg1-1ubuntu1, wordpress-theme-twentyseventeen 5.3.2+dfsg1-1ubuntu1, wordpress-theme-twentysixteen 5.3.2+dfsg1-1ubuntu1.
- Ubuntu 22.04 LTS: wordpress 5.8.3+dfsg1-1ubuntu1.1, wordpress-l10n 5.8.3+dfsg1-1ubuntu1.1, wordpress-theme-twentynineteen 5.8.3+dfsg1-1ubuntu1.1, wordpress-theme-twentytwenty 5.8.3+dfsg1-1ubuntu1.1, wordpress-theme-twentytwentyone 5.8.3+dfsg1-1ubuntu1.1.
- Ubuntu 24.04 LTS: wordpress 6.4.3+dfsg1-1ubuntu1, wordpress-l10n 6.4.3+dfsg1-1ubuntu1, wordpress-theme-twentytwentyfour 6.4.3+dfsg1-1ubuntu1, wordpress-theme-twentytwentythree 6.4.3+dfsg1-1ubuntu1, wordpress-theme-twentytwentytwo 6.4.3+dfsg1-1ubuntu1.
- Ubuntu 26.04 LTS: wordpress 6.7.2+dfsg1-1.1ubuntu2, wordpress-l10n 6.7.2+dfsg1-1.1ubuntu2, wordpress-theme-twentytwentyfive 6.7.2+dfsg1-1.1ubuntu2, wordpress-theme-twentytwentyfour 6.7.2+dfsg1-1.1ubuntu2, wordpress-theme-twentytwentythree 6.7.2+dfsg1-1.1ubuntu2.
Причина уязвимости
Уязвимость связана с логикой page-template в WordPress Core.
Функция get_page_template() разрешает подстановку файла, который не ограничен каталогами активной темы. Если передан путь к читаемому локальному .php-файлу вне этих каталогов, файл может быть включён как шаблон страницы.
Граница доверия нарушается на этапе разрешения имени шаблона: система ожидает, что page-template указывает на файл внутри разрешённых темных каталогов, но при этом фактически использует переданное значение без достаточной привязки к активной теме.
Это позволяет включить произвольный PHP-файл из файловой системы сервера, если он доступен для чтения процессом веб-сервера.
Как работает атака
Атакующий обращается к HTTP-интерфейсу WordPress без аутентификации.
В запросе передаётся параметр page-template со значением, указывающим на локальный .php-файл вне каталогов активной темы. WordPress Core вызывает get_page_template() и разрешает этот путь как шаблон страницы.
Если файл существует, читаем для процесса PHP и содержит исполняемый код, он включается в контексте выполнения шаблона. Это даёт возможность выполнить произвольный PHP-код на сервере.
Успех зависит от двух условий: доступность целевого .php-файла для чтения и соответствие конфигурации активной темы и сервера требованиям page-template.
Условия успешной эксплуатации
Для успешной эксплуатации нужны следующие условия.
- Доступ к HTTP: сайт с установленным WordPress доступен по сети, обычно через стандартный порт 80 или 443.
- Читаемый .php-файл: на сервере есть PHP-файл вне каталогов активной темы, который процесс веб-сервера может прочитать.
- Активная тема: активная тема WordPress поддерживает page-template и разрешает подстановку файла в ожидаемую логику.
- Отсутствие аутентификации: вход в админскую панель не требуется; атака идёт через публичный HTTP-интерфейс.
- Совпадение условий сервера: PHP-конфигурация и права доступа позволяют включить указанный файл как шаблон.
Возможный сценарий атаки
Атакующий находит публичный WordPress-сайт в Ubuntu. Он отправляет HTTP-GET или POST запрос к странице с параметром page-template, указывающим путь к локальному PHP-файлу вне темы.
WordPress Core вызывает get_page_template(). Функция разрешает переданный путь и включает файл как шаблон страницы. Если файл содержит PHP-код, код выполняется в контексте веб-процесса.
Результатом может быть выполнение произвольного кода на сервере: изменение данных, создание файлов, запуск процессов или дальнейшее движение внутри инфраструктуры, если права процесса позволяют это.
Есть ли публичный эксплойт
В CISA KEV CVE-2026-87902 указан как WordPress Core Remote File Inclusion Vulnerability.
Patchstack сообщает, что attackers started probing WordPress sites hours after the patch. Это означает активное сканирование и использование уязвимости в реальных условиях после публикации исправлений.
Конкретные PoC, payload и рабочие команды из переданного пакета доказательств не раскрыты. Наличие информации о пробах атакующих подтверждает практическую значимость ошибки, но точные технические детали реализации не приведены.
Признаки эксплуатации
Специфичных IOC для CVE-2026-87902 в предоставленных источниках нет.
Ниже перечислены общие точки контроля, которые можно использовать при расследовании. Они неспецифичны и требуют перекрёстной проверки с журналами сайта.
- Необычные запросы к page-template: параметры page-template со значениями, указывающими на файлы вне каталогов темы.
- Выполнение PHP-кода из нестандартных путей: в логах веб-сервера или PHP visible errors.
- Новые файлы в webroot: появление .php-файлов вне стандартных каталогов WordPress.
- Изменение конфигурации: новые cron-задачи, изменения в php.ini или .htaccess.
- Сетевые соединения из веб-процесса: исходящие запросы от Apache/Nginx/PHP-FPM к внешним адресам.
Как обнаружить атаку
Для обнаружения атаки используйте журналы и мониторинг файловой системы.
- Логи веб-сервера: фильтруйте запросы, содержащие page-template со значениями вне каталогов темы. Ищите повторяющиеся паттерны с одинаковыми путями.
- Логи PHP: ищите ошибки или предупреждения о включении файлов из нестандартных путей.
- Мониторинг файловой системы: отслеживайте создание новых .php-файлов в каталогах WordPress, особенно вне themes/.
- Сетевой мониторинг: фиксируйте исходящие соединения от процесса веб-сервера или PHP-FPM.
- Проверка cron и конфигурации: регулярно сверяйте /etc/cron.*, ~/.cron.d и файлы .htaccess на предмет изменений.
Как проверить свою версию
Для проверки версии Ubuntu и установленного пакета wordpress используйте команды ниже. Замените <имя-пакета> на wordpress.
Bash:
cat /etc/os-release
uname -r
apt-cache policy <имя-пакета>
ubuntu-security-status
Команда apt-cache policy показывает доступные версии пакета и установленную версию. Замените <имя-пакета> на wordpress, чтобы получить информацию о пакете.
Если пакет установлен в другой форме, например через snap или docker, команды выше не применимы. Проверьте конфигурацию контейнера или snap напрямую.
Исправление
Основное исправление — обновление пакета wordpress до версии, содержащей фикс WordPress Core.
- Обновите пакеты: выполните apt update и apt upgrade для всех LTS-версий Ubuntu.
- Проверьте темы: убедитесь, что активная тема не использует уязвимую логику page-template.
- Ограничьте доступ к файловой системе: настройте права на каталоги WordPress так, чтобы процесс веб-сервера мог читать только необходимые файлы.
- Используйте WAF: включите правила для блокировки аномальных значений page-template.
- Ротация ключей: если есть подозрение на компрометацию, обновите пароли БД, API-ключи и токены доступа.
Временные меры защиты
Пока обновление не применено, используйте следующие временные меры.
- Блокируйте page-template через WAF: настройте правило для отклонения запросов с параметром page-template, если значение указывает на файлы вне каталогов темы.
- Ограничьте права на файлы: убедитесь, что процесс веб-сервера не может читать .php-файлы вне каталогов WordPress.
- Отключите page-template в темах: если активная тема поддерживает эту функцию, временно отключите её или замените на статический шаблон.
- Мониторинг в реальном времени: включите алерты на создание новых .php-файлов и исходящие сетевые соединения из веб-процесса.
Как проверить устранение уязвимости
После обновления проверьте, что уязвимость устранена.
- Проверьте версию пакета: выполните apt-cache policy wordpress и убедитесь, что установлена исправленная версия.
- Тест page-template: отправьте запрос с параметром page-template, указывающим на файл вне каталогов темы. Если файл не включается или вызывается ошибка безопасности — фикс работает.
- Проверьте логи: убедитесь, что в логах нет ошибок включения файлов из нестандартных путей после обновления.
- Сканирование: прогоните уязвимостный сканер для WordPress и убедитесь, что CVE-2026-87902 не обнаружен.
Вывод
CVE-2026-87902 — удалённая включение файла в WordPress Core, приводящая к RCE без аутентификации.
В Ubuntu затронуты все LTS-версии с пакетом wordpress. Ошибка подтверждена CISA KEV и активным использованием атакующими.
Обновление пакета wordpress до исправленной версии — основной способ устранить уязвимость. Временные меры включают WAF, ограничение прав на файлы и мониторинг page-template.
Официальные источники
- NVD — CVE-2026-87902
- Ubuntu OSV — CVE-2026-87902
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS — CVE-2026-87902
История обновлений статьи
- 27.09.2026 — Опубликована первая версия материала.
