22 сентября 2026 года WordPress закрыл критическую уязвимость ядра CVE-2026-87902 с оценкой 9,2 балла по шкале CVSS. Она позволяет удалённому злоумышленнику без учётной записи заставить сайт загрузить локальный PHP-файл за пределами каталогов активной темы. Никаких действий со стороны авторизованного пользователя не требуется. При определённой конфигурации сервера такая загрузка заканчивается выполнением выбранного атакующим кода. Исправление вошло в WordPress 7.1.2 и в выпуски безопасности для всех поддерживаемых веток вплоть до 4.7.

Уязвимы версии от WordPress 4.7.0 до 7.1.1 включительно. Это касается и WordPress 7.1.1, выпущенного 17 сентября в составе предыдущего обновления безопасности. Поэтому администраторам, обновившим сайты меньше чем за неделю до появления нового патча, придётся повторить процедуру. CVE-2026-87902 не связана с уязвимостями, исправленными 17 сентября: речь идёт об отдельной ошибке.
Для ветки 7.1.x следует установить WordPress 7.1.2, для 7.0.x — 7.0.6, для 6.9.x — 6.9.9, для 6.8.x — 6.8.10, для 6.7.x — 6.7.9, для 6.6.x — 6.6.9. Исправление перенесено и в более старые поддерживаемые ветки; самый ранний названный выпуск — WordPress 4.7.37. WordPress сообщил, что такие патчи для старых веток предоставлены «в порядке любезности». Полный перечень версий опубликован в официальных примечаниях к выпуску.
Сайты с включёнными фоновыми автоматическими обновлениями должны начать установку подходящей версии самостоятельно. Вручную патч ставится через раздел «Обновления» в панели управления либо загрузкой нужного выпуска с . Самостоятельного обходного решения WordPress не предложил: исправлением считается именно установка обновлённого ядра. Настройки PHP и сервера могут сузить возможности атаки, но ошибочный код WordPress они не меняют.
Проблема возникает при выборе файла шаблона страницы. WordPress формирует один из предполагаемых путей по схеме page-{значение}.php, причём значение берётся из части веб-адреса. В версиях до исправления оно не проходило уже существующую в WordPress проверку на последовательности обхода каталогов вроде ../. Соседний участок кода такую проверку применял, а уязвимое значение осталось без фильтрации. Манипулируя URL, атакующий мог построить путь к PHP-файлу, расположенному вне каталога темы.
Для практической атаки активная тема должна содержать на верхнем уровне папку, имя которой начинается с page-, а целевой файл обязан оканчиваться на .php. Такое устройство встречается у некоторых тем, включая отдельные старые стандартные темы WordPress. В нынешних стандартных темах подходящей папки верхнего уровня нет. Это снижает вероятность эксплуатации на конкретном сайте, но уязвимость ядра всё равно остаётся и требует патча.
Само чтение произвольного PHP-файла ещё не гарантирует выполнение любого кода на каждом сервере. Для тяжёлого сценария на машине уже должен находиться PHP-файл, который при загрузке выполняет полезные атакующему действия. Именно поэтому WordPress говорит о выполнении кода «на некоторых серверах»: нужны одновременно подходящая тема, доступный локальный файл и определённые параметры PHP.
Компания Patchstack, выпустившая отдельный технический разбор, предложила проверить два условия: наличие в активной теме каталога верхнего уровня с префиксом page- и состояние параметра PHP register_argc_argv. Известный способ довести загрузку файла до исполнения кода зависит от включённого register_argc_argv. В PHP 8.5 этот параметр по умолчанию отключён, тогда как в более старых версиях PHP он по умолчанию включён. Ни отсутствие нужной папки, ни отключение параметра не заменяют обновление; проверки лишь показывают, насколько сайт близок к худшему сценарию.
Уязвимость обнаружил исследователь Robert Ressl. В июле 2026 года он конфиденциально передал сведения WordPress через программу HackerOne. После выхода исправления Ressl опубликовал подробное техническое описание, доказательство работоспособности концепции и автономную тестовую лабораторию. В качестве временных мер для серверов, которые нельзя обновить сразу, он рекомендовал отключить register_argc_argv для веб-запросов и удалить неиспользуемые компоненты PEAR. Эти действия мешают известному пути к исполнению кода, но не устраняют CVE-2026-87902.
В демонстрации Ressl код действительно запускался с правами учётной записи веб-сервера. Автоматического получения полного контроля над всей машиной опыт не показывал. Исследователь проверял атаку на WordPress 7.0.2 только в изолированных локальных лабораториях: тесты не проводились ни против исправленного выпуска, ни против действующих сайтов.
По состоянию на 22 сентября 2026 года сообщений об использовании CVE-2026-87902 в реальных атаках не было. Уязвимость также отсутствовала в каталоге известных эксплуатируемых уязвимостей KEV, который ведёт американское Агентство по кибербезопасности и защите инфраструктуры CISA. При этом технические детали и рабочее доказательство концепции уже доступны публично. WordPress и Robert Ressl запросили комментарий, но ответ ни от одной из сторон не приводился. Для установок версий 4.7.0–7.1.1 единственным полным исправлением остаётся переход на соответствующий выпуск с патчем.

Изображение носит иллюстративный характер
Уязвимы версии от WordPress 4.7.0 до 7.1.1 включительно. Это касается и WordPress 7.1.1, выпущенного 17 сентября в составе предыдущего обновления безопасности. Поэтому администраторам, обновившим сайты меньше чем за неделю до появления нового патча, придётся повторить процедуру. CVE-2026-87902 не связана с уязвимостями, исправленными 17 сентября: речь идёт об отдельной ошибке.
Для ветки 7.1.x следует установить WordPress 7.1.2, для 7.0.x — 7.0.6, для 6.9.x — 6.9.9, для 6.8.x — 6.8.10, для 6.7.x — 6.7.9, для 6.6.x — 6.6.9. Исправление перенесено и в более старые поддерживаемые ветки; самый ранний названный выпуск — WordPress 4.7.37. WordPress сообщил, что такие патчи для старых веток предоставлены «в порядке любезности». Полный перечень версий опубликован в официальных примечаниях к выпуску.
Сайты с включёнными фоновыми автоматическими обновлениями должны начать установку подходящей версии самостоятельно. Вручную патч ставится через раздел «Обновления» в панели управления либо загрузкой нужного выпуска с . Самостоятельного обходного решения WordPress не предложил: исправлением считается именно установка обновлённого ядра. Настройки PHP и сервера могут сузить возможности атаки, но ошибочный код WordPress они не меняют.
Проблема возникает при выборе файла шаблона страницы. WordPress формирует один из предполагаемых путей по схеме page-{значение}.php, причём значение берётся из части веб-адреса. В версиях до исправления оно не проходило уже существующую в WordPress проверку на последовательности обхода каталогов вроде ../. Соседний участок кода такую проверку применял, а уязвимое значение осталось без фильтрации. Манипулируя URL, атакующий мог построить путь к PHP-файлу, расположенному вне каталога темы.
Для практической атаки активная тема должна содержать на верхнем уровне папку, имя которой начинается с page-, а целевой файл обязан оканчиваться на .php. Такое устройство встречается у некоторых тем, включая отдельные старые стандартные темы WordPress. В нынешних стандартных темах подходящей папки верхнего уровня нет. Это снижает вероятность эксплуатации на конкретном сайте, но уязвимость ядра всё равно остаётся и требует патча.
Само чтение произвольного PHP-файла ещё не гарантирует выполнение любого кода на каждом сервере. Для тяжёлого сценария на машине уже должен находиться PHP-файл, который при загрузке выполняет полезные атакующему действия. Именно поэтому WordPress говорит о выполнении кода «на некоторых серверах»: нужны одновременно подходящая тема, доступный локальный файл и определённые параметры PHP.
Компания Patchstack, выпустившая отдельный технический разбор, предложила проверить два условия: наличие в активной теме каталога верхнего уровня с префиксом page- и состояние параметра PHP register_argc_argv. Известный способ довести загрузку файла до исполнения кода зависит от включённого register_argc_argv. В PHP 8.5 этот параметр по умолчанию отключён, тогда как в более старых версиях PHP он по умолчанию включён. Ни отсутствие нужной папки, ни отключение параметра не заменяют обновление; проверки лишь показывают, насколько сайт близок к худшему сценарию.
Уязвимость обнаружил исследователь Robert Ressl. В июле 2026 года он конфиденциально передал сведения WordPress через программу HackerOne. После выхода исправления Ressl опубликовал подробное техническое описание, доказательство работоспособности концепции и автономную тестовую лабораторию. В качестве временных мер для серверов, которые нельзя обновить сразу, он рекомендовал отключить register_argc_argv для веб-запросов и удалить неиспользуемые компоненты PEAR. Эти действия мешают известному пути к исполнению кода, но не устраняют CVE-2026-87902.
В демонстрации Ressl код действительно запускался с правами учётной записи веб-сервера. Автоматического получения полного контроля над всей машиной опыт не показывал. Исследователь проверял атаку на WordPress 7.0.2 только в изолированных локальных лабораториях: тесты не проводились ни против исправленного выпуска, ни против действующих сайтов.
По состоянию на 22 сентября 2026 года сообщений об использовании CVE-2026-87902 в реальных атаках не было. Уязвимость также отсутствовала в каталоге известных эксплуатируемых уязвимостей KEV, который ведёт американское Агентство по кибербезопасности и защите инфраструктуры CISA. При этом технические детали и рабочее доказательство концепции уже доступны публично. WordPress и Robert Ressl запросили комментарий, но ответ ни от одной из сторон не приводился. Для установок версий 4.7.0–7.1.1 единственным полным исправлением остаётся переход на соответствующий выпуск с патчем.