El endpoint /wp-cron.php es el archivo que ejecuta el sistema de tareas programadas (WP-Cron) de WordPress. No es una vulnerabilidad por sí mismo, pero si está mal configurado o expuesto a abuso, puede afectar al rendimiento del sitio o utilizarse en ataques de denegación de servicio (DoS).
¿Qué es wp-cron.php?
WordPress no utiliza el cron del sistema operativo por defecto. En su lugar, emplea WP-Cron, que ejecuta tareas cuando un visitante accede al sitio.
El archivo responsable es:
https://ejemplo.com/wp-cron.php
Este archivo puede ejecutar tareas como:
- Publicar entradas programadas.
- Enviar correos electrónicos.
- Buscar actualizaciones de WordPress.
- Actualizar plugins y temas.
- Ejecutar tareas de plugins (copias de seguridad, caché, SEO, WooCommerce, etc.).
- Eliminar comentarios de spam.
- Limpiar datos temporales.
¿Por qué puede representar un riesgo?
El archivo está diseñado para ser accesible públicamente. Sin embargo, un atacante puede enviar un gran número de solicitudes a: https://ejemplo.com/wp-cron.php.
Si cada petición provoca la ejecución de tareas programadas, el servidor puede consumir una cantidad importante de CPU, memoria y conexiones, especialmente en sitios con mucho tráfico o con plugins que programan muchas tareas.
Riesgos asociados
- Consumo excesivo de CPU.
- Incremento del uso de memoria.
- Lentitud del sitio.
- Ataques de denegación de servicio (DoS) por saturación de tareas.
- Sobrecarga de la base de datos.
- Posibles bloqueos del servidor si existen tareas pesadas.
El riesgo aumenta cuando:
- Hay muchos visitantes.
- Existen numerosos plugins con tareas programadas.
- El hosting tiene recursos limitados.
¿Cómo comprobar si está accesible?
Accede a: https://ejemplo.com/wp-cron.php.
Normalmente obtendrás una página en blanco o una respuesta HTTP 200, lo que indica que el archivo está disponible.
¿Cómo mitigar el riesgo?
Añade esta línea en wp-config.php:
Limitar el acceso
Si solo utilizas un cron del sistema, puedes restringir el acceso a wp-cron.php mediante reglas del servidor para evitar peticiones innecesarias desde Internet. Debes hacerlo con cuidado para no impedir que tu propio cron funcione.
Usar un firewall (WAF)
Un firewall de aplicaciones web puede detectar y limitar peticiones repetitivas a wp-cron.php, reduciendo el riesgo de abuso.