невзлом

Важно · WordPress

WordPress 7.1.4 — RCE в окне полного обновления ядра (CVE-2026-119977)

· 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.17.1.4
7.07.0.8
6.96.9.11
6.86.8.12
6.76.7.11
6.66.6.11
6.56.5.14
6.46.4.14
6.36.3.14
6.26.2.15
6.16.1.16
6.06.0.18
5.95.9.20
5.85.8.19
5.75.7.21
5.65.6.23
5.55.5.24
5.45.4.25
5.35.3.27
5.25.2.30
5.15.1.28
5.05.0.31
4.94.9.35
4.84.8.34
4.74.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 на всех его сайтах.

Источники