
Временный плагин 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/v1)Он намеренно не записывает IP-адреса, cookie-файлы, заголовки авторизации, тела запросов, имена пользователей и другие чувствительные данные запросов.
| Тип запроса | Ожидаемый результат при включённой защите |
|---|
Ответ при блокировке анонимного запроса использует код ошибки:
rest_batch_authentication_required
/wp-json/batch/v1rest_route=/batch/v1Batch API может использоваться рабочими процессами администрирования WordPress, плагинами, темами, мобильными клиентами или внешними интеграциями. Аутентифицированные запросы остаются разрешёнными, но после включения плагина протестируйте критически важные для бизнеса функции.
К возможным последствиям относятся интеграции, которые намеренно отправляют неаутентифицированные запросы к Core Batch API. Если такое поведение необходимо, тщательно оцените риски и реализуйте корректно аутентифицированную интеграцию, а не открывайте конечную точку для широкого доступа.
Мера защиты на сетевом уровне должна охватывать оба способа маршрутизации. Блокировки только /wp-json/batch/v1 недостаточно, поскольку WordPress может также направить запрос через параметр строки запроса rest_route.
Рекомендуемая логика правила:
/wp-json/batch/v1 (допускается необязательный завершающий слеш).rest_route=/batch/v1.Протестируйте правило в вашем окружении. Этот плагин полезен, если изменение WAF невозможно развернуть немедленно, но он не должен мешать установке исправлений ядра WordPress.
Пожалуйста, не сообщайте об уязвимостях через публичные issue на GitHub.
Сообщайте о подозреваемых уязвимостях в частном порядке своему контактному лицу по безопасности или владельцу репозитория. Укажите чёткое описание, затронутую версию, воспроизводимое доказательство концепции и оценку влияния. Не включайте учётные данные, личные данные или разрушительные полезные нагрузки.
Этот проект распространяется под лицензией GNU General Public License v2.0 или более поздней версии.
| Включено |
| Фиксирует блокировку анонимного запроса Batch API. |
| Хранить записей | 50 | Предел хранения локальных записей аудита; настраивается от 10 до 200. |
Анонимный запрос к /wp-json/batch/v1 | Блокируется с HTTP 401 |
Анонимный запрос к /?rest_route=/batch/v1 | Блокируется с HTTP 401 |
Аутентифицированный запрос WordPress/REST к /batch/v1 | Разрешается для обычной обработки авторизации WordPress |
| Запрос к другому REST-маршруту | Не изменяется этим плагином |