WordPress 7.1.4 — RCE в окне полного обновления ядра (CVE-2026-119977)
Суть
В процессе полного обновления ядра WordPress на короткое время появляется доступная по HTTP временная копия с установщиком. Без аутентификации, при удачном попадании в это окно и при доступности временных файлов из интернета — удалённое выполнение кода (формулировка wordpress.org: «remote code execution during the upgrade window»). Отдельного действия посетителя сайта не нужно; окно открывает сам факт полного обновления.
CVSS 3.1 — 8.1 High (Wordfence как CNA / вторичные обзоры; вектор с высокой сложностью из‑за гонки). Официального CVSS от WordPress в анонсе нет. EPSS — неизвестно. CISA KEV — записи нет (на 02.11.2026 по ленте и вторичным обзорам на 31.10).
Затронуто и исправлено
По HelpHub version-7-1-4 (28.10.2026). Активно поддерживается только последняя версия; бэкпорты — «as a courtesy».
| Ветка | Исправлено с |
|---|---|
| 7.1 | 7.1.4 |
| 7.0 | 7.0.8 |
| 6.9 | 6.9.11 |
| 6.8 | 6.8.12 |
| 6.7 | 6.7.11 |
| 6.6 | 6.6.11 |
| 6.5 | 6.5.14 |
| 6.4 | 6.4.14 |
| 6.3 | 6.3.14 |
| 6.2 | 6.2.15 |
| 6.1 | 6.1.16 |
| 6.0 | 6.0.18 |
| 5.9 | 5.9.20 |
| 5.8 | 5.8.19 |
| 5.7 | 5.7.21 |
| 5.6 | 5.6.23 |
| 5.5 | 5.5.24 |
| 5.4 | 5.4.25 |
| 5.3 | 5.3.27 |
| 5.2 | 5.2.30 |
| 5.1 | 5.1.28 |
| 5.0 | 5.0.31 |
| 4.9 | 4.9.35 |
| 4.8 | 4.8.34 |
| 4.7 | 4.7.39 |
Пример сравнения: 7.1.3 — уязвима, 7.1.4 — исправлена; 6.9.10 — уязвима, 6.9.11 — исправлена.
- HelpHub отмечает, что не все 22 пункта бюллетеня затрагивают каждую старую ветку одинаково; для RCE в окне обновления ориентир вторичных источников — ветки с 4.7. Ставьте указанный бэкпорт своей ветки целиком.
- 4.6 и раньше: исправлений безопасности нет — только переход на поддерживаемую ветку.
- В том же 7.1.4 — серия XSS и смежных исправлений; отдельно не разбираем.
Эксплуатация
- WordPress: «update your sites immediately»; про активную эксплуатацию в анонсе не сказано.
- Вторично Wordfence: попытки начались вскоре после выхода патча 28.10; THN со ссылкой на Wordfence — порядка 63 тыс. попыток за сутки. Подтверждённых компрометаций в этих материалах нет.
- Условия (по вторичным): полное (full-package) обновление ядра, веб-доступность временного дерева обновления, попадание в короткую щель до очистки. На части хостингов щель на практике короче или закрыта настройками — доля реально уязвимых неизвестна.
- Публичный PoC: в первоисточниках WordPress не описывается; наличие/отсутствие рабочего PoC редакция не утверждает.
Как проверить
wp core version
wp core verify-checksums- В админке: «Консоль → Обновления», «Здоровье сайта».
- Автообновление security-релизов с 3.7 может быть отключено константами
AUTOMATIC_UPDATER_DISABLED/WP_AUTO_UPDATE_COREили панелью хостинга — сверяйте фактическую версию, не факт «включено». - Дата смены
wp-includes/version.php— ориентир, после восстановления из бэкапа неточен.
Как исправить
Копии — вне webroot.
( umask 077
wp db export ~/wp-db-$(date +%F).sql
tar -czf ~/wp-files-$(date +%F).tar.gz . )Внутри текущей мажорной линии (предпочтительно, если нельзя прыгать на 7.1):
wp core update --minor
wp core update-db
wp core versionНа новейшую основную (может сломать старые тему/плагины):
# ВНИМАНИЕ: смена мажорной версии. Только после копии.
wp core update
wp core update-db- Кнопка в админке ставит актуальный стабильный релиз (сейчас линейка 7.1.x → 7.1.4), не произвольный бэкпорт старой ветки.
- Для старой ветки без перехода на 7.1 — WP-CLI/
--minor, панель хостинга (WP Toolkit и аналоги) или ручное обновление по документации WordPress. - Docker-образ
wordpress: новый тег образа сам по себе том сайта не патчит — обновляйте ядро в томе (админка илиwordpress:cliс теми же томами и--userвладельца файлов). - Зависло обновление — удалите
.maintenanceв корне, продолжите по «Updating WordPress».
Массово:
find /var/www /home -path '*/wp-includes/version.php' -exec grep -H '^\$wp_version' {} +Дальше для каждого корня — wp core update --minor / проверка версии от владельца файлов.
Если обновить нельзя
Официальных mitigations в анонсе WordPress нет. Вторично Wordfence: правило WAF и режим, при котором файрвол видит прямые запросы к PHP; для бесплатного тарифа правило приходит с задержкой. WAF не заменяет обновление ядра. Отключать обновления «чтобы не открывать окно» — хуже: сайт остаётся на уязвимой сборке, а окно всё равно понадобится при патче.
Признаки взлома и что делать
Общее по FAQ WordPress: сайт в чёрных списках, хостинг отключил, чужие пользователи/админы, неожиданные изменения. Дополнительно (вторично Wordfence/THN): в access-логах с 28.10.2026 — обращения к PHP-файлам внутри временного каталога обновлений ядра (wp-content/upgrade/…); незнакомые PHP в wp-content (особенно uploads); новые администраторы.
Порядок: зафиксировать симптомы → копия «как есть» вне webroot → сверка checksums ядра/плагинов → смена всех секретов (админы, FTP/SFTP, БД, соли в wp-config.php) → чистая замена wp-admin/wp-includes, проверка .htaccess и загрузок → обновление до исправляющей версии → повторная смена паролей. Одного патча после компрометации мало. Проверьте crontab и SSH-ключи пользователя PHP на всех его сайтах.
Источники
- Анонс: https://wordpress.org/news/2026/10/wordpress-7-1-4/
- Версии и бэкпорты: https://wordpress.org/documentation/wordpress-version/version-7-1-4/
- Обновление: https://wordpress.org/documentation/article/updating-wordpress/
- Номером без ссылки: CVE-2026-119977 (Wordfence CNA / вторичные). Общий FAQ WordPress про взлом — без ссылки (со страницы ведут сторонние разборы).