Un sitio WordPress bajo ataque, CPU disparada, MySQL al 100 %, PHP colapsando… y, al final, el culpable no era ni un plugin “pesado” ni una consulta mal indexada. Era algo mucho más sutil: la forma en que algunos plugins de redirección cachean las coincidencias, especialmente cuando se usan reglas con LIKE o expresiones regulares (regex).
Lo que parece una optimización inocente —guardar en caché el resultado de una redirección— puede convertirse en una vulnerabilidad de denegación de servicio en cualquier WordPress que utilice plugins de redirecciones avanzadas, como Rank Math y otros similares.
El punto de partida es familiar para muchos administradores:
Al profundizar en la investigación, el administrador descubre algo inquietante:
las fuentes de ataque están lanzando combinaciones aleatorias de URLs que chocan con reglas de redirección configuradas con LIKE o regex. Cada una de esas peticiones:
Cuantas más URLs “raras” prueban los bots, más entradas de caché se crean. La tabla crece, las consultas se vuelven más costosas, MySQL se ahoga… y la CPU se dispara.
Cuando el administrador elimina todas las redirecciones basadas en patrones (LIKE/regex) y deja solo redirecciones exactas, la magia ocurre:
El uso de CPU se mantiene constante y bajo, incluso con picos de tráfico.
El CDN sigue ayudando, pero el cuello de botella desaparece porque ya no existe esa combinación explosiva entre ataques y caché de redirección mal diseñada.
La lógica que hay detrás de muchos plugins de redirecciones es más o menos así:
/ruta-cualquiera./old-page → /new-page),Con redirecciones exactas (uno a uno), esto es perfectamente razonable:
si la URL /old-page siempre va a /new-page, tener una caché que recuerde esa decisión ahorra cálculos.
El problema aparece cuando:
Los atacantes no necesitan saber nada de tus reglas de redirección.
Basta con que golpeen:
/random, /random1, /random2,/admin-old, /admin-test, /admin-backup,/login-old, /login-backup, etc.Si alguna de tus reglas con patrones coincide, cada petición genera:
Lo que se ha observado en este tipo de casos es:
No estamos ante una vulnerabilidad “clásica” de seguridad (no hay robo de datos ni ejecución de código), pero sí ante una vulnerabilidad arquitectónica:
el plugin permite que cualquier atacante fuerce un coste de CPU y de base de datos desproporcionado, simplemente probando muchas URLs distintas.
Lo preocupante es que no es un problema de un solo plugin:
es un patrón de diseño que comparten muchos plugins de redirecciones cuando se combinan:
En el caso real analizado, el administrador hizo tres movimientos clave:
TRUNCATE sobre la tabla de caché (por ejemplo, wp_rank_math_redirections_cache en Rank Math) limpió de golpe todas las coincidencias almacenadas.El mensaje de fondo es claro:
las redirecciones exactas son seguras, las basadas en patrones + caché pueden ser una bomba de relojería.
A partir de este caso, se pueden extraer varias pautas prácticas:
/vieja-url → /nueva-url).Los plugins de redirección en WordPress son herramientas útiles y, bien configurados, no representan un peligro. Pero cuando se combinan:
pueden convertirse en un punto débil capaz de tumbar un servidor entero.
La lección es simple y valiosa:
si usas plugins de redirecciones en WordPress, revisa qué tipo de redirecciones tienes activas. Mantenerlas lo más exactas posible, vigilar las tablas de caché y empujar la complejidad hacia el servidor o el CDN puede marcar la diferencia entre un sitio estable… y un servidor ardiendo sin que nadie entienda por qué.
¿Por qué las redirecciones con LIKE o regex en WordPress consumen tanta CPU y MySQL?
Porque cada petición obliga al plugin a evaluar patrones complejos sobre las URLs y, si además se cachea cada coincidencia, se añaden filas sin parar a la tabla de caché. Esa tabla crece, las consultas se vuelven más lentas y MySQL empieza a consumir muchos más recursos.
¿Es seguro usar plugins de redirecciones en WordPress para SEO y migraciones de URL?
Sí, siempre que se usen principalmente redirecciones exactas uno a uno y se eviten reglas con comodines o regex salvo en casos muy controlados. El problema no son las redirecciones en sí, sino la combinación de patrones complejos, caché y ataques automatizados.
¿Cómo puedo detectar si la caché de redirecciones está afectando a mi servidor WordPress?
Algunas señales claras son:
¿Dónde es mejor aplicar reglas de redirección avanzadas, en WordPress o en el servidor/CDN?
Para sitios con volumen de tráfico medio o alto, es más recomendable definir las reglas avanzadas en NGINX/Apache o en el CDN. Estas capas están optimizadas para manejar redirecciones masivas sin impactar en la base de datos ni en el rendimiento de WordPress.
Referencias: Reddit y martech.zone
