
Complemento temporal de WordPress que requiere autenticación para el endpoint de la Core REST Batch API, con el fin de mitigar la cadena de vulnerabilidades wp2shell (CVE-2026-63030). Incluye un registro de auditoría opcional y una página de configuración.
Una mitigación temporal y enfocada para el acceso no autenticado al endpoint de la API REST Batch de WordPress Core.
SkelerSecurity Core Security Plugin exige autenticación antes de que WordPress procese solicitudes a la ruta de la API REST Batch de Core:
/wp-json/batch/v1/?rest_route=/batch/v1Está diseñado como un control de defensa en profundidad de alcance limitado para la cadena de vulnerabilidades de la API REST Batch de WordPress conocida comúnmente como wp2shell. El plugin usa el filtro rest_pre_dispatch de WordPress para rechazar solicitudes batch anónimas con HTTP 401 Unauthorized, mientras preserva el acceso para usuarios autenticados de WordPress y de la API REST.
[!IMPORTANT] Este plugin es una mitigación temporal, no un reemplazo de las actualizaciones de WordPress Core. Aplica la última versión de seguridad de WordPress inmediatamente y verifica que la actualización se completó correctamente.
Informes públicos describen una cadena de vulnerabilidades crítica en WordPress Core que involucra confusión de rutas en la API REST Batch (CVE-2026-63030) y un problema relacionado de inyección SQL (CVE-2026-60137). El endpoint afectado puede alcanzarse tanto mediante enlaces permanentes limpios como mediante el formato de enrutado REST de cadena de consulta.
Las versiones de Core afectadas reportadas incluyen:
| Rama | Versiones afectadas | Versión corregida |
|---|---|---|
| WordPress 6.9 | 6.9.0–6.9.4 | 6.9.5 |
| WordPress 7.0 | 7.0.0–7.0.1 | 7.0.2 |
La rama WordPress 6.8 también recibió refuerzos relacionados en 6.8.6. Usa la versión de WordPress compatible más reciente disponible para tu entorno, en lugar de tratar los rangos de versiones como una razón para retrasar la actualización.
/batch/v1./wp-json/batch/v1 como ?rest_route=/batch/v1, porque WordPress resuelve ambas a la misma ruta REST.401 para solicitudes anónimas.rest_pre_dispatch prioridad -1000).Para una cobertura temporal más sólida, combina este plugin con una regla de WAF o proxy inverso que bloquee solicitudes anónimas a ambas formas de endpoint enumeradas anteriormente.
Copia el directorio skelersecurity-core-security en:
wp-content/plugins/
Activa el plugin en Plugins → Plugins instalados.
Revisa el estado del plugin en Herramientas → SkelerSecurity Core.
wp plugin activate skelersecurity-core-security
El plugin se habilita inmediatamente después de la activación. Visita Herramientas → SkelerSecurity Core para gestionar:
| Ajuste | Predeterminado | Descripción |
|---|---|---|
| Protección de la API Batch | Habilitada | Exige autenticación para la ruta de la API REST Batch de Core. |
El registro de auditoría opcional almacena únicamente:
/batch/v1)Intencionalmente no registra direcciones IP, cookies, cabeceras de autorización, cuerpos de solicitud, nombres de usuario ni otros datos sensibles de la solicitud.
| Tipo de solicitud | Resultado esperado mientras la protección está habilitada |
|---|
Una respuesta anónima bloqueada utiliza el código de error:
rest_batch_authentication_required
/wp-json/batch/v1rest_route=/batch/v1La API Batch puede ser utilizada por flujos de trabajo de administración de WordPress, plugins, temas, clientes móviles o integraciones externas. Las solicitudes autenticadas siguen permitidas, pero prueba las funciones críticas para el negocio después de habilitar el plugin.
Los impactos potenciales pueden incluir integraciones que envían intencionalmente solicitudes no autenticadas a la API Batch de Core. Si ese comportamiento es necesario, evalúa el riesgo cuidadosamente e implementa una integración correctamente autenticada en lugar de exponer el endpoint de manera amplia.
Una mitigación a nivel de red debe cubrir ambos estilos de enrutado. Bloquear solo /wp-json/batch/v1 es insuficiente porque WordPress también puede enrutar la solicitud mediante el parámetro de consulta rest_route.
Lógica de regla recomendada:
/wp-json/batch/v1 (permitir barra final opcional).rest_route=/batch/v1.Prueba la regla en tu entorno. Este plugin es útil si no se puede desplegar un cambio de WAF inmediatamente, pero no debe impedir que parchees WordPress Core.
Por favor, no reportes vulnerabilidades de seguridad a través de incidencias públicas de GitHub.
Reporta vulnerabilidades sospechosas de forma privada a tu contacto de seguridad o al propietario del repositorio. Incluye una descripción clara, la versión afectada, una prueba de concepto reproducible y una evaluación de impacto. No incluyas credenciales, datos personales ni cargas destructivas.
Este proyecto está licenciado bajo la GNU General Public License v2.0 o posterior.
| Registro de auditoría mínimo | Habilitado | Registra cuándo se bloquea una solicitud Batch anónima. |
| Entradas a conservar | 50 | Límite de retención para las entradas de auditoría locales; configurable de 10 a 200. |
Solicitud anónima a /wp-json/batch/v1 | Bloqueada con HTTP 401 |
Solicitud anónima a /?rest_route=/batch/v1 | Bloqueada con HTTP 401 |
Solicitud autenticada de WordPress/REST a /batch/v1 | Permitida para el procesamiento normal de autorización de WordPress |
| Solicitud a otra ruta REST | No modificada por este plugin |