
Временный плагин WordPress, требующий аутентификации для конечной точки Core REST Batch API, чтобы смягчить цепочку уязвимостей wp2shell (CVE-2026-63030). Включает необязательный журнал аудита и страницу настроек.
Целенаправленная временная мера защиты от неаутентифицированного доступа к конечной точке REST Batch API ядра WordPress.
SkelerSecurity Core Security Plugin требует аутентификации до того, как WordPress обработает запросы к маршруту Core REST Batch API:
/wp-json/batch/v1/?rest_route=/batch/v1Он спроектирован как узконаправленный механизм эшелонированной защиты от цепочки уязвимостей REST Batch API в WordPress, которую обычно называют wp2shell. Плагин использует фильтр WordPress rest_pre_dispatch, чтобы отклонять анонимные пакетные запросы с HTTP 401 Unauthorized, сохраняя при этом доступ для аутентифицированных пользователей WordPress и REST API.
[!IMPORTANT] Этот плагин — временная мера, а не замена обновлениям ядра WordPress. Немедленно установите последний выпуск безопасности WordPress и убедитесь, что обновление завершилось успешно.
В открытых отчётах описана критическая цепочка уязвимостей ядра WordPress, включающая путаницу маршрутов REST Batch API (CVE-2026-63030) и связанную проблему SQL-инъекции (CVE-2026-60137). До затронутой конечной точки можно обратиться как через «человеко-понятные» постоянные ссылки, так и через REST-маршрутизацию со строкой запроса.
Сообщается о следующих затронутых выпусках ядра:
| Ветвь | Затронутые выпуски | Исправленный выпуск |
|---|---|---|
| WordPress 6.9 | 6.9.0–6.9.4 | 6.9.5 |
| WordPress 7.0 | 7.0.0–7.0.1 | 7.0.2 |
Ветвь WordPress 6.8 также получила связанное усиление защиты в 6.8.6. Используйте новейший доступный поддерживаемый выпуск WordPress для вашего окружения, а не рассматривайте диапазоны версий как повод откладывать обновление.
/batch/v1./wp-json/batch/v1 и ?rest_route=/batch/v1, поскольку WordPress приводит оба к одному и тому же REST-маршруту.401 для анонимных запросов.-1000 для rest_pre_dispatch).Для максимально надёжного временного охвата сочетайте этот плагин с правилом WAF или обратного прокси-сервера, которое блокирует анонимные запросы к обеим формам конечной точки, перечисленным выше.
Скопируйте каталог skelersecurity-core-security в:
wp-content/plugins/
Активируйте плагин в разделе Плагины → Установленные плагины.
Проверьте статус плагина в разделе Инструменты → SkelerSecurity Core.
wp plugin activate skelersecurity-core-security
Плагин включается сразу после активации. Откройте Инструменты → SkelerSecurity Core, чтобы управлять настройками:
| Параметр | По умолчанию | Описание |
|---|---|---|
| Защита Batch API | Включено | Требует аутентификации для маршрута Core REST Batch API. |
| Минимальный журнал аудита | Включено | Фиксирует блокировку анонимного запроса Batch API. |
| Хранить записей | 50 | Предел хранения локальных записей аудита; настраивается от 10 до 200. |
Необязательный журнал аудита хранит только:
/batch/v1)Он намеренно не записывает IP-адреса, cookie-файлы, заголовки авторизации, тела запросов, имена пользователей и другие чувствительные данные запросов.
| Тип запроса | Ожидаемый результат при включённой защите |
|---|---|
Анонимный запрос к /wp-json/batch/v1 | Блокируется с HTTP 401 |
Анонимный запрос к /?rest_route=/batch/v1 | Блокируется с HTTP 401 |
Аутентифицированный запрос WordPress/REST к /batch/v1 | Разрешается для обычной обработки авторизации WordPress |
| Запрос к другому REST-маршруту | Не изменяется этим плагином |
Ответ при блокировке анонимного запроса использует код ошибки:
rest_batch_authentication_required
/wp-json/batch/v1rest_route=/batch/v1Batch API может использоваться рабочими процессами администрирования WordPress, плагинами, темами, мобильными клиентами или внешними интеграциями. Аутентифицированные запросы остаются разрешёнными, но после включения плагина протестируйте критически важные для бизнеса функции.
К возможным последствиям относятся интеграции, которые намеренно отправляют неаутентифицированные запросы к Core Batch API. Если такое поведение необходимо, тщательно оцените риски и реализуйте корректно аутентифицированную интеграцию, а не открывайте конечную точку для широкого доступа.
Мера защиты на сетевом уровне должна охватывать оба способа маршрутизации. Блокировки только /wp-json/batch/v1 недостаточно, поскольку WordPress может также направить запрос через параметр строки запроса rest_route.
Рекомендуемая логика правила: