
| Имя плагина | Изменение размера изображения Cloudflare |
|---|---|
| Тип уязвимости | Удаленное выполнение кода |
| Номер CVE | CVE-2025-8723 |
| Срочность | Высокий |
| Дата публикации CVE | 2025-08-18 |
| Исходный URL-адрес | CVE-2025-8723 |
Срочная рекомендация по безопасности: изменение размера изображения Cloudflare (cf-image-resizing) <= 1.5.6 — неаутентифицированный RCE через rest_pre_dispatch (CVE-2025-8723)
Дата: 18 августа 2025 г.
Серьезность: Критический (CVSS 10.0) — Удаленное выполнение кода (RCE)
Затронутые плагины: Изменение размера изображения Cloudflare (ярлык плагина: cf-image-resizing)
Уязвимые версии: <= 1.5.6
Исправлено в: 1.5.7
CVE: CVE-2025-8723
Эти рекомендации написаны с точки зрения WP-Firewall — поставщика решений безопасности WordPress и управляемого WAF — и призваны помочь владельцам, администраторам и командам безопасности сайтов WordPress понять уязвимость, оценить степень риска и реализовать быстрые и практичные меры по её снижению (включая правила WAF и меры реагирования на инциденты). Они написаны в практичном и человечном ключе, сфокусированном на том, что вам необходимо сделать сейчас для защиты своего сайта и как восстановить его в случае взлома.
Примечание: Если вы используете плагин Cloudflare Image Resizing на каком-либо сайте WordPress, воспринимайте это как чрезвычайную ситуацию и следуйте разделу «Немедленные действия» ниже.
Управляющее резюме
Критическая уязвимость в плагине Cloudflare Image Resizing WordPress (версии <= 1.5.6) позволяет неаутентифицированным злоумышленникам осуществлять удаленное выполнение кода (RCE), злоупотребляя использованием плагином диспетчерского хука WordPress REST API (rest_pre_dispatch) без адекватной проверки подлинности. Уязвимости присвоен идентификатор CVE‑2025‑8723, и она исправлена в версии 1.5.7.
RCE в плагине WordPress — один из самых опасных классов уязвимостей: он позволяет выполнять произвольные команды на сервере, полностью захватывать сайт, использовать бэкдоры, осуществлять кражу данных, вносить данные в черный список за спам/вредоносное ПО и переходить на другие сайты в среде хостинга.
Если вы не можете немедленно обновиться до версии 1.5.7, внедрите виртуальные исправления (правила WAF) и контроль доступа для блокировки попыток эксплуатации. При подозрении на взлом следуйте контрольному списку реагирования на инциденты, приведённому ниже.
Что пошло не так (техническая информация)
- Плагин регистрирует логику, которая выполняется через предварительный хук WordPress REST API.
rest_pre_dispatch. Этот хук запускается на ранней стадии обработки REST-запроса и может использоваться для обхода обычной маршрутизации REST. - В уязвимых версиях логика, связанная с этим хуком, обрабатывала неаутентифицированный ввод и достигала путей кода, которые позволяли выполнить предоставленную злоумышленником полезную нагрузку или включить небезопасный контент, что фактически делало возможным RCE.
- Основная причина — отсутствие проверки аутентификации/авторизации в сочетании с небезопасной обработкой управляемого пользователем ввода в пути кода, который достигает контекста выполнения на сервере.
Потому что rest_pre_dispatch вызывается до применения стандартной аутентификации REST, поэтому отсутствие проверки разрешения запроса приводит к неаутентифицированному доступу к привилегированным операциям. Эксплойт может быть активирован исключительно через HTTP-запрос к конечной точке(ам) REST API, к которой подключается плагин.
Влияние
- Возможна полная компрометация сайта (RCE → бэкдор → создание учетной записи администратора → кража данных).
- Доступ на уровне сервера, если процесс PHP имеет опасные разрешения или существуют уязвимости локального повышения привилегий.
- Эксфильтрация данных (дампы баз данных), порча контента, распространение спама, майнинг криптовалюты, горизонтальное перемещение в средах многосайтового хостинга или включение в ботнеты.
- Индексация и внесение в черные списки поисковыми системами и службами безопасности — серьезный удар по SEO и репутации.
Учитывая неаутентифицированный характер и высокую серьезность (CVSS 10), злоумышленники, скорее всего, будут автоматизировать попытки эксплуатации; требуются быстрые действия.
Немедленные действия (что делать прямо сейчас)
- Немедленно обновите плагин до версии 1.5.7 или более поздней. (рекомендуемое и самое простое решение).
- Из панели администратора WP: Плагины → Установленные плагины → Обновить Cloudflare Image Resizing.
- Или через WP-CLI:
список плагинов wp --format=table
обновление плагина wp cf-image-resizing
- Если вы не можете обновиться немедленно, примените виртуальные исправления / правила WAF (см. руководство WAF ниже). Заблокируйте любой неаутентифицированный доступ к конечным точкам REST плагина и любым подозрительным полезным нагрузкам.
- Если вы подозреваете эксплуатацию или не можете подтвердить статус исправления:
- Переведите сайт в режим обслуживания (или временно заблокируйте весь внешний трафик).
- Создайте полную резервную копию файлов и базы данных и сохраните журналы для судебно-медицинского анализа.
- Выполните ротацию всех паролей/SSH-ключей администратора и хостинга WordPress.
- Поиск индикаторов компрометации (IoC) — см. раздел «Обнаружение».
- Временно отключите плагин если невозможно применить своевременное обновление или надежный виртуальный патч:
плагин wp деактивирует cf-image-resizing
Имейте в виду, что это может повлиять на функциональность изображения, если вы используете Cloudflare Image Resizing.
- Включить или усилить мониторинг журналов доступа, журналов ошибок и оповещений брандмауэра веб-приложений.
WAF / руководство по виртуальному исправлению
Если немедленное исправление невозможно (например, из-за тестирования совместимости или планового обслуживания), используйте виртуальное исправление для блокировки попыток эксплуатации уязвимости. WP-Firewall рекомендует следующий многоуровневый подход:
- Блокировать запросы REST API, нацеленные на пространство имен плагина или конечные точки.
- Блокировать подозрительные шаблоны полезной нагрузки, обычно используемые для RCE (PHP в кодировке base64, оболочки PHP, «system(», «exec(», обратные кавычки, сериализованный PHP с неожиданными именами классов).
- Требовать аутентификацию для конфиденциальных путей REST с использованием ограничений на уровне сервера.
Ниже приведены примеры правил и фрагментов, которые вы можете добавить в WAF (или в nginx/Apache) в качестве временных мер. Они консервативны и предназначены для экстренных случаев — протестируйте их перед широким внедрением.
Примечание: замените вхождения /wp-json/ с фактическим пространством имен, которое использует плагин, если оно известно (слаг плагина и типичные шаблоны маршрутов являются полезными отправными точками: например, /wp-json/cf-image-resizing/).
Общее правило ModSecurity (пример)
Это правило ModSecurity блокирует запросы к конечным точкам REST, содержащие типичные символы RCE-кода или подозрительные параметры. Адаптируйте к своей среде и протестируйте.
SecRule REQUEST_URI "@beginsWith /wp-json/cf-image-resizing" "id:100001,phase:1,deny,log,status:403,msg:'Заблокирован подозрительный REST-запрос к cf-image-resizing',severity:2" SecRule REQUEST_URI "@beginsWith /wp-json" "chain,phase:1,deny,log,status:403,msg:'Блокировать неаутентифицированный POST-запрос к REST API с подозрительным телом'" SecRule REQUEST_METHOD "POST" SecRule REQUEST_HEADERS:Content-Type "application/json" "chain" SecRule ARGS_NAMES|REQUEST_BODY "(?:system\(|exec\(|passthru\(|popen\(|`.*`|base64_decode\(|php://input|gzinflate\()" "t:none,deny,log,status:403,msg:'Возможная полезная нагрузка RCE в запросе REST'"
Фрагмент кода Nginx — ограничение конечной точки REST плагина
Вы можете полностью запретить внешний доступ к REST-пути плагина или ограничить его аутентифицированными запросами или определенными IP-адресами.
Блокировать доступ к REST-пути плагина (просто и безопасно):
местоположение ~* ^/wp-json/cf-image-resizing/ { return 403; }
Если вам нужен выборочный доступ (разрешить Cloudflare или доверенные IP-адреса):
location ~* ^/wp-json/cf-image-resizing/ { allow 203.0.113.0/24; allow 198.51.100.17; # заменить на доверенные IP-адреса deny all; }
Apache (.htaccess) — запретить доступ к REST-пути плагина
Поместите в корень WordPress:
Требовать все отклоненные
Фильтр уровня WordPress (временный PHP)
В качестве экстренной меры для администраторов, которым удобно редактировать темы или mu-плагины, добавьте встроенный mu-плагин, который запрещает неавторизованный доступ к конечным точкам REST в пространстве имён плагина. Создайте файл wp-content/mu-plugins/block-cf-rest.php:
<?php
add_filter('rest_authentication_errors', function($result) {
// If authentication already failed, return it.
if ( ! empty($result) ) {
return $result;
}
$request = rest_get_server()->get_request();
$route = $request->get_route();
if (strpos($route, '/cf-image-resizing/') === 0) {
return new WP_Error('rest_forbidden', 'Access to this endpoint is temporarily disabled', array('status' => 403));
}
return $result;
}, 90);
Это блокирует неаутентифицированные REST-запросы к пространству имён плагинов. Удалите после обновления плагина и подтверждения его безопасности.
Обнаружение: индикаторы компрометации (IoC) и шаблоны журналов
Если уязвимость была использована, к общим признакам относятся:
- Необычные запросы REST API к пространству имен плагинов:
- Запросы к /wp-json/cf-image-resizing/* с подозрительных IP-адресов или со многих различных IP-адресов за короткий промежуток времени.
- Запросы POST с телом JSON, содержащим закодированную или запутанную полезную нагрузку.
- Новые или измененные файлы PHP в доступных для записи каталогах (uploads, wp-content/uploads, wp-includes, plugins):
- Файлы с именами, напоминающими системные журналы, медиа-файлы, но содержащие PHP-код (например,
изображение.php,большой палец.jpg.php,._thumbs.php).
- Файлы с именами, напоминающими системные журналы, медиа-файлы, но содержащие PHP-код (например,
- Созданы неавторизованные администраторы:
- Найдите недавно созданных пользователей с правами администратора.
- Неожиданные запланированные задачи (задания cron):
- Новые записи cron, запускающие PHP-код.
- Исходящие сетевые соединения с веб-сервера на подозрительные IP-адреса (командно-контрольные), особенно на портах, отличных от HTTP.
- Команды оболочки, выполненные в журналах (например, пики
wget,завитокили неожиданный вывод команды в журналах ошибок). - Подозрительные изменения в файлах .htaccess или index в каталогах плагинов/тем.
- Расширенные журналы ошибок, показывающие eval(), include() с неожиданными путями.
Предлагаемые запросы журнала:
- Журналы доступа Apache/Nginx (grep на предмет пути REST и подозрительных полезных данных):
# найти обращения REST к пути плагина за последние 7 дней zgrep "/wp-json/cf-image-resizing" /var/log/nginx/access.log* | tail -n 200 - Поиск строк base64 или оболочек php в теле запроса:
zgrep -E "base64_decode|gzinflate|php://input|system\(|exec\(|passthru\(" /var/log/nginx/access.log* - Проверьте наличие измененных файлов в загрузках за последние 14 дней:
найти wp-content/uploads -type f -mtime -14 -print - Список недавно измененных файлов на сайте:
найти . -тип f -mtime -14 -не -путь "./.git/*" -печать - WP-CLI: список пользователей, созданных за последние X дней:
список пользователей wp --role=administrator --fields=ID,user_registered,user_email,user_login --format=csv | awk -F, '$2 > "2025-08-01" {print}' - Поиск сигнатур PHP webshell (таких строк, как
оценка(,утверждать(,base64_decode() в файлах сайта:grep -R --exclude-dir=vendor -nE "eval\(|assert\(|base64_decode\(" .
Контрольный список для судебной экспертизы (если вы подозреваете компрометацию)
- Сохраните доказательства:
- Снимок диска сервера и резервная копия базы данных (защищенная от записи копия).
- Сохраняйте полные журналы веб-сервера и журналы PHP-FPM/fastcgi.
- Изолируйте сайт (переведите его в автономный режим или заблокируйте трафик с ненадежных IP-адресов).
- Определите масштаб компромисса:
- Какие файлы/пользователи были изменены; хронология изменений.
- Удалить бэкдоры и вредоносные файлы:
- Вручную проверьте подозрительные файлы; удалите веб-оболочки и неизвестные файлы PHP.
- Повернуть учетные данные:
- Измените пароли администратора WordPress, учетные данные базы данных, ключи SSH, токены API (включая Cloudflare/другие службы).
- Сканировать и очистить:
- Используйте несколько инструментов сканирования и ручную проверку.
- При необходимости восстановите данные из заведомо исправной резервной копии.
- Наклейте пластырь, закрепите место и внимательно наблюдайте за появлением рецидивов.
- Если утечка касается конфиденциальных данных или данных клиентов, следуйте установленным законом и нормативным процедурам раскрытия информации.
Если у вас нет собственных специалистов по реагированию на инциденты, обратитесь к профессиональному специалисту по реагированию на инциденты. Время имеет решающее значение: злоумышленники стремятся как можно быстрее повторно заразить сайты.
Рекомендации по укреплению (после обновления)
Помимо обновления плагина, примените меры по защите вашего сайта WordPress, чтобы уменьшить поверхность атаки:
- Регулярно обновляйте ядро WordPress, темы и плагины. Включите автоматическую установку небольших обновлений и продумайте контролируемые графики для крупных обновлений.
- Ограничьте установку доверенных и активно поддерживаемых плагинов. Удалите неиспользуемые плагины и темы.
- Ограничить разрешения файловой системы:
- Файлы WordPress обычно должны принадлежать пользователю, который не может выполнять произвольные команды. Избегайте предоставления широких прав на запись пользователю веб-сервера.
- Ограничить доступ к REST API:
- Блокируйте доступ к конечным точкам REST, которые не должны быть общедоступными, используя фильтры или правила на стороне сервера.
- Реализуйте политику минимальных привилегий для пользователей WordPress и никогда не используйте учетную запись администратора для выполнения рутинных операций.
- Используйте управляемый WAF с виртуальным исправлением, чтобы блокировать попытки эксплуатации вновь обнаруженных уязвимостей.
- Контролируйте журналы и оповещения — поддерживайте возможность обнаружения инцидентов.
- Регулярно создавайте резервные копии кода и базы данных, а также тестируйте процедуры восстановления.
Как WP-Firewall смягчит и защитит ваш сайт WordPress
В WP-Firewall мы применяем многоуровневый подход для обеспечения безопасности сайтов:
- Быстрое виртуальное исправление: при обнаружении подобной уязвимости мы развертываем целевые сигнатуры WAF, нацеленные на конкретные шаблоны атак и конечные точки REST, связанные с проблемой (превентивно блокируя попытки эксплуатации).
- Правила, учитывающие контекст: наш WAF проверяет вызовы REST API и блокирует неаутентифицированные запросы, пытающиеся получить доступ к пространствам имен, специфичным для плагина, или отправляющие подозрительные полезные данные.
- Управляемое сканирование и мониторинг: запланированное сканирование на предмет изменений файлов, наличия веб-оболочек и аномальной активности администратора.
- Руководство по реагированию на инциденты: при подозрении на компрометацию мы обеспечиваем пошаговое устранение неполадок и помогаем внедрить правила сдерживания.
- Управление автоматическими обновлениями: при необходимости включите автоматические обновления критически важных плагинов, чтобы гарантировать своевременное получение исправлений в вашей среде (вы управляете политикой и окнами тестирования).
Если вам нужна немедленная защита, виртуальное исправление уязвимого плагина — один из самых быстрых и наименее разрушительных способов снизить риск, пока вы планируете и тестируете официальное обновление плагина.
Правила поиска и мониторинга угроз, которые следует добавить сейчас
- Оповещение о доступе к
/wp-jsonконечные точки, содержащие подозрительные подстроки в теле:- base64_decode, eval, gzinflate, php://input,
- Отметьте создание нового пользователя-администратора вне окон внесения изменений.
- Сопоставьте всплески ответов 403/5xx на конечных точках REST — автоматическое сканирование часто показывает закономерность в виде множества быстрых запросов.
- Следите за созданием файла в
wp-контент/загрузкис.phpрасширение или файлы с двойным расширением (например,изображение.jpg.php). - Контролируйте исходящие соединения с веб-сервера на новые внешние IP-адреса и домены.
Пример правила SIEM (псевдо):
Если > 5 запросов POST к /wp-json/cf-image-resizing/ с того же IP в течение 60 секунд И тело запроса содержит base64_decode ИЛИ система(, отметить как возможный эксплойт и заблокировать IP.
Восстановление и действия после инцидента
- Выполните очистку или восстановление из чистой резервной копии, созданной до взлома.
- Замените все скомпрометированные учетные данные (БД, WordPress, панели управления хостингом, ключи API).
- Обновите плагин до версии 1.5.7 или более поздней.
- Жесткое сканирование всей среды (не только файлов сайта): контейнеров, хостовой ОС, заданий cron, бэкдоров базы данных.
- Если есть вероятность раскрытия закрытых ключей, перевыпустите SSL-сертификаты.
- Сообщите об инциденте своему хостинг-провайдеру и всем пострадавшим сторонам в соответствии с нормативными обязательствами.
- Внедрить или усилить мониторинг и меры защиты WAF для выявления попыток повторного заражения.
Пример: команды быстрого обнаружения и проверки
- Проверьте версию плагина:
статус плагина wp cf-image-resizing --field=version - Быстрая деактивация плагина:
плагин wp деактивирует cf-image-resizing - Список файлов, измененных за последние 7 дней:
найти . -тип f -mtime -7 -print - Проверьте наличие веб-оболочек в загрузках:
grep -R --exclude-dir=папка-плагина -nE " - Список пользователей-администраторов:
список пользователей wp --role=administrator --fields=ID,user_login,user_email,user_registered
Часто задаваемые вопросы (FAQ)
В: Я обновился до версии 1.5.7 — это безопасно?
A: Да — обновление до версии 1.5.7 устраняет уязвимость. Однако, если ваша уязвимость ранее была эксплуатирована, само по себе обновление не устранит бэкдоры и не отменит изменения, внесённые злоумышленником. Выполните проверки на наличие индикаторов компрометации (IoC) и выполните приведенный выше контрольный список для криминалистической экспертизы.
В: Что делать, если я не могу выполнить обновление (зависимость от пользовательского кода)?
A: Примените виртуальные исправления (правила WAF) и/или ограничьте доступ к конечным точкам REST плагина через конфигурацию на уровне сервера. Рассмотрите возможность временного отключения плагина, если функции изменения размера изображений не критичны, пока вы не сможете безопасно протестировать и обновить его.
В: Нарушат ли правила WAF законную функциональность образов Cloudflare?
A: Агрессивная блокировка может повлиять на легитимное использование при неправильном применении. Адаптируйте правила так, чтобы блокировать только неаутентифицированные вызовы к специфичным для плагина путям REST и полезным нагрузкам, указывающим на выполнение кода. По возможности, перед блокировкой тестируйте правила в режиме обнаружения.
Заголовок параграфа о регистрации бесплатного плана WP-Firewall
Начните защищать свой сайт за считанные минуты — WP‑Firewall Basic (бесплатно)
Если вы управляете сайтами на WordPress и вам нужен мгновенный уровень защиты, включающий управляемый брандмауэр, неограниченную пропускную способность, настроенный WAF, автоматическое сканирование на вредоносное ПО и устранение 10 самых опасных угроз по версии OWASP, WP-Firewall Basic (бесплатно) обеспечит вам необходимую защиту прямо сейчас. Оформите бесплатный тариф и получите доступ к быстрому виртуальному обновлению и непрерывному мониторингу, чтобы блокировать недавно обнаруженные уязвимости плагинов, такие как CVE-2025-8723, пока вы планируете и тестируете обновления. Узнайте больше и зарегистрируйтесь: https://my.wp-firewall.com/buy/wp-firewall-free-plan/
Заключительные заметки и рекомендуемый контрольный список (можно скопировать)
- Немедленно обновите cf-image-resizing до версии 1.5.7 (или более поздней).
- Если обновление невозможно, примените правила WAF для блокировки /wp-json/cf-image-resizing/ и подозрительных полезных данных.
- Проверьте журналы на наличие обращений к REST API и подозрительных тел запросов.
- Поиск вновь созданных пользователей-администраторов, измененных файлов и заданий cron.
- Создавайте резервные копии и сохраняйте доказательства в случае подозрения о компрометации.
- Меняйте учетные данные и укрепляйте свою среду.
- Рассмотрите возможность включения управляемого WAF/виртуального исправления для проактивной защиты сайтов.
Если вам нужна помощь с внедрением любого из вышеперечисленных правил WAF, проведением экспертных проверок или настройкой непрерывной защиты нескольких сайтов, команда WP-Firewall может помочь с экстренным виртуальным исправлением и руководством по реагированию на инциденты. Оформите подписку на тариф «Базовый» (бесплатный), чтобы получить немедленную защиту и контроль над ситуацией во время устранения неполадок.https://my.wp-firewall.com/buy/wp-firewall-free-plan/)
Берегите себя — проверьте и установите исправление прямо сейчас.
